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   579 / 852
(#) mateatek válasza Rober_4 hozzászólására (») Dec 27, 2019 /
 
(#) rolandgw válasza Rober_4 hozzászólására (») Dec 27, 2019 /
 
Nem sok esélyt látok, hogy a 8 Mhz-es, 12 hang polifóniás Yamaha mcu-ra, Arduinoval időben reagálj. Esetleg egy-két hanggal, de az akkor inkább dallamcsengő lesz, mint szinti.
(#) vargham hozzászólása Dec 27, 2019 /
 
Egy MCU mindig is lassabb lesz, mint egy célhardver. Például egy 16 mHz ATMega, (pl Arduino UNO) képtelen elég gyorsan reagálni ahhoz, hogy szimulálni tudjon egy memória modult egy 1 mHz Z80-nak. Még akkor is, ha mindent megszakítással és ASM kóddal oldasz meg. Ehhez meg kell nézni, hogy a Yamaha cucc mennyi időn belül várja el, hogy a busz beálljon az adott szintre, és azt is, hogy az ATMega mennyi idő alatt hajt végre egy ISR-t, plusz port olvasást, plusz port írást. Valószínűleg nagyságrendbeli különbség lesz a kettő között.
Az ATMega 2560 (Arduino Mega) rendelkezik gyors, külső cím és adat busszal, de az arra való, hogy az MCU-hoz memórát kapcsolj, és nem fordítva.
(#) Rober_4 válasza rolandgw hozzászólására (») Dec 27, 2019 /
 
Én sem, csak érdekelt a dolog, mi lesz belőle, hátha valamivel több lesz mint egy dallamcsengő, de pontosan az lett Viszont a működése számomra így érthető lett...
(#) Rober_4 válasza vargham hozzászólására (») Dec 27, 2019 /
 
Volt egy halvány reményem, hogy a billentyűzet szkennelése talán alacsonyabb frekvencián megy, mint mondjuk a rom modul kiolvasása...
(#) Massawa válasza Rober_4 hozzászólására (») Dec 27, 2019 /
 
Most olvastam ujra, hogy mit is akarsz csinálni. Elvben amit akarsz azt egy Arduinoval (328) meg lehet csinálni csak nem igy, ahogy te probáltad. Van néhány MIDi cucc ( szabad programok pl a YT-n, ami Arduino alapon müködik, és a MIDI sokkal lassubb, mint a szinti belsö scannere.
Egy szoval egy 328as proci talán még 70 billentyüt is le tud idöben olvasni és MIDIre változtatni. ( nem probáltam, de elég sokat foglalkoztam MIDIVel.).
Szoval ugyanazt a matrixot amit megrajzoltál egy ATmega328-l is dekodolni lehet és idöben MIDI koddá változtatni. Lehet, hogy nem lesz teljes polifonia, de néhány billentyüt egyszerre talán még be tudsz olvasni. ( ide számolni kellene a gépidöket).
(#) rolandgw válasza Massawa hozzászólására (») Dec 27, 2019 /
 
Akkor olvasd el még egyszer. Matrix emulálásról van szó, nem beolvasásról.
(#) Massawa válasza rolandgw hozzászólására (») Dec 27, 2019 /
 
Bocs, azt igy valoszinü semmivel nem tudod megoldani, mert amikor a yamaha kiadja a cimet abban a pillanatban kinyilnak a beolvaso portok is, amit egy processzorban nem igen lehet megoldani.Neked elöbb értelmezni kell a cimet (pár lépés a prociban) majd kigenerálni a reakciot ( ujabb pár lépés hova mi megy - data). Ehhez idö kell, ami a yamahában nincs
(#) Rober_4 válasza Massawa hozzászólására (») Dec 27, 2019 /
 
Ilyet már csináltam. Az nem nehéz, és tökéletesen működik
Én a szinti hangjait akarom használni, mert professzionális 16bites fmhangok, csak nincs benne midi. És a csipben sincs kivezetve, bármennyire is úgy tűnik a rajz alapján, mivel az enyémben a ym3420AD chip van, és bár ahhoz nincs doksim, de semminemű dolog nem utal rá, hogy lenne MIDI lába, viszont tudom, hogy eltérnek a kivezetéseik.
ym3420
Egyébként lehet valami jk tárolós megoldás kellene. Ahol beírom a jk-ba az értéket az Arduinóval, a proci meg szépen kiolvasgatja a saját frekijével. Mintha már ajánlottatok is volna hasonlót...
(#) vargham válasza Rober_4 hozzászólására (») Dec 27, 2019 /
 
Vagy használj hozzá gyorsabb mikrokontrollert. Pl STM32F4, van belőle 180 MHz órajelű változat is, miközben Arduino árban van egy fejlesztő kártya.
STM32F446
(#) wbt válasza Rober_4 hozzászólására (») Dec 27, 2019 /
 
DUAL-PORT-RAM is használható lenne, a legkisebb 2db 64byte TTL-ből (vagy 1K-s egyéb...).
(#) krauszkrisztian14 hozzászólása Dec 27, 2019 /
 
Üdv!
Tudom, nem feltétlenül ide passzol a kérdés, bár részben igen, de nem tudná valaki megmondani, hogy ESP32-höz hogyan lehet PS/2-es billentyűzetet kapcsolni?
Arduino UNO-val megy, de ESP-hez nem találtam függvénykönyvtárat se, ami működne.
Előre is köszönöm!
(#) bbb válasza krauszkrisztian14 hozzászólására (») Dec 27, 2019 /
 
Ha megy az uno-val, akkor nézd meg hogyan lehet az esp32 panelt betenni a keretprogramba, majd a lábakat feleltesd meg és jó leszel.
(#) Rober_4 válasza vargham hozzászólására (») Dec 27, 2019 /
 
Újraírtam. Tehát, ha a d13 láb alacsony szinten van, akkor a D7 láb alacsony vagy magas szintre kerül, attól függően, hogy le van-e nyomva a virtuális billentyű. Egyébként visszateszi magas szintre a D7-et. Még nem mertem kipróbálni...

  1. unsigned long time;
  2. bool lenyom = false;
  3. long elozoido = 0;
  4. //Billentyűzet lenyoműskor a D7-nek nullának kell lennie, egyébként 1
  5. byte billentyule=B00000000;
  6. byte billentyufel=B10000000;
  7. void setup() {
  8. //beállítoma D7-D12 ig kimenetnek, D13-at bemenetnek
  9. DDRB = B00011111;
  10. DDRD = B10000000;
  11. }
  12.  
  13. void loop() {
  14.   //4ms-ként modellezem a billenyű lenyomást
  15. time = micros();
  16.   if (time - elozoido > 400000) {
  17.     lenyom = !lenyom;
  18.     elozoido = time;
  19.   }
  20.  
  21. if (PORTB | B10111111 == B10111111) {
  22.     if(lenyom){PORTD =PORTD | billentyule;}else {PORTD =PORTD | billentyufel;}
  23.     }
  24. if (PORTB | B10111111 == B11111111) {
  25.     PORTD =PORTD | B10000000;
  26.     }
  27. }
A hozzászólás módosítva: Dec 27, 2019
(#) Massawa válasza Rober_4 hozzászólására (») Dec 27, 2019 /
 
Ne nem vagyok biztos, hogy ez menni fog. Azok az if/else sorok talán már idöben hosszuak, meg abban sem vagyok biztos, hogy a yamaha igy kérdezi le a billentyüzetet, (azaz, ha lenyomod a utánna magad billented vissza (if (time....). Szerintem a yamahában lesz egy belsö taktus, ( a zenei taktus többszöröse, de annak a függvénye), mert többek között ebböl tudják egyes modernebb yamahák rendbe tenni a ritmust, ha nem játszol pontosan, akkor a gép pontositja ( valoszinüleg az 1/32-d egészszámu többszörösével. Igy neked kellene szintén a cimváltozásokbol kiszámolni, ezt a lekérdezö beat/taktust/frekvenciát és az szerint állitani a billentyük idözitését - abbol már meg tudod mondani, hogy milyen hosszu a lenyomott hang (1/32-d hányszorosa).
Csak gondolom, már elég régen volt amikor ilyesmit csináltam.
(#) Rober_4 válasza Rober_4 hozzászólására (») Dec 27, 2019 /
 
Ez nem jó valamiért, a második if sosem teljesül...
(#) Massawa válasza Rober_4 hozzászólására (») Dec 27, 2019 /
 
Nem mert az if loop-k egymást kizárják.
(#) Rober_4 válasza Massawa hozzászólására (») Dec 27, 2019 /
 
Lehet a 14-es lábat vizsgálom ami nincs, a 13-as helyett...
(#) Rober_4 válasza Rober_4 hozzászólására (») Dec 28, 2019 /
 
Fél év keresés után találtam egy nagyon jó progit, a vs1053-s midijéhez. Működik, ha van gpio ha nincs, illetve spi-nál plugin feltöltésével oldja meg a realtime Midit. (mert az olcsóbb dsp-ken nincs soros RC-TX sem kivezetve) Ez mindent megold csak be kell állítani!vs1053 realtime midi
(#) rolandgw válasza Rober_4 hozzászólására (») Dec 29, 2019 /
 
Én nem erőltetném a VS-t. Nem a MIDI az erőssége, ahogy hallom a videón. Ennél egy SB Live EMU chip is szebben szól, szerintem.
Bővebben: Link
(#) Rober_4 válasza rolandgw hozzászólására (») Dec 29, 2019 /
 
Nagyon sz@r a hangja De szól.
Összetenném a két kezem, ha egy SB Live EMU-chip-em lenne...
A hozzászólás módosítva: Dec 29, 2019
(#) devergo74 hozzászólása Jan 1, 2020 /
 
Sziasztok!
Elkezdtem építeni egy arduinóval vezérelhető kisautót. Viszont nem tudok rájönni hogy miért ír ki hibát a kódban. Ha valaki leellenőrizné a kódot azt megköszönöm.
  1. #include <AFMotor.h>  
  2. #include <NewPing.h>
  3. #include <Servo.h>
  4.  
  5. #define TRIG_PIN A0
  6. #define ECHO_PIN A1
  7. #define MAX_DISTANCE 200
  8. #define MAX_SPEED 190 // sets speed of DC  motors
  9. #define MAX_SPEED_OFFSET 20
  10.  
  11. NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
  12.  
  13. AF_DCMotor motor1(1, MOTOR12_1KHZ);
  14. AF_DCMotor motor2(2, MOTOR12_1KHZ);
  15. AF_DCMotor motor3(3, MOTOR34_1KHZ);
  16. AF_DCMotor motor4(4, MOTOR34_1KHZ);
  17. Servo myservo;  
  18.  
  19. boolean goesForward=false;
  20. int distance = 100;
  21. int speedSet = 0;
  22.  
  23. void setup() {
  24.  
  25.   myservo.attach(10);  
  26.   myservo.write(115);
  27.   delay(2000);
  28.   distance = readPing();
  29.   delay(100);
  30.   distance = readPing();
  31.   delay(100);
  32.   distance = readPing();
  33.   delay(100);
  34.   distance = readPing();
  35.   delay(100);
  36. }
  37.  
  38. void loop() {
  39.  int distanceR = 0;
  40.  int distanceL =  0;
  41.  delay(40);
  42.  
  43.  if(distance<=15)
  44.  {
  45.   moveStop();
  46.   delay(100);
  47.   moveBackward();
  48.   delay(300);
  49.   moveStop();
  50.   delay(200);
  51.   distanceR = lookRight();
  52.   delay(200);
  53.   distanceL = lookLeft();
  54.   delay(200);
  55.  
  56.   if(distanceR>=distanceL)
  57.   {
  58.     turnRight();
  59.     moveStop();
  60.   }else
  61.   {
  62.     turnLeft();
  63.     moveStop();
  64.   }
  65.  }else
  66.  {
  67.   moveForward();
  68.  }
  69.  distance = readPing();
  70. }
  71.  
  72. int lookRight()
  73. {
  74.     myservo.write(50);
  75.     delay(50);
  76.     int distance = readPing();
  77.     delay(100);
  78.     myservo.write(115);
  79.     return distance;
  80. }
  81.  
  82. int lookLeft()
  83. {
  84.     myservo.write(170);
  85.     delay(500);
  86.     int distance = readPing();
  87.     delay(100);
  88.     myservo.write(115);
  89.     return distance;
  90.     delay(100);
  91. }
  92.  
  93. int readPing() {
  94.   delay(70);
  95.   int cm = sonar.ping_cm();
  96.   if(cm==0)
  97.   {
  98.     cm = 250;
  99.   }
  100.   return cm;
  101. }
  102.  
  103. void moveStop() {
  104.   motor1.run(RELEASE);
  105.   motor2.run(RELEASE);
  106.   motor3.run(RELEASE);
  107.   motor4.run(RELEASE);
  108.   }
  109.  
  110. void moveForward() {
  111.  
  112.  if(!goesForward)
  113.   {
  114.     goesForward=true;
  115.     motor1.run(FORWARD);      
  116.     motor2.run(FORWARD);
  117.     motor3.run(FORWARD);
  118.     motor4.run(FORWARD);    
  119.    for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly
  120.    {
  121.     motor1.setSpeed(speedSet);
  122.     motor2.setSpeed(speedSet);
  123.     motor3.setSpeed(speedSet);
  124.     motor4.setSpeed(speedSet);
  125.     delay(5);
  126.    }
  127.   }
  128. }
  129.  
  130. void moveBackward() {
  131.     goesForward=false;
  132.     motor1.run(BACKWARD);      
  133.     motor2.run(BACKWARD);
  134.     motor3.run(BACKWARD);
  135.     motor4.run(BACKWARD);  
  136.   for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly
  137.   {
  138.     motor1.setSpeed(speedSet);
  139.     motor2.setSpeed(speedSet);
  140.     motor3.setSpeed(speedSet);
  141.     motor4.setSpeed(speedSet);
  142.     delay(5);
  143.   }
  144. }  
  145.  
  146. void turnRight() {
  147.   motor1.run(FORWARD);
  148.   motor2.run(FORWARD);
  149.   motor3.run(BACKWARD);
  150.   motor4.run(BACKWARD);    
  151.   delay(500);
  152.   motor1.run(FORWARD);      
  153.   motor2.run(FORWARD);
  154.   motor3.run(FORWARD);
  155.   motor4.run(FORWARD);      
  156. }
  157.  
  158. void turnLeft() {
  159.   motor1.run(BACKWARD);    
  160.   motor2.run(BACKWARD);  
  161.   motor3.run(FORWARD);
  162.   motor4.run(FORWARD);  
  163.   delay(500);
  164.   motor1.run(FORWARD);    
  165.   motor2.run(FORWARD);
  166.   motor3.run(FORWARD);
  167.   motor4.run(FORWARD);
  168. }
A hozzászólás módosítva: Jan 1, 2020
(#) proba válasza devergo74 hozzászólására (») Jan 1, 2020 /
 
Hamarabb van, ha a hibaüzenetet írod be.
(#) GPeti1977 válasza devergo74 hozzászólására (») Jan 1, 2020 /
 
Attól a sok delay-tól jól működik a szervó?
(#) devergo74 válasza proba hozzászólására (») Jan 1, 2020 /
 
Ezt a hibaüzenetet kapom: AFMotor.h: Nincs ilyen fájl vagy könyvtár
(#) icserny válasza devergo74 hozzászólására (») Jan 1, 2020 /
 
Akkor nyilván nem a kódot kell sillabizálni, hanem megnézni, hogy miért nincs nálad AFMotor.h állomány (vagy ha van, akkor miért nem ott van, ahol lennie kellene).

Az Adafruit Motor Shield library telepítve van?
(#) devergo74 hozzászólása Jan 1, 2020 /
 
sikerült javítani a AFMotor.h hibát, viszont most egy újabb hiba jelentkezett: NewPing.h: Nincs ilyen fájl vagy könyvtár.
Miket kellene még telepíteni, hogy ne irkáljon ilyeneket?
(#) Massawa válasza devergo74 hozzászólására (») Jan 1, 2020 /
 
Az AFMotor.h - nak van legalább 4-5 változata. Ha az Adafruitrol most töltöd le, akkor ott megirják melyik shieldhez melyiket kell beolvasni.
A NewPing.h meg kell keresni valahol a githubon megtalálod.
(#) icserny válasza devergo74 hozzászólására (») Jan 1, 2020 /
 
(#) devergo74 válasza icserny hozzászólására (») Jan 1, 2020 /
 
Letöltöttem, csak azt nem tudom, hogyan kell ezt telepíteni.
Következő: »»   579 / 852
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