Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   281 / 864
(#) (Felhasználó 120038) válasza (Felhasználó 120038) hozzászólására (») Okt 19, 2016 /
 
Amit küldél linket abban az encodernek 5 pin-je van. Leírás nincs róla?
(#) vizor válasza (Felhasználó 120038) hozzászólására (») Okt 19, 2016 /
 
Az 5 pin-es rotary-kban mindig van egy nyomógomb. Maga a tekerő egy mikrokapcsoló lenyomható gombja. A három sorban lévő láb a rotary, a másik oldalon a két láb a mikrokapcsoló, az egy-egy szélső láb a fémház. Alps EC11, a kereső hozza az adatlapot.
(#) wifi196 válasza vizor hozzászólására (») Okt 19, 2016 /
 
Igen, így van. A másik két pin a nyomógombé, azt már le is próbáltam külön működik szépen. Igazából ez az egy oka, hogy ezzel szórakozom és nem potmétert veszek, mert szükségem van rá, hogy a tengelyt lenyomva legyen egy nyomógomb!
A hozzászólás módosítva: Okt 19, 2016
(#) benjami válasza wifi196 hozzászólására (») Okt 19, 2016 /
 
Agent_Z működő mintaprogramjában a 3, 4 lábakra a kötve az enkóder, a te általad beírt verzióban meg a 2, 3 lábakra. Biztos a bekötésnek megfelelő a programod?
(#) vizor válasza wifi196 hozzászólására (») Okt 19, 2016 /
 
Többször felmerült bennem, hogy egyszerűen nem azt a bitszekvenciát adja vissza a rotary, mint amit vár a program. Vagy nem olyan bitekkel kezdődik mint amit vár és akkor félremegy. Több olyan rotary-m is van ami másféle sorrendben adja vissza ezeket a jeleket és a programot módosítani kell. Néha elég egy egyszerű "polaritáscsere" az AB lábakon, de néha át kell írni még a library-ban is a bittérképeket.

Az egyetlen ami nem derül ki első ránézésre, hogy te milyen library-t használsz a rotary-hoz. Aztán megnéztem a MIDI lib-et és ott saját rotary kezelés van. Tehát írhattok tesztprogramot amilyet akartok, azon úgyis jó lesz de nem biztos, hogy ugyanúgy kezeli a jelek sorrendjét a MIDI-s csomag is. Megnéztem a rotary adatlapjában a jelsorrendet, ami ugyanolyannak néz ki, mint az Instructables-en lévő cikkben. Benne van még a pakliban az Agent_Z féle dolog, hogy a negatív számokat a program egyedien kezeli le és ott is elcsúszhat a dolog a rotary esetleges eltérő bitszekvenciájával.
(#) (Felhasználó 120038) válasza vizor hozzászólására (») Okt 19, 2016 /
 
Sajnos kezd ez kicsit sok lenni nekem, de olyanra is kell(het) gondolni, hogy a midi refresht()-t egy interruptos függvényből kellene meghívni.

Nem úgy kell ezt bekötni, hogy a 'gomb' lábait egy interruptra használható lábra kötni, a maradék kettőt pedig nem?
A hozzászólás módosítva: Okt 19, 2016
(#) vizor válasza (Felhasználó 120038) hozzászólására (») Okt 19, 2016 /
 
Mit értesz maradék kettő alatt? Két független áramkör van a rotary-kban. 3 gomb a rotary A-GND-B és egy sima mezei nyomógomb. A kettő egymással nincs összekötve.

Van 3 különböző rotary-m, különböző forrásokból. Mind a 3 működik a tesztprogrammal ami csak a magas-alacsony szinteket figyeli. Viszont az olyan programokban már nem, ami "bittérkép" módban működik, az egyik semmit se csinál, a másik minden tizedik forgatásra működik, a harmadik meg jó. Nem minden rotary-t úgy gyártanak le, mint az elvi rajzokon.

A bitszekvencia alatt meg ezt értsd, ezek a legegyszerűbb és elméleti példák (CW: clockwise: óramutatóval egyező irány, CCW:counter clockwise: óramutatóval ellenkező irány):

Egyik library által figyelt sorrend:
CW : 0101
CCW: 1010

Másik library által figyelt sorrend:
CW : 1010
CCW: 0101

Remélem érzed, hogy hol csúszik el a dolog. De vannak library-k amik még bonyolultabb szekvenciákat figyelnek, még több bittel, fél-lépés, egész-lépés, start, begin, next, final, ezeknél végképp nem mindegy milyen a sorrend.
(#) (Felhasználó 120038) válasza vizor hozzászólására (») Okt 19, 2016 /
 
Épp ehhez hasonlót akartam most írni:

Még az jutott eszembe, hátha lehet ezt az encodert jumperolni, hogy Big Edian, vagy Little edian adatsort lökjön ki.

Ezt még elképzelhetőnek tartom, hogy minden hardware-hez könnyebb legyen illeszteni, de attól tartok ez nem az lesz.

Viszont akkor azt nem értem, hogy a monitorozáskor miért jók az adatok? Int változó, rendesen kiíródik. Vagy tényleg ez a midi Lib nem ehhez van illesztve.

Arra gondoltam, hogy a nyomógombot kell az interrupt lábra kötni, az a és b-t pedig egy digitális lábra, de nem interruptot támogatóra.

De már több ötletem nincs.
(#) vizor válasza (Felhasználó 120038) hozzászólására (») Okt 19, 2016 /
 
Azért jó monitorozáskor, mert ott simán magas-alacsony változást figyelsz az elvi bekötés alapján. Te döntöd el, mi a balra és a jobbra, nincsenek bitsorozatok. Ugyanez volt a bajom a 3D nyomtatóval, bontottam egy autórádióból rotary-t, bekötöm, nem jó. Szívtam vele sokáig, bontottam egy másikat, az se jó csak máshogy. Szereztem egy harmadikat, az meg jó volt elsőre. A tesztprogrammal meg jó volt az összes. Én gyanakodnék még az általad említett negatív számot egyedien kezelő dologra is ami a MIDI lib-ben van, ott is írják több oldalon keresztül.

A CRC-s kérdésemre nincs ötleted? Jó lenne valami egyszerű számítás is. Mondjuk összeadom, kivonom, xor-olom, mittudomén, csak biztosan egyedi legyen az ellenőrző összeg és a másik eszközön megismételhető legyen.
(#) kapu48 válasza vizor hozzászólására (») Okt 19, 2016 1 /
 
Esetleg ebből meríthetsz ötletet:
Fast CRC library for ARDUINO
(#) vizor válasza kapu48 hozzászólására (») Okt 19, 2016 /
 
Köszi, megnézem. Te milyen módszert alkalmazol ha használsz ilyet? Részletek itt. Azért keresek egyszerűt, hogy bármelyik platformon tudjam alkalmazni. Vagy ahogy az előzményben írtam, lehetséges-e különböző library-kat más platformok között "összeszinkronizálni"?
(#) benjami válasza wifi196 hozzászólására (») Okt 19, 2016 /
 
Kicsit el van szúrva a RotaryEncoder.h -ban a refresh függvény. Egyik irányban tekerve 0-t, másik irányban tekerve 127-et küldött a SendMidi függvénynek. Módosítsd az alábbiak szerint, és 0..127 közötti értékeket fog küldeni (ha a debug.h -ban kiveszed a kommentet, akkor a soros monitoron tesztelheted a működést).
  1. public:
  2.   void refresh(){
  3.     if(validPin){
  4.       static int msgVal = 0;
  5.       value = read();
  6.       difference = (value - oldVal) / pulsesPerStep;
  7.       if(difference > 63) difference = 63;
  8.       if(difference < -63) difference = -63;
  9.       if(difference != 0){
  10.         msgVal += difference * speedMultiply;
  11.         if(msgVal < 0) msgVal = 0;
  12.         if(msgVal > 127) msgVal = 127;
  13.         sendMidi(CC, channel, controller, msgVal);
  14.         oldVal = value;
  15.       }
  16.     }
  17.     else {
  18.       pinMode(13,OUTPUT);
  19.       for(;;){ // forever
  20.         digitalWrite(13, 1); // blink led on 13 @1Hz
  21.         delay(500);
  22.         digitalWrite(13, 0);
  23.         delay(500);
  24.       }
  25.     }
  26.   }
A hozzászólás módosítva: Okt 19, 2016
(#) kapu48 válasza vizor hozzászólására (») Okt 19, 2016 1 / 1
 
Nem szoktam túlbonyolítani:
  1. int crc_8( int bval, int cval ) {
  2.  
  3.     retun ( bval + cval ) & 0xFF;
  4. }
  5.  
  6. vagy:
  7. int crc_8( int bval, int cval ) {
  8.  
  9.     retun ( bval ^ cval ); // Bitwise XOR (^)
  10. }
A hozzászólás módosítva: Okt 19, 2016
(#) vizor válasza kapu48 hozzászólására (») Okt 19, 2016 /
 
Értem, köszi. Valami ilyesmire gondoltam.
(#) wifi196 válasza benjami hozzászólására (») Okt 19, 2016 /
 
Átírtam a RotaryEncoder.h-t és kiszedtem a kommentet a debug.h-ból és ezeket a szépségeket mutatja, bármerre tekerem akkor egy "tekerésre" (amíg nem mutat értéket) ír egy "négyzetet", majd ha még egyet tekerek akkor egy négyzetet és egy "ţ"-t és így tovább... illetve továbbra is csak növeli az értéket!
A hozzászólás módosítva: Okt 19, 2016

def.png
    
(#) (Felhasználó 120038) válasza benjami hozzászólására (») Okt 19, 2016 /
 
Hol volt pontosan a hiba?

Másik kérdésem, hogy melyik oldalról leszedett encoder lib ez?

Nekem is kell egy kijavított verzió, ne szívjak már ennyit vele! Ha feltennéd mindannyiunknak a módosított Lib-et, hálásak lennénk!

  1. sendMidi(CC, channel, controller, msgVal);


Ennyi kellett volna a kódba, hogy ha a korábbi pos értéket átalakítottuk volna a célnak megfelelően? Akkor nem is kellene az encoder lib?
A hozzászólás módosítva: Okt 19, 2016
(#) (Felhasználó 120038) válasza (Felhasználó 120038) hozzászólására (») Okt 19, 2016 /
 
Csak mert kérdeztem korábban, hogy ezt a pos értéket (újabb kódunkban, ahol már ment) hol, milyen módon adjuk át bárminek is. Erre itt ez a refresh().
(#) wifi196 válasza (Felhasználó 120038) hozzászólására (») Okt 19, 2016 /
 
Ezt a lib-et használom!
(#) benjami válasza (Felhasználó 120038) hozzászólására (») Okt 19, 2016 /
 
Csak a fentebb közzétett módosítást csináltam, a forrás pedig a wifi196 által belinkelt oldalon levő MIDI_controller.zip.
wifi196: ezek a kockák olyanok, mint ha a soros port sebessége nem lenne megfelelő. Nekem nincs Atmega8u2-t tartalmazó modulom, csak dedikált USB-soros átalakító chipes, így az abban levő USB-MIDI átalakítót nem tudom kipróbálni. Gyanús, hogy neked az USB-s atmega8u2 dupla programja nem tudja a 9600bit/sec-et. Ha van CH340-es átalakítót tartalmazó modulod, azon próbáld ki inkább DEBUG módban.
A hozzászólás módosítva: Okt 19, 2016
(#) vizor válasza benjami hozzászólására (») Okt 20, 2016 /
 
Vagy próbálgassa végig a saját soros porti ablakának a sebességeit.
(#) jocoka válasza Gabó hozzászólására (») Okt 20, 2016 /
 
Sziasztok Srácok!
Az 1.5.7-esel rendben lefordult a program minden oké.
Köszönöm Gabónak és persze mindenkinek aki segíteni akart.
További szép napot nektek.
Üdv:Józsi
(#) zsolt58 hozzászólása Okt 20, 2016 /
 
Hello.
Mindenhol kerestem arduinohoz az SPI.h konyvtárat/fájlt de sehol sem találtam.
Valaki be tudná linkelni nekem ami használható is?
Üdv.
(#) szucsistvan123 válasza zsolt58 hozzászólására (») Okt 20, 2016 /
 
Szia!
Ezt az arduino könyvtáraim között találtam:
A hozzászólás módosítva: Okt 20, 2016

SPI.rar
    
(#) szucsistvan123 válasza szucsistvan123 hozzászólására (») Okt 20, 2016 /
 
Vagy ITT letölthető.
(#) zsolt58 válasza szucsistvan123 hozzászólására (») Okt 20, 2016 /
 
Köszi.
De ebben is tudnál segiteni?
Vagy valaki?
  1. Arduino: 1.6.5 (Windows 7), Board: "Arduino/Genuino Uno"
  2.  
  3. D:\Program Files (x86)\Arduino\libraries\DigitalToggle\DigitalToggle.cpp: In function 'void digitalToggle(uint8_t)':
  4. D:\Program Files (x86)\Arduino\libraries\DigitalToggle\DigitalToggle.cpp:25:40: error: 'digitalPinToPort' was not declared in this scope
  5.    *portInputRegister(digitalPinToPort(P)) = digitalPinToBitMask(P);
  6.                                         ^
  7. D:\Program Files (x86)\Arduino\libraries\DigitalToggle\DigitalToggle.cpp:25:41: error: 'portInputRegister' was not declared in this scope
  8.    *portInputRegister(digitalPinToPort(P)) = digitalPinToBitMask(P);
  9.                                          ^
  10. D:\Program Files (x86)\Arduino\libraries\DigitalToggle\DigitalToggle.cpp:25:66: error: 'digitalPinToBitMask' was not declared in this scope
  11.    *portInputRegister(digitalPinToPort(P)) = digitalPinToBitMask(P);
  12.                                                                   ^
  13. Multiple libraries were found for "SPI.h"
  14.  
  15.  Used: C:\Users\H.Zsolt\Documents\Arduino\libraries\SPI-master
  16.  
  17.  Not used: D:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI
  18.  
  19.  Not used: C:\Users\H.Zsolt\Documents\Arduino\libraries\SPI
  20.  
  21. Multiple libraries were found for "LiquidCrystal_I2C.h"
  22.  
  23.  Used: D:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C
  24.  
  25.  Not used: C:\Users\H.Zsolt\Documents\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master
  26.  
  27. Hiba a fordítás során.
  28.  
  29.   This report would have more information with
  30.   "Show verbose output during compilation"
  31.   enabled in File > Preferences.
A hozzászólás módosítva: Okt 20, 2016
(#) szucsistvan123 válasza zsolt58 hozzászólására (») Okt 20, 2016 /
 
A progin belül adtad hozzá a .ZIP fájlt a könyvtárakhoz?
(#) nedudgi válasza H2opok hozzászólására (») Okt 21, 2016 /
 
Én raknék hozzá egy fél marék hidegítő kondenzátort, esetleg szénné szűrném a tápot.
(#) wbt válasza H2opok hozzászólására (») Okt 21, 2016 /
 
Ez érdekes jelenség én megnézném szkóppal a kimenő jelet meg a tápot. (bár nekem is volt olyan hibám, hogy amint a szkópot ráraktam, azonnal megszűnt a hiba, így nem tudtam mérni sem). Az arduino tápja rendben van? (belül mérj a modulon, legutóbb olyan hibát találtam egy kapcsolásban, hogy nem kapott rendesen tápot és a RESET felhúzóellenálláson keresztül bejövő +VCC működtette, persze instabilan).
(#) H2opok válasza wbt hozzászólására (») Okt 21, 2016 /
 
A táp egy 2A -es telefon töltő, mini usb csatis. Mindig ezt használtam hozzá, az elején is,mikor még csak vezetékkel volt összekötve.
(#) morgo válasza zsolt58 hozzászólására (») Okt 21, 2016 /
 
Szia!
Szerintem a SPI.h alapból benne van az arduinoban. Nem kell külön a libraryba is berakni.
Következő: »»   281 / 864
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem