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   606 / 850
(#) Kovidivi hozzászólása Márc 18, 2020 /
 
Helló.
Használt már valaki LGT8F328P alapú Arduino Nano-t?
Ebay-en nagyon olcsó: Bővebben: Link. 1.6-1.7$.
Teljesen kompatibilis lenne az Atmega328-cal, esetleg még jobb is?
A hozzászólás módosítva: Márc 18, 2020
(#) juhasz10 válasza berez hozzászólására (») Márc 18, 2020 /
 
Nézd meg ezt, ebből elindulhatsz.
7 Segment
(#) mateatek válasza Kovidivi hozzászólására (») Márc 18, 2020 /
 
Manapság csak azt használok. EEPROM-ot kivéve jobb.
(#) mateatek válasza Kovidivi hozzászólására (») Márc 18, 2020 /
 
Én általában ezt használom. Tisztességes munkát végeztek a kínaiak.
Bővebben: Link
(#) Kovidivi válasza mateatek hozzászólására (») Márc 18, 2020 /
 
Köszi. Átnézem tüzetesebben!
(#) Bell válasza proba hozzászólására (») Márc 18, 2020 /
 
Alacsonyabb sebességen próbáltam, de igazad van.
Köszönöm!
(#) Bell válasza proba hozzászólására (») Márc 18, 2020 /
 
A kvarc 16 001 KHz-en intenzíven megy, a soros monitoron 115 200 baud-al küldött adatokat pontosan visszaküldi.
De csak 1 sorban max. 80 byte-ot, a többit nem. Ez talán a soros monitor beállítása.
A reset gomb jól működik.
Próbáltam többféle bootloaderrel, de nincs különbség.
(#) berez válasza juhasz10 hozzászólására (») Márc 19, 2020 /
 
Köszi a választ,közben több helyről összevágva kész lett a kód(egyben nincs meg a neten,napokat keresgéltem)Ez lett belőle,serial monitoron minden ok,jó értéket ír:
  1. #include "SevSeg.h"
  2. SevSeg sevseg;
  3. byte numDigits = 3;
  4. byte digitPins[] = {10, 11,4};
  5. byte segmentPins[] = {13, 8, 7, 6, 5, 2, 3, 9};// A,B,C,D,.....
  6.  
  7. bool resistorsOnSegments = true;
  8. bool updateWithDelaysIn = false;
  9. byte hardwareConfig = COMMON_ANODE;
  10.  
  11.  
  12. byte button = 12;
  13. unsigned long startTime;
  14. unsigned long endTime;
  15. unsigned long duration;
  16. byte timerRunning;
  17. void setup() {
  18.   sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  19.   sevseg.setBrightness(90);
  20.   pinMode (button, INPUT_PULLUP);
  21.   Serial.begin(9600);
  22.  
  23. }
  24. void loop() {
  25.   if (timerRunning == 0 && digitalRead(button) == LOW) { // button pressed & timer not running already
  26.     startTime = millis();
  27.     timerRunning = 1;
  28.   }
  29.   if (timerRunning == 1 && digitalRead(button) == HIGH) { // timer running, button released
  30.     endTime = millis();
  31.     timerRunning = 0;
  32.     duration = endTime - startTime;
  33.     long speed = (4000 / duration);
  34.     Serial.print ("fordulatszám: "); Serial.print(speed ); Serial.print (" időtartam   ");
  35.    Serial.println (duration);
  36.     //sevseg.refreshDisplay();
  37.    
  38.     sevseg.setNumber(speed );
  39.     sevseg.refreshDisplay();
  40.    
  41.   }
  42. }

Jelenleg még 1 kijelzővel próbálom,(eléd lenne az utolsó szám)annyi a gond ,hogy ha p.l a serial monitor 14-et ír ,akkor a kijelzőn megjelenik az 1 -es,következő fordulatnál a 4-es,
aztán megint 1 ,megint 4 ...és így tovább
Mi lehet rossz a kódban?
A hozzászólás módosítva: Márc 20, 2020
Moderátor által szerkesztve
(#) proba válasza Bell hozzászólására (») Márc 19, 2020 / 1
 
Bármennyit vissza kell küldenie. a terminál ablaknak tudtommal nincs limitje. Az USB soros port átalakító rx tx lábát öszezárva arduinó nélkül menyi adatot hajlandó visszaküldeni? A bootloadernek a visszaküldött adatokhoz semmi köze, azt csak a te programod befolyásolja. Mennyi a tápfeszültség ? Ezt a sebességet (16MHz) már csak 5V on szereti a katalógus szerint.
A hozzászólás módosítva: Márc 19, 2020
(#) Bell válasza proba hozzászólására (») Márc 19, 2020 /
 
Az USB-s megy 3 millió bauddal is, de találtam egy hibát.
Soros adatokat sebességtől függetlenül csak akkor küld ki, ha előtte kapott soros adatot. De akkor megy oda-vissza akár 115200-al.
Ez eddig nem derült ki, mert, amiben próbáltam, ott ez megvolt.
Azt gondolom, hogy ez processzor hiba, mert a while(!Soros); -al megvárom a port feléledését.
Köszönöm a segítséget!
(#) krauszkrisztian14 hozzászólása Márc 19, 2020 /
 
Üdv!
Egy Arduino Pro Mini-t meg lehet táplálni 9v-os elemtől?
Előre is köszönöm!
(#) proba válasza Bell hozzászólására (») Márc 19, 2020 / 1
 
Nem valami auto baudrate beállítást használsz ? Lehet azért kell neki adat, hogy tudja milyen sebességen kell neki kommunikálni. A másik, ha már programozót használsz, a fuse bitek értékét kiírhatnád. Lehet valamit átírtál, és azért nem beszélget veled. Magával az arduinó keretrendszerrel próbáltad a bootloadert beégetni? Lehet az a fuse biteket is helyre rázná.
(#) juhasz10 válasza berez hozzászólására (») Márc 19, 2020 /
 
Húha, emlékszem, hogy ebbe én is belefutottam, ha megölsz sem emlékszem mi volt a hiba.
  1. byte numDigits = 2;
  2.   byte digitPins[] = {9,12};
  3.   byte segmentPins[] = {2,3,4,5,6,7,8};
  4.   bool resistorsOnSegments = true; // 'false' means resistors are on digit pins
  5.   byte hardwareConfig = COMMON_ANODE; // See README.md for options
  6.   bool updateWithDelays = false; // Default 'false' is Recommended
  7.   bool leadingZeros = true; // Use 'true' if you'd like to keep the leading zeros
  8.   bool disableDecPoint = true; // Use 'true' if your decimal point doesn't exist or isn't connected
  9.  
  10.   sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments,
  11.   updateWithDelays, leadingZeros, disableDecPoint);
  12.   sevseg.setBrightness(0);

Ezzel biztosan működik egy 2 digites számláló.
(#) Kovidivi válasza krauszkrisztian14 hozzászólására (») Márc 19, 2020 / 1
 
A VIN bemeneten (vagy RAW), de nem ajánlom. Egyrészt az elemed gyorsan lemerül, másrészt a lapon levő stabilizátor nem a legjobb (kevés áram, kevés disszipáció).
(#) asch válasza krauszkrisztian14 hozzászólására (») Márc 19, 2020 / 1
 
Kiegészítés:

A 9V elemben egy rakás cella van sorba kötve, hogy összeadódjon a feszültségük. Cserébe túl sok áramot nem lehet kivenni belőle.

Az Arduino feszültség stabilizátora úgy működik, hogy a fölös feszültséget elfűti. Ez a 9V elem esetén azt jelenti, hogy a teljes energia 4/9-ed része megy a kukába.

Az áramkör nem energiára optimalizálva van tervezve. Ezért nem fog olyan sokáig működni, mintha direkt erre terveznél egy áramkört. Viszont csak rádugod, és már működik is.

Mit akarsz csinálni vele?
(#) berez válasza juhasz10 hozzászólására (») Márc 19, 2020 /
 
Köszönöm,hogy próbáltál segíteni,beírtam a sorokat,
azt csinálja ,hogy ha pl.14 jelenik meg a serial monitoron,ami egyébként
jó érték elmegy a mágnes a hall sensor előtt az első led digit kíírja az "1"-est,
aztán elalszik.Amikor másodszor(1 kör után) megint odaér a mágnes,
kíírja a második digiten a "4"-est ,ami szintén elalszik,a következő körnél
megint az "1" -es,utána 1 kör mulva megint a "4"-es és így tovább...
Egyszerre sohasem világít a 2 digit ,körönként váltogatja egymást.
A megoldás az lehetne,hogy az épp aktív digit ne aludjon el rögtön a
triggerelés után,hanem még maradjon világítva addig amíg nem kap más utasítást,
pl 4 helyett váltson 5 -re vagy 3-ra.(függően a sebességtől.
Gondolkodtam hátha egy delay(...) segítene?
(#) Kovidivi válasza berez hozzászólására (») Márc 19, 2020 /
 
Én javaslok egy ingyenes 60nap alatt Arduino tanfolyamot (google megtalálja). A feladatodat egyáltalán nem ilyen módon kellene megoldani, hanem minimum állapotgéppel, de inkább egy gyors interrupttal (Arduino alatt az se nagy falat).
(#) berez válasza Kovidivi hozzászólására (») Márc 19, 2020 /
 
Köszönöm...
(#) GFI hozzászólása Márc 20, 2020 /
 
Szisztok

USB HID távirányítóval szeretnék https://www.google.com/search?q=sc-b03&sxsrf=ALeKk009y9WBOHgErD...ih=911 Arduniot kezelni. Uno + usb host shield + usb bluetooth dongle.
usb host shield 2.0 könyvtárban van pár hasonló, de igazából nem tudom, mit hogyan merre tovább.
Valakinek van tapasztalata hasonlóban?
(#) Bell válasza proba hozzászólására (») Márc 20, 2020 /
 
Köszönöm! Nincs külön programozóm, így hagyományos Leonardo-t használok a feltöltésre Arduino as ISP(ATmeg32U4)-ként.
De nem babráltam bele, csak a RESET-et és a LED-et írtam át 10, 13-ra.
(#) krauszkrisztian14 válasza asch hozzászólására (») Márc 20, 2020 /
 
Köszönöm!
Futófényt szeretnék, előre leprogramozott villogási módokkal. Kb 30-40 ledről lenne szó, és egy bluetooth modulról. Külső táp lenne hozzá, de elemesre válthatóra is megcsinálnám azért...
(#) sargarigo válasza krauszkrisztian14 hozzászólására (») Márc 20, 2020 / 1
 
Hát 30-40 ledet nem fog elvinni semmilyen 9V-os elem. 40 led 20mA-rel számolva 0.8A! Akkumulátor lesz az, vagy bedugós táp.

Szerk: Értelemszerűen ahány led egyszerre világít, annyit eszik. Ha csak egy led fut körbe, akár 20mA is lehet a vége. Ha ezt betartod, akár még elemes is lehet egy pár percig, óráig.
A hozzászólás módosítva: Márc 20, 2020
(#) Massawa válasza sargarigo hozzászólására (») Márc 20, 2020 /
 
Igy van, habár ma már nagyon jo LEDek vannak, a minap a fehér LEDekkel tiz kiloOhmos ellenállást kellett sorbakötnöm 12 V-rol, hogy ne vakitsanak.
(#) berez hozzászólása Márc 20, 2020 /
 
Üdv,sikerült nagyrészt megoldani ezt a bicikli sebességmérőt,
az utolsó gond az,hogy szépen kiirja a sebességet,de ha
megállok(nincs több triggerelés)az utolsó érték bennmarad.
Ekkor kéne "0" -ra visszaállni...
A kikommentelt résszel próbálkoztam,de nem jó)
A kód:
(...az elejét nem idézem csak a lényeget)

  1. duration = endTime - startTime;
  2.  int speed = (4000 / duration);
  3.      sevseg.setNumber(speed);
  4.      sevseg.refreshDisplay();
  5.    }
  6.      sevseg.refreshDisplay();
  7.      }
  8.   //if(duration > 2000);
  9.    //sevseg.setNumber(0);
  10.   }

Köszi ha valaki tanácsolna valamit azon kívül,hogy iratkozzak be 60 napos
ingyenes Ardu tanfolyamra
A hozzászólás módosítva: Márc 22, 2020
Moderátor által szerkesztve
(#) sargarigo válasza berez hozzászólására (») Márc 20, 2020 / 1
 
Idézet:
„,hogy iratkozzak be 60 napos ingyenes Ardu tanfolyamra”

Pedig tényleg jó, én is végigolvastam!

  1. //if(duration > 2000);
  2. //sevseg.setNumber(0);

Ez a rész miért van kommentelve? Elsőre én is így fognék neki.
Ez EndTime, és a StartTime honnan jön? Az a baj a kódrészletekkel, hogy te azt gondolod ez a fontos, közben meg lehet hogy valahol máshol van hiba. Tessék szépen mellékelni a kódot, hogy érdemben tudjunk segíteni, ne kelljen a varázsgömböt előszedni a szekrény mélyéről!
A hozzászólás módosítva: Márc 20, 2020
(#) Lamprologus válasza berez hozzászólására (») Márc 20, 2020 /
 
Látatlanban: csak várja a következő impulzust, de az nem jön... Nem tud sebességet számolni,marad a korábbi érték.
Megoldás: ha nem jön impulzus x ideig, akkor bicikli áll - sebesség =0.
(#) berez válasza sargarigo hozzászólására (») Márc 20, 2020 /
 
Ez lenne az egész kód:

  1. #include "SevSeg.h"
  2. SevSeg sevseg;
  3. byte numDigits = 2;
  4. byte digitPins[] = {10, 11,};
  5. byte segmentPins[] = {13, 8, 7, 6, 5, 2, 3, 9};// A,B,C,D,.....
  6.  
  7. bool resistorsOnSegments = true;
  8. bool updateWithDelaysIn = false;
  9. byte hardwareConfig = COMMON_ANODE;
  10. bool updateWithDelays = false;
  11. bool leadingZeros = true;
  12. bool disableDecPoint = true;
  13. byte button = 12;
  14. unsigned long startTime;
  15. unsigned long endTime;
  16. unsigned long duration;
  17. byte timerRunning;
  18. void setup() {
  19.   sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  20.   sevseg.setBrightness(90);
  21.   pinMode (button, INPUT_PULLUP);
  22.   Serial.begin(9600);
  23. }
  24. void loop()
  25.  
  26.   {
  27.   if (timerRunning == 0 && digitalRead(button) == LOW) { // button pressed & timer not
  28.   running already
  29.     startTime = millis();
  30.     timerRunning = 1;
  31.   }
  32.   { if (timerRunning == 1 && digitalRead(button) == HIGH) { // timer running, button released
  33.       timerRunning = 0;
  34.       endTime = millis();
  35.  
  36.       duration = endTime - startTime;
  37.       int speed = (4000 / duration);
  38.       Serial.print ("fordulatszám: "); Serial.print(speed ); Serial.print (" időtartam   ");
  39.       Serial.println (duration);
  40.       sevseg.setNumber(speed );
  41.      
  42.      sevseg.refreshDisplay();
  43.    }
  44.      
  45.      sevseg.refreshDisplay();
  46. //if(duration > 2000);
  47. //sevseg.setNumber(0);
  48.      }
  49.   }
A hozzászólás módosítva: Márc 22, 2020
Moderátor által szerkesztve
(#) usane válasza berez hozzászólására (») Márc 20, 2020 /
 
itt valami nagy kavar van a kapcsos zárójelekkel.
A loopnak nem így kellene kinéznie?
  1. void loop()
  2. {
  3.         if (timerRunning == 0 && digitalRead(button) == LOW) { // button pressed & timer not running already
  4.                 startTime = millis();
  5.                 timerRunning = 1;
  6.         }
  7.         if (timerRunning == 1 && digitalRead(button) == HIGH) { // timer running, button released
  8.                 timerRunning = 0;
  9.                 endTime = millis();
  10.         }
  11.         duration = endTime - startTime;
  12.         int speed = (4000 / duration);
  13.         Serial.print ("fordulatszám: "); Serial.print(speed ); Serial.print (" időtartam ");
  14.         Serial.println (duration);
  15.         sevseg.setNumber(speed );
  16.  
  17.         sevseg.refreshDisplay();
  18.         if(duration > 2000) sevseg.setNumber(0);
  19.        
  20. }
(#) sargarigo válasza usane hozzászólására (») Márc 20, 2020 /
 
Szerintem volt ott egy "if" valamikor, és ottmaradt a zárójel. Nem azzal lesz a baj szerintem. Mindjárt belenézek én is.
(#) sargarigo válasza berez hozzászólására (») Márc 20, 2020 / 1
 
Elsőre egy észrevétel: A timerRunning-ról feltételezed hogy induláskor automatikusan nulla értéket vesz fel. Ha így is van, ez rossz gyakorlat, tessék kézzel inicializálni!
Következő: »»   606 / 850
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