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   501 / 852
(#) neogeo2 válasza suszitibi hozzászólására (») Jan 7, 2019 / 1
 
Elvileg ha felment az előző .hex és a fuse biteket beállítod, lesz egy gyári "üres" UNO-d. Mehet bele a blink.ino probaképpen...
(#) neogeo2 válasza suszitibi hozzászólására (») Jan 7, 2019 / 1
 
Akkor lehet tényleg siker.
(#) suszitibi válasza neogeo2 hozzászólására (») Jan 7, 2019 /
 
Ezer köszönet, most lett 3 kontrollerem. Nem tudom, hogyan ment el a bootloader? Lényeg, hogy hibátlanul működik. Egyikbe ment a villogó kód, másikba a kormánytáv kódja. Szépen csinálják, amit kell. Ezt a bootloadert jól elteszem.
Köszönöm mindenkinek a segítséget.
Üdvözlettel: Tibi
(#) sector99 hozzászólása Jan 11, 2019 /
 
Találtam egy Hakko T12-es TIP-ekhez készített szabályzót Arduino nanoval elkészítve. Viszont számomra a 20, 21 és 22 sz. kivezetések beazonosítása nem egyértelmű, ebben szeretnék segítséget kérni.
(#) tbarath válasza sector99 hozzászólására (») Jan 11, 2019 /
 
Szerintem vcc, aref és gnd.
(#) sector99 válasza tbarath hozzászólására (») Jan 11, 2019 /
 
Én is erre gondoltam, csak a számozás nem világos.
(#) tbarath válasza sector99 hozzászólására (») Jan 11, 2019 /
 
google-be írd be, hogy atmega 328 pinout
(#) sector99 válasza tbarath hozzászólására (») Jan 11, 2019 /
 
Ott a pont, mert én csak a nano pinoutjait néztem. Köszi !
(#) tbarath válasza sector99 hozzászólására (») Jan 11, 2019 /
 
Viszont ez nem nano!
(#) berkesandor válasza sector99 hozzászólására (») Jan 11, 2019 /
 
Arduino nano + T12-re van gyártatott nyákom. Bővebben: Link
(#) sector99 válasza tbarath hozzászólására (») Jan 11, 2019 /
 
Ok, ha ez szerint kötöm be, az helyes ?
(#) sector99 válasza berkesandor hozzászólására (») Jan 11, 2019 /
 
Köszi, még nem biztos, hogy ez lesz a befutó.
(#) berkesandor válasza sector99 hozzászólására (») Jan 11, 2019 /
 
Nem rábeszélni akartlak, és főleg nem üzletelni.
(#) tbarath válasza sector99 hozzászólására (») Jan 12, 2019 /
 
Gondolom igen. Alapvetően egy nanóval kiváltható az uc/kristály/usbttl része a kapcsolásnak.
(#) sector99 válasza tbarath hozzászólására (») Jan 12, 2019 /
 
Köszi, megvan a megoldás "berkesandor"-nak köszönhetően.
(#) atus1981 hozzászólása Jan 12, 2019 /
 
Sziasztok!
Az lenne a kérdésem, hogy miért van minden arduino panelon 1k ellenállás az MCU és a soros-usb illesztő tx-rx között?
A hozzászólás módosítva: Jan 12, 2019
(#) Feri007 válasza atus1981 hozzászólására (») Jan 13, 2019 /
 
Idézet:
„...miért van minden arduino panelon 1k ellenállás az MCU és a soros-usb illesztő tx-rx között?”

Azért van, hogy normál pin-ként (digitalIO) lehessen használni, anélkül, hogy megszakitjuk a soros vonalat.
Igy egy "erősebb" input felül tudja bírálni a logikai szinteket.
A hozzászólás módosítva: Jan 13, 2019
(#) atus1981 válasza Feri007 hozzászólására (») Jan 13, 2019 /
 
Tehát ha én szintén soros kommunikációra szeretném használni az MCU TX-RX vonalát, akkor nem kell ellenállás pl az ESP-01 adapter és a board közé? Természetesen szintillesztés megoldott.
(#) Feri007 válasza atus1981 hozzászólására (») Jan 13, 2019 / 1
 
Nem kell ellenállás, sőt, csak akkor fog működni, ha nincs ellenállás az ESP felé!
- az MCU adás vonala: nincs gond, az ESP és a soros-USB bridge is megkapja a jelet.
- az MCU vételi vonala: A soros-USB bridge meghajtja az MCU-t, de az ellenállás miatt "gyengén".
Egy erősebb - ellenállás nélküli ESP- felül tudja bírálni a szinteket.

Viszont: mivel az MCU rx az ESP-t fogadja ekkor, a bootloading nem fog működni, a Serial.print, stb. sem. Ha ez gond, bevethető a SoftwareSerial.
(#) tbarath válasza atus1981 hozzászólására (») Jan 13, 2019 /
 
Az ESP ha jól tudom 3,3 Voltos, nem tudom tolerálja-e az arduino 5V jelét...
(#) berkesandor hozzászólása Jan 13, 2019 /
 
Arduino nano, esp, ssd1306 oled, 2 db dht22 a kapcsolás.
Minden szép és jó volt, de úgy vettem észre, hogy a softserial-on 115200-on nem elég stabil (pontos).
Áttettem hw-esre a kommunikációt, de az oled onnantól nem működik. Nem jelenik meg semmi rajta.
Több oled könyvtárat is kipróbáltam, mindegyik ugyanzet csinálja.
Mi akad össze, mivel?
(#) atus1981 válasza tbarath hozzászólására (») Jan 13, 2019 /
 
Idézet:
„Természetesen szintillesztés megoldott.”
(#) tbarath válasza atus1981 hozzászólására (») Jan 13, 2019 /
 
Hát ezt benéztem...
(#) szili83 hozzászólása Jan 13, 2019 /
 
Olyan problémám lenne, hogy egy nyomógombbal akarom elindítani, majd esetleg egy hosszú nyomással leállítani a motort, ami a következő program szerint fut:

  1. #include <Stepper.h>
  2.  #define STEPS 100
  3.  #define IN1  8
  4.  #define IN2  9
  5.  #define IN3  10
  6.  #define IN4  11
  7.  
  8.  Stepper small_stepper(STEPS, 8, 10, 9, 11);
  9.  
  10.   int  Steps2Take = 0;
  11.   long temps = 0;
  12.   int Compteur;
  13.   int Rotate_n_temp;
  14.   int Rotate_n;
  15.   int PSW = 5;
  16.   int PSW_S = 0;
  17.  
  18. void setup()
  19.  {                
  20.   pinMode(13, OUTPUT);
  21.   pinMode(IN1, OUTPUT);
  22.   pinMode(IN2, OUTPUT);
  23.   pinMode(IN3, OUTPUT);
  24.   pinMode(IN4, OUTPUT);
  25.  
  26.   pinMode(PSW, INPUT);  // Push Switch
  27.   }
  28.  
  29. void loop()
  30.   {
  31.    
  32.     if (digitalRead(PSW) == HIGH)
  33.   {
  34.  
  35.   Push_b_on:
  36.  
  37.   Rotate_n=2;
  38.   Rotate_n_temp = Rotate_n-1;  
  39.   digitalWrite(13, HIGH);  
  40.   delay(100);  
  41.   small_stepper.setSpeed(300);
  42.  
  43. if (Compteur<=Rotate_n_temp){
  44.  
  45.   Steps2Take  = -4096;
  46.   temps = millis();
  47.   small_stepper.step(Steps2Take);
  48.   temps =  millis()- temps ;
  49.   digitalWrite(IN1, LOW);
  50.   delay(2);
  51.   digitalWrite(IN2, LOW);
  52.   delay(2);
  53.   digitalWrite(IN3, LOW);
  54.   delay(2);
  55.   digitalWrite(IN4, LOW);
  56.   delay(2);
  57.   delay(2000);  //pause
  58.    
  59.   Steps2Take  = 4096;
  60.   temps = millis();
  61.   small_stepper.step(Steps2Take);
  62.   temps =  millis()- temps ;
  63.   Serial.println(temps);
  64.   digitalWrite(IN1, LOW);
  65.   delay(2);
  66.   digitalWrite(IN2, LOW);
  67.   delay(2);
  68.   digitalWrite(IN3, LOW);
  69.   delay(2);
  70.   digitalWrite(IN4, LOW);
  71.   delay(2);
  72.  
  73.   delay(2000);  //pause
  74.  
  75. // Glignotement de la LED
  76.   digitalWrite(13, LOW);  
  77.   delay(100);              
  78.   digitalWrite(13, HIGH);  
  79.   delay(100);
  80.   Compteur++; //Ajoute 1 au Compteur  
  81.  }
  82. else{
  83.   digitalWrite(IN1, LOW);
  84.   delay(2);
  85.   digitalWrite(IN2, LOW);
  86.   delay(2);
  87.   digitalWrite(IN3, LOW);
  88.   delay(2);
  89.   digitalWrite(IN4, LOW);
  90.   delay(2);
  91.  
  92.    Compteur=0;
  93.   goto Push_b_on;
  94.  }
  95.   }
  96.  
  97.   else
  98.   {
  99.   digitalWrite(13, HIGH);  
  100.   delay(50);  
  101.   digitalWrite(13, LOW);  
  102.   delay(100);              
  103.   digitalWrite(13, HIGH);  
  104.   delay(50);
  105.   digitalWrite(13, LOW);  
  106.   delay(100);  
  107.   }
  108.  }


Mivel soros futású a program, így a goto paranccsal nem ugrik vissza az elejére, azaz ha akkor nincs benyomva a gomb, akkor nem megy a motor.

Hogyan lehetne megoldani, hogy a gomb egyszeri rövid nyomására elinduljon, és addig ne álljon le, amíg a gombot nem nyomom hosszan? (Leállítás kb 2sec nyomásra)
(#) tbarath válasza szili83 hozzászólására (») Jan 13, 2019 / 1
 
Két verzió van: vagy interrupt, vagy a delay-ek kiváltása. Ez utóbbi kicsit egyszerűbb.
Nyilván nem a delay(2) témákról van szó, de a delay(2000)-et és társait ki kell cserélni valami időfigyelős dologra:
  1. unsigned long tX = millis() + 2000;
  2. while (millis() < tX){
  3. //do nothing
  4. }


Itt a while-ba tedd be a gombnyomás ellenőrzést is, vhogy így:
  1. unsigned long tX = millis() + 2000;
  2. while ((millis() < tX) && (high/low == digitalRead(valami)){
  3. //do nothing
  4. }
  5. if (high/low == digitalRead(valami){
  6. //gombnyomás volt, csinálunk valamit.
  7. }

Ezt akár egy fv-be is kiszervezheted...

És még 2 javaslat:
1. felejtsd el a goto-t, ha átlátható programoz szeretnél írni
2. felejtsd el a franciát. Inkább legyen magyar, ha már angol nem tud lenni, de ne legyen francia. Kb. 2 percet agyaltam azon, hogy milyen (angol) szavakból, vagy azok rövidítéséből jöhetett össze a "Compteur" váltoró neve. Aztán a "Glignotement de la LED" már meg se lepett...
A hozzászólás módosítva: Jan 13, 2019
(#) szili83 válasza tbarath hozzászólására (») Jan 14, 2019 /
 
Nem egészen erre gondoltam.
Arra, amíg nem nyomom meg a gombot pl addig a LED nem villog. Ha megnyomom, akkor addig villog, amíg nem nyomom hosszan a gombot. Azaz a void loop ha lefut és a gomb nincs benyomva akkor is a megfelelő sorra fut, azaz a LED villogtatásra. Ezt hogyan lehetne megoldani?
(#) berkesandor válasza berkesandor hozzászólására (») Jan 14, 2019 /
 
Az I2C semmi forgalom nincs (logikai analizátorral nézve).
Mi a fene lehet ez?
(#) Rober_4 válasza szili83 hozzászólására (») Jan 14, 2019 /
 
Egy logikai változóban tárolod, hogy milyen állapotban van a gép, ezen változó állapotától függően hívod meg a villogtató függvényt, vagy vezérled az elágazást. Ez után már csak azt kell elérned, hogy a változód kezelje a be és a kikapcsolást. Először javaslom a gombnyomásra be-ki kapcsolást megoldani, majd a kikapcsolást csak akkor, ha több loop után is nyomva van a gomb. Ehhez a gomb állapotát egy globális változóban kell tárolnod. A goto utasítást kerüld el véleményem szerint is! ja én sem böngésztem át a programot, egyszerűbb újat írni...
A hozzászólás módosítva: Jan 14, 2019
(#) szili83 válasza Rober_4 hozzászólására (») Jan 14, 2019 /
 
Egy egyszerű mintaprogramot tudsz mutatni? Köszönöm!
(#) kapu48 válasza szili83 hozzászólására (») Jan 14, 2019 /
 
Próbáldmeg ezt:
  1. //Buttons.ino  No delay!   kapu48
  2. const int buttonPin = 8;
  3. const int ledPin = 11;
  4.  
  5. uint8_t ledState = HIGH;
  6. uint8_t buttonState = LOW;
  7. int lastButtonState = 0;
  8. uint8_t reading;
  9.  
  10. long lastDebounceTime = 0;
  11. long debounceDelay = 50;
  12.  
  13. void setup() {
  14.   pinMode(buttonPin, INPUT);
  15.   pinMode(ledPin, OUTPUT);
  16.  
  17.   // set initial LED state
  18.   digitalWrite(ledPin, ledState);
  19. }
  20.  
  21. void loop() {
  22.   reading = digitalRead(buttonPin); // Beolvassa a gomb állapotát
  23.   if (reading == HIGH) { // Ha megnyomták
  24.     lastDebounceTime = millis(); // Beállitja a kezdö értéket
  25.     buttonState = HIGH; // Jelzi a gombnyomást
  26.     if(++lastButtonState == 100){  // Ha hosszan nyomja elszámolt xxx-ig lekapcsol
  27.       buttonState = LOW; //
  28.       ledState = HIGH;
  29.       digitalWrite(ledPin, ledState); // LED le
  30.      lastButtonState = 0;
  31.       delay(500); // Hosszunyomás kivárása
  32.     }
  33.     delay(50); // Prellezés kivárása
  34.   }
  35.  
  36.   if ((millis() - lastDebounceTime) > debounceDelay) { // Ha letelt az idö
  37.         if (buttonState == HIGH) { // Volt gombnyomás?
  38.           ledState = !ledState; // Állapot invertálás
  39.           digitalWrite(ledPin, ledState); // !LED
  40.           lastDebounceTime = millis();  // Új idöpont beállítása
  41.         }
  42.    }
  43.  
  44.  
  45. }


(Sajnos nekem megírni könnyebb, mint elmagyarázni!)
A hozzászólás módosítva: Jan 14, 2019
Következő: »»   501 / 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