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   280 / 864
(#) (Felhasználó 120038) válasza wifi196 hozzászólására (») Okt 18, 2016 /
 
  1. int val;
  2.     int encoder0PinA = 3; //Remélem így van bekötve
  3.     int encoder0PinB = 4;
  4.     int encoder0Pos = 0;
  5.     int encoder0PinALast = LOW;
  6.     int n = LOW;
  7.      
  8.     void setup() {
  9.     pinMode (encoder0PinA,INPUT_PULLUP);
  10.     pinMode (encoder0PinB,INPUT_PULLUP);
  11.     Serial.begin (9600);
  12.     }
  13.      
  14.     void loop() {
  15.     n = digitalRead(encoder0PinA);
  16.      
  17.     if (n != encoder0PinALast) //Van változás, csak akkor fusson ez a rész
  18.        {
  19.            if (n==HIGH) //Fontos az is, hogy ez a láb éppen milyen állapotú!
  20.               {
  21.                    if (digitalRead(encoder0PinB) == LOW)
  22.                      {
  23.                         encoder0Pos--;
  24.                       }
  25.                      else
  26.                      {
  27.                         encoder0Pos++;
  28.                      }
  29.              
  30.                 }
  31.              else  // Azaz az n==LOW
  32.              {
  33.                  if (digitalRead(encoder0PinB) == LOW)
  34.                      {
  35.                         encoder0Pos++;
  36.                       }
  37.                      else
  38.                        {
  39.                         encoder0Pos--;
  40.                        }
  41.              
  42.              } //n==High if lezáró karaktere
  43.  
  44.            Serial.print (encoder0Pos);
  45.            Serial.print ("/");
  46.           encoder0PinALast = n;
  47.         } //Változást vizsgáló if lezáró karaktere
  48.      
  49.     }
(#) (Felhasználó 120038) válasza (Felhasználó 120038) hozzászólására (») Okt 18, 2016 /
 
Ilyesmi lesz a megoldás, persze nem tuti.
(#) (Felhasználó 120038) válasza (Felhasználó 120038) hozzászólására (») Okt 18, 2016 /
 
illetve

encoder0Pos-- és encoder0Pos++ helyett jobb/szebb lenne, ha

encoder0Pos=encoder0Pos-1;
encoder0Pos=encoder0Pos+1;

re cserélnéd ki mindenhol.
(#) wifi196 válasza (Felhasználó 120038) hozzászólására (») Okt 18, 2016 /
 
Sajnos ez se jó, ugyan az a hiba!
(#) (Felhasználó 120038) válasza wifi196 hozzászólására (») Okt 18, 2016 /
 


Lefelé számol megint?
(#) wifi196 válasza (Felhasználó 120038) hozzászólására (») Okt 18, 2016 /
 
Igen, vagyis a képen láthatóakat tudom állíthatni a programban és mód át volt állítva 3Fh/41h-ra ezért számolt lefele, visszaállítottam az alapértékre mely 7Fh/01h és így felfelé számol, de most is bármerre tekerem csak felfelé mozog, ha jobbra, ha ballra tekerem felfelé megy!

Névtelen.png
    
(#) (Felhasználó 120038) válasza wifi196 hozzászólására (») Okt 18, 2016 /
 
a serial monitoron is csak felfelé vagy lefelé változnak az értékek?

Az egész lényege az, hogyha a két láb azonos értéken van, akkor növelni kell az értéket, ha különbözőn, akkor csökkenteni kell. Ezért van sokkal-sokkal rövidebb kód is, de ennek is mennie kellene.
A hozzászólás módosítva: Okt 18, 2016
(#) wifi196 válasza (Felhasználó 120038) hozzászólására (») Okt 18, 2016 /
 
serial monitor ezeket írja:
ezek alapján szépen megy, mert egyik fele növeli másik fele csavarva csökkenti, viszont midi programba sehogy se megy :S

serial.png
    
(#) (Felhasználó 120038) válasza wifi196 hozzászólására (») Okt 18, 2016 /
 
Ok, akkor legalább ez jó.

A MIDI vezérlés hogyan valósul meg pontosan? Azt szeretném tudni, hogy az érték, az szépen változik ahogy kell, de nem megy át a PC felé rendesen nem?
(#) wifi196 válasza (Felhasználó 120038) hozzászólására (») Okt 18, 2016 /
 
Nem teljesen értem mire gondolsz.
Úgy van megoldva jelenleg, hogy az usb chip vezérlője át van írva DualMoco fw-re, ami annyit lesz hogyha össze van kötve egy jamperrel a 4 és az 5-ös pin akkor sorosként észleli a gép és lehet tölteni rá a kódokat, ha pedig nincs jamper rajta akkor midi eszközként észleli a gép!
Innen szedtem!
(#) (Felhasználó 120038) válasza wifi196 hozzászólására (») Okt 18, 2016 /
 
Ezt sajnos én nem értem már, sosem csináltam.

Az a gond, hogy a kód megy, azaz a pos értékek jók, csak valamiért nem úgy dolgozza fel az értékeket, ahogy kellene. Arra gondoltam, hogy valahol levágódnak az előjelek.
(#) wifi196 válasza (Felhasználó 120038) hozzászólására (») Okt 18, 2016 /
 
Van egy usb-midi adapterem, megpróbálom azt direktbe bekötni a tx-re és akkor, ki tudjuk még zárni, hogy nem e az usb fw csinál valami hülyeséget.
Este kipróbálom!
(#) world-s hozzászólása Okt 18, 2016 /
 
Sziasztok!

Egy gyors sos kérdés.
Arduino nano es egy 3v-os több csatornás tuch modul.
Ha az i2c-n nincs más, akkor úgy ahogy a neten latom az i2c-re közvetlenül rátehetem?
Persze a tapja az egységnek a 3v-os labról.

Nem végleges lenne csak gyors teszt hogy a műszörmèn kereszül erzekel e.
Vagy így tönkremrgy, vagy esetleg nem ugyanolyan érzekeny lenne...
Köszi a gyors segítseget.
Zoli
(#) wifi196 válasza wifi196 hozzászólására (») Okt 18, 2016 /
 
Lepróbáltam más midi eszközzel is, de sajnos továbbra sem megy...
(#) (Felhasználó 120038) válasza wifi196 hozzászólására (») Okt 18, 2016 /
 
Sajnálom.

Az nem világos számomra, hogy ezzel a pos értékkel min keresztül/hogyan változtatsz bármit. Van még valami kód ezen felül?
(#) wifi196 válasza (Felhasználó 120038) hozzászólására (») Okt 18, 2016 /
 
Egy programot vezérlek vele, igazából mint egy billentyűzetet használok. Dj szoftvert és ott "virtuális" potmétereket tekergetek/tekergetnék vele.
(#) world-s hozzászólása Okt 18, 2016 /
 
Ilyen szenzort valaki használt már?
MPR121

Egy teszt progit futtato rajta.
A bekötött láb időnként (pár másodpercenként) egy pillanatra érzékel. Pedig nem nyúlok hozzá.

A másik, hogy valaki itt írta, hogy szerinte simán egy műszőr alatt lehet a szenzor. Át fog látni rajta és érzékelni.
Na most ezt nagyon nem teszi.
Még akkor se ha a vezetéket átdugom és a szőr közé teszem.

Lehet valahogy az érzékenységet erősíteni?

Köszi.
Zoli
(#) Kovidivi válasza world-s hozzászólására (») Okt 19, 2016 /
 
AN3893 alapján állítottad be? Ami neked kell egy speciális eset, és ilyenkor máshogy kell kezelni/beállítani az IC-t. Az összes csatorna egybe van kötve? Az adatlap írja a 13. csatorna felhasználását is.
(#) TavIR-AVR válasza world-s hozzászólására (») Okt 19, 2016 /
 
A válto6ó kapacitást érzékeli. Bekapcsoláskoior konfigurálja a nullpontot. Ezt ki kell vàrni. Ez általában 20 sec. Ekkor nem tapogatjuk a holmit. A maszk műszőr statikus toltődése zavarjs össze?
(#) (Felhasználó 120038) válasza wifi196 hozzászólására (») Okt 19, 2016 /
 
FÚ de nagyon be lett ez nézve!

Végig az encoder értékeire koncentráltam csak, de kell ide a midi vezérlésének módja is!!

http://www.instructables.com/id/Custom-Arduino-MIDI-Controller/step...brary/

ott az encoder mód kell neked, abban is a •POS1_NEG127 . Látni fogod, hogy a negatív számokat is pozitívként kéri, csak el van tolva a 0!

Természetesen most is benézhetem, tévedés jogát fenntartom!
A hozzászólás módosítva: Okt 19, 2016
(#) world-s válasza TavIR-AVR hozzászólására (») Okt 19, 2016 /
 
Szinte éreztem itt is lesz trükk.

Akkor sorra.
Ez a pontos panel: Smart Electronics MPR121 Breakout v12 Proximity Capacitive Touch Se... Board

Kovidivi: Nem állítottam semmi, mivel most csak azt akartam tudni padon, hogy jó -e a célnak vagy sem. Nem is nagyon van config benne. Csak volt érzésem hogy itt is lehet ettől több a munka.
Ezt a progit indítottam el, de ez úgy néztem megegyezik az Adafruit demoval.
Progi

A tüskesorból csak azt forrasztottam be amit használok, mert csak próbapadon teszteltem.
+3.3, föld, I2C, 0-ás érzékelő.

Nem volt összekötve semmi semmivel.

TavIR-AVR: A 0-áson volt egy vezeték. Míg az volt úgy emlékszem még pontosabb volt.
Majd befogattam egy alu lemezhez (szerintem már működés közben), majd később egy nagyobb nyák panel egyik szélére forrasztottam.
Itt már pár másodpercenkén ugrott a kiírás, tehát minta elveszett volna a töltés.

A műszőrme darabot is utólag dobtam ár a nyákra, és mikor a vezetékvéget próbáltam már úgy, hogy átszúrom a szőrme hordozón és kidugom a szőrszálak között (bár ez nem lenne szerencsés), akkor is végig ment a cucc.

De akkor ez nem volt szerencsés.

Odáig még nem jutott el, hogy a szőrme megzavarja. Ott egyszerűen semmit nem érzékelt.

Mit érdemes akkor csinálni?
1. Gondolom kéne valamit konfigurálni nem csak így nyersen használni.
2. Ha tesztpadon csinálom akkor előbb állítsam össze a teszt körülményeit és utána nyomjak egy resetet. Majd valahogy győződjek meg, hogy már kalibrálta magát...
3. Lehet valamit össze kéne kötözgélni még?

Tudnátok nekem ebben segíteni?
Nagyon megköszönném minden segítségeteket.

Zoli

Ui: TavIR-AVR Itt még nem futottunk össze csak személyesen eddig..
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 /
 
Idézet az example könyvtárban lévő Encoder_example kódból:

Idézet:

This is an example of the "RotaryEncoder" class of the MIDI_controller library.
Connect the A & B pins of the encoder to 2 interrupt pins (2&3). It's recommended to use 100nF capacitors between the A & B pins and ground.
Connect the common C pin to the ground. Pull-up resistors are not ncessary, since the internal ones will be used.
Map the control change message 0x14 to the right control in your software.

If you are using a jog wheel use JOG, if you are using a normal encoder, for normal controls, like scrolling etc. use NORMAL_ENCODER.
If you have strange results in your software, try another mode: ADD_64, SIGN_BIT or POS1_NEG127.
If the control works, but it goes in the wrong direction, swap the pins A&B of the encoder (physically, or when creating the
RotaryEncoder member).

If you are using an Arduino Leonardo, make sure you have Teensyduino and TeeOnArdu installed,
that you are using the Arduino IDE version 1.0.6, and board type is set to TeeOnArdu in MIDI mode.
If you are using an Arduino Uno, use the HIDUINO firmware for the ATmega16U2.

This library and these examples are part of the Instructable

Written by tttapa, 28/08/2015


Ha mindent bekötöttél rendesen, akkor a módot kell változtatni! A célprogramod nem értelmezi rendesen a felé küldött adatot.

ADD_64, SIGN_BIT or POS1_NEG127. Te az utóbbit próbálod, de nem jó.

Semmit nem kell kezdeni a rotary encoderrel, ez a lib megold neked mindent. A lehetséges probléma az, hogy a cél szoftvered nem így kéri az értéket.
(#) (Felhasználó 120038) válasza wifi196 hozzászólására (») Okt 19, 2016 /
 
Próbáld ki:

  1. #include <MIDI_controller.h>
  2.  
  3. const static byte Channel = 1;
  4.  
  5. const static byte Controller = 0x14;
  6.  
  7. RotaryEncoder enc(2,3,Controller,Channel,1,NORMAL_ENCODER,ADD_64);
  8. //Ha a fenti nem ok, akkor ezzel is próbáld meg:
  9. //RotaryEncoder enc(2,3,Controller,Channel,1,NORMAL_ENCODER,SIGN_BIT);
  10.  
  11. //Arra figyelj, hogy a 2,3 jó-e, most csak idemásoltam, nem tudom már melyik lábakra
  12. //van bekötve az encoder
  13.  
  14. void setup(){
  15.  
  16. setupMidi(13, 10); // Setup the MIDI communication, with an LED on pin 13, and a delay of 10ms after every message.
  17.  
  18.  delay(1000); // Wait a second...
  19.  
  20. }
  21.  
  22. void loop(){
  23.  
  24.  enc.refresh();
  25. }
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 /
 
Még valami amit nem tudok:

JOG vagy NORMAL_ENCODER? Ezt neked kell kiderítened.
(#) wifi196 válasza (Felhasználó 120038) hozzászólására (») Okt 19, 2016 /
 
Kipróbáltam az összes variációt, de mindegyiknél ugyan azt csinálja, csak növeli...
(#) pjg válasza wifi196 hozzászólására (») Okt 19, 2016 /
 
Jó az az encoder? Tegnap este összeraktam egy egérből kitermelttel egy projectet és minden gond nélkül működött.
(#) (Felhasználó 120038) válasza wifi196 hozzászólására (») Okt 19, 2016 /
 
Windows, vagy más?
(#) wifi196 válasza pjg hozzászólására (») Okt 19, 2016 /
 
Én is erre gondolok/gondoltam, de ilyet rendeltem és hármat kipróbáltam és mindnél rossz. Vagy az összes széria hibás vagy én már tényleg nem értem!
Windows
A hozzászólás módosítva: Okt 19, 2016
(#) vizor hozzászólása Okt 19, 2016 /
 
Üdv.

Ti milyen CRC algoritmust használtok, ha nagy mennyiségű adatot kell átküldeni egyik eszközről a másikra? Az átvitel soros porton 115200 bps sebességgel megy és a mérete néhány byte-tól a több 10 Kbyte-ig is terjedhet. Az átvitel egy C# program és Arduino Mega2560 között megy majd oda-vissza. Van valami egyszerű érthető algoritmus amit megírhatok mindkét oldalra? Vagy használjak mindkét oldalon CRC lib-et és fel lehet őket "konfigolni" hogy egyformán számoljanak?
(#) (Felhasználó 120038) válasza wifi196 hozzászólására (») Okt 19, 2016 /
 
Az encoder jó.

Keress másik midi library-t. Vagy a tractor beállításaiban kell körülnézni. 64/32 bit különbözet a traktor és az oprendszer között,vagy a bolygók együttállása nem kedvez.
Következő: »»   280 / 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