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   378 / 854
(#) vargaf válasza RoliNyh hozzászólására (») Aug 21, 2017 /
 
A gmail címre.
(#) mateatek válasza mateatek hozzászólására (») Aug 21, 2017 /
 
Teljes a tanácstalanságom Arduino Micro ügyben. A példaprogram a következő. Két változót létrehozok. A setup-ban beállítom a kimeneteket. A loop-ban a sok felesleges for ciklussal időt húzok, és dolgoztatom a procit. Ez után lefuttatom a timerek beállítását. Majd megint időhúzás és timer beállítás. Az időhúzás azért kell, hogy kissé ritkábban állítsa a timereket és szkópon valamelyest követni tudjam. Olyan problémákba botlok, amit nem tudok hová tenni.
Ha a valtozo2 nevű változó int-ként van definiálva, akkor minden rendben, mindig szinkronban indulnak a timerek. (kis fázis ingadozással) Ha long-ként, akkor már a timer4 180 fokot hibádzik indulásnál, véletlen szerűen. A két csatolt videón látni. A kérdésem az, hogy mi ez? Értetlenül nézek.
Azt már nem is merem írni, hogy ha a sok for ciklus helyett delay()-t használok késleltetésnek, akkor is szétfut a szinkron.

  1. long valtozo1 = 0;
  2. int valtozo2 = 0;
  3.  
  4. void setup() {
  5.   pinMode(9, OUTPUT);
  6.   pinMode(5, OUTPUT);
  7.   pinMode(13, OUTPUT);
  8. }
  9. void loop() {
  10.   for (valtozo1 = 0; valtozo1 < 10000; valtozo1++) {
  11.     valtozo2 = 321 * 567 + valtozo1;
  12.   }
  13.   for (valtozo1 = 0; valtozo1 < 10000; valtozo1++) {
  14.     valtozo2 = 324 * 567 + valtozo1;
  15.   }
  16.   for (valtozo1 = 0; valtozo1 < 10000; valtozo1++) {
  17.     valtozo2 = 325 * 567 + valtozo1;
  18.   }
  19.   for (valtozo1 = 0; valtozo1 < 10000; valtozo1++) {
  20.     valtozo2 = 329 * 567 + valtozo1;
  21.   }
  22.   for (valtozo1 = 0; valtozo1 < 10000; valtozo1++) {
  23.     valtozo2 = 39 * 567 + valtozo1;
  24.   }
  25.   for (valtozo1 = 0; valtozo1 < 10000; valtozo1++) {
  26.     valtozo2 = 39 * 57 + valtozo1;
  27.   }
  28.   Timer();
  29. }
  30.  
  31. void Timer() {
  32.   TCCR1A = 0;
  33.   TCCR1B = 0;
  34.   TCCR3A = 0;
  35.   TCCR3B = 0;
  36.   TCCR4A = 0;
  37.   TCCR4B = 0;
  38.   TCCR4B = (1 << CS42);
  39.   TCCR4A = (0 << COM4A1) | (1 << COM4A0) | (0 << PWM4A);
  40.   OCR4C = 50;
  41.   OCR4A = 25;
  42.   TCNT4 = 0;
  43.   TCCR1A = _BV(WGM11) | _BV(COM1A1) | _BV(COM1A0);
  44.   TCCR1B = _BV(WGM13) | _BV(CS10) | _BV(WGM12);
  45.   ICR1   = 799;
  46.   OCR1A = 399;
  47.   TCNT1 = 300;
  48.   TCCR3A = _BV(WGM31) | _BV(COM3A1);
  49.   TCCR3B = _BV(WGM33) | _BV(CS30) | _BV(WGM32);
  50.   ICR3   = 799;
  51.   OCR3A = 399;
  52.   TCNT3 = 600;
  53. }
A hozzászólás módosítva: Aug 21, 2017
(#) Kovidivi válasza mateatek hozzászólására (») Aug 22, 2017 /
 
Ha teheted, Arduino nélkül próbáld ki a programod. Se bootloader, se Arduino IDE, használj mondjuk Atmel Studio-t, azt hiszem, Arduino-val fel lehet vele másik AVR-t programozni. Én is szívtam ezzel, a timer0-t akartam állítgatni, aztán mikor visszaírtam soros porton, hogt mi is lett beállítva, meglepődtem... Néhánt bit már be volt állítva (az Arduino tette). Lenulláztam előtte, így működött. Te is írasd vissza, mit sikerül és mi nem.
Szerintem túlcsordulásod van a várakozó ciklusban. Jézusom. 325x567 már maga 184000. Hogyan férne el int-ben? Aztán hozzáadsz meg 10000-ret. Majdnem 200000-rel számolsz, ide long kell, de a 325 és 567 elé is be kellene írnod ezt: (long), mert különben csak int-ként használja őket a fordító.
Delay helyett jó lett volna egy ciklus, ami 1-től 14000-ig számol, ebbe beágyazva egy ugyanilyen, és így tovább, ameddig akarod.
A hozzászólás módosítva: Aug 22, 2017
(#) mateatek válasza Kovidivi hozzászólására (») Aug 22, 2017 /
 
Tudom, hogy túlcsordul. De az nem is is igazán érdekes. A program részlet csak időhúzás. Fusidelay. Csak azt nem értem, hogy ha long változót használok, akkor miért nem megy a timer rendesen. A 0-ás timert hanyagolom most. A 4-est használom helyette. De valami nem oké. Mi köze van egy változónak a timerek helyes működéséhez. Ilyent én 328-nál és 2560-nál nem tapasztaltam. Bug, vagy ficsőr?
Az Atmel Studio sajnos nincsen Linuxra.
A hozzászólás módosítva: Aug 22, 2017
(#) Kovidivi válasza mateatek hozzászólására (») Aug 22, 2017 / 1
 
Ha pl. egy tömböt túlírsz, akkor felülírhatsz egy olyan memóriarészt, ami másik változóhoz tartozik. Változónál ilyenről nincs szó, de hibás az egész fusi delay-ed. Ki kell javítani. A timerek regisztereit visszaküldted soros porton? Leellenőrizted? Mindent küldj vissza, lehet, hogy az a regiszter is változtatva van Arduino által, amelyikre nem is gondolsz.
(#) mateatek válasza Kovidivi hozzászólására (») Aug 22, 2017 /
 
Köszönöm az ötletet. A regiszterek kiíratása tényleg érdekes dolgokat mutatott. A regiszterek tartalma kis értékben változik. Viszont, néha, véletlen szerűen a kitöltési tényező értékével változik meg. Ilyenkor fázist vált a jel. De néha úgy is fázist vált, hogy a regiszter tartalma szerint nem kellene neki fázist váltania.
Érdekes, hogy amikor a regiszterek szerint vált fázist a jel, akkor mindegyik timer fázist vált, így a szkópon nincsen változás.
Persze ezt úgy produkálja, hogy a fusi dolgokat száműztem. Helyette delayt használok.
Innen azt hiszem, hogy feladom.
(#) world-s válasza kapu48 hozzászólására (») Aug 22, 2017 /
 
Köszi!
Sajnos nem fogalmaztam elég jól meg a dolgot.
Sem c, sem cpp-t nem akartam írni.
Csak egy könyvtárban van mondjuk 2 db ino fájl.

Ha az egyikben írok egy függvényt, akkor tökéletesen az a másikból meg is hívható.
A gondol csak az, hogy ha az egyiken setup() és a loop()-on kívül deffiniálok egy változót, vagy objektumot, akkor csak abból az ino-ból hivatkozhatok rá, amiben le van írva. A másikból nem tudtam.

Vagy a két fájl összefűzésével lehet a gond (hogy később van deffiniálva) (Sajna olyat nem találtam, hogy én adhatnám meg, hogy melyiket és hol fűzze hozzá a másikhoz.), vagy valahogy ilyen esetben másként kellene hivatkozni a változókra.
Az az érdekes, hogy függvények esetén meg tökéletesen meg.

_2file.ino
  1. int i;
  2. void setup() {
  3.   // put your setup code here, to run once:
  4. i=a;
  5. }
  6.  
  7. void loop() {
  8.   // put your main code here, to run repeatedly:
  9. }


a1.ino
  1. int a=12;
A hozzászólás módosítva: Aug 22, 2017
(#) kapu48 válasza world-s hozzászólására (») Aug 22, 2017 /
 
De ino-ból csak 1 lehet! (az a főnök) A másiknak *.C-nek kel lennie.
És kel föléjük 1 *.h header is amiben publikussá teszed a függvényeidet, változóidat.
Hogy mindenűt látható legyen, ahova be #include-olod.

Ezt így kel csinálni, ahogy mutattam!
(#) world-s válasza kapu48 hozzászólására (») Aug 22, 2017 /
 
Köszi.
Azért gondoltam, hogy ino-ból is lehet több, mert mikor mondom, hogy új fájl neve, és csak egy nevet írok és nem teszem oda, hogy.h vagy .c, akkor alapban egy újabb .ino-t hoz létre, és még a függvények meg is hívhatók egymásból.
Csak ugye #include nem használható rájuk, és innentől csak részlegesen volt jó.

Amúgy azt próbáltam, hogy egy a.h hozok csak létre, és már akkor a változók és az értékek megadását is beette a fordító.
De akkor a szerkesztő hülyesége, hogy ha szó szerint csak egy nevet adok (amit kér), akkor olyan fájlt hoz létre ami nem is teljesen jó a fordítónak.

Köszi a segítséget.
A hozzászólás módosítva: Aug 22, 2017
(#) kapu48 válasza world-s hozzászólására (») Aug 22, 2017 /
 
Nem hülye, a fordító!

Csak kicsit butább, mint a megszokót átlag.
És nem kínál fel választási lehetőségeket. (És nem tudja kitalálni a gondolataidat!)
(#) berkesandor hozzászólása Aug 23, 2017 /
 
SIM800 térerő "nagyságát" szeretném elküldni SMS ben.
Elküldöm az AT paracsot, ezt kapom vissza:

+CSQ: 6,0

OK

Hogyan tudom ebből a stringből kivágni a : és , közti részt?
(#) kapu48 válasza berkesandor hozzászólására (») Aug 23, 2017 /
 
Itt 1 példa:
String Character Analysis

Válogas!
(#) berkesandor válasza berkesandor hozzászólására (») Aug 27, 2017 /
 
  1. GSM.available();                                                    
  2.    terero = GSM.signalQuality();
  3.    terero.trim();
  4.    Serial.println(terero);
  5.    byte kezd  = terero.indexOf(":");
  6.    byte veg  = terero.indexOf(",");
  7.    tererocut = terero.substring((kezd+1) ,veg);
  8.    tererocut.trim();
  9.    int szam = tererocut.toInt();
A hozzászólás módosítva: Aug 27, 2017
(#) berkesandor hozzászólása Aug 27, 2017 /
 
Kezd összeállni a projekt, de elakadtam megint.
Sleep-ben van az arduino, meg a SIM800 is.
SMS-t küldök rá, elindul az interrupt, mind a kettő "normál" módba kerül.
Utána ki szeretném olvasni a kapott SMS (az SMS kiolvasás és feldolgozás működik , ha nem interrup-ból megyek oda).
Miért nem működik interrupt után? (ez majdnem költői kérdés) Tapasztal e valaki hasonlót?
Hogyan tudok tesztelni SMS küldés nélkül?
(#) exabit hozzászólása Aug 27, 2017 /
 
Van egy EA W162-X3LW alfanumerikus LCD-m. A problémám vele az, hogy felcserélve írja ki a sorokat a képernyőre a beépített LiquidCrystal Library-vel. A HelloWorld példaprogramnál is. Az lcd.setCursor() nem segít, csak az oszlop értéknek engedelmeskedik. Tehát a HelloWorld példaprogramnál maradva, az első sorban jelenik meg a számláló, a másodikban a "hello, world!" felirat. Miért lehet ez?
(#) tomika1986 hozzászólása Aug 28, 2017 /
 
Sziasztok!
Azért nyitottam ezt a témát, mert egyáltalán nem találtam az oldalon olyan topicot, ami kifejezetten ezzel a vezérlővel foglalkozna. Adott egy speeduino nevű motorvezérlő platform, Arduino Mega alapokkal ( bővebben itt : https://speeduino.com/wiki/index.php/Speeduino ) . Rengeteg támogatott funkcióval és beállítással rendelkezik a kütyü. Én egy zárt hurkú vezérlést szeretnék megoldani, bosch lsu 4.2 szélessávú lambda szondával, viszont a rendszer csak keskeny sávú o2 szenzorokat kezel. Lehet ugyan kapni hozzá vezérlőt, viszont szívesebben építenék egyet ( http://www.wide-band.com/product-p/apsx_d1diy.htm ) . Elképzelésem az, hogy egy arduino nano kezelné ezt a szondát, és továbbítaná a jelet a motorvezérlőnek, viszont nem vagyok tisztában vele, hogy mit is kell valójában látni a motorvezérlőnek, és ezt miből tudom kinyerni, illetve leprogramozni, ebben szeretném a segítségeteket kérni.
(#) KoblogPerGyok válasza exabit hozzászólására (») Aug 28, 2017 /
 
Szia!

Egy linket tudsz küldeni a használt lib-ről?
(#) exabit válasza KoblogPerGyok hozzászólására (») Aug 28, 2017 /
 
Csatoltam a libraryt. Végül megoldottam úgy, hogy az lcd.Setcursor() paranccsal felcseréltem a két sort. Az lcd.Setcursor(0, 0) a második sor elejére tette a cursort, az lcd.Setcursor(0, 1) pedig az első sor elejére. (Az lcd.home() is a második elejére teszi a kurzort.) Így legalább működik, de értetlenül állok előtte.
(#) Bakman válasza exabit hozzászólására (») Aug 28, 2017 /
 
Annó én is használtam hasonló OLED kijelzőt, ott is volt hasonló tréfa. Rég volt, nem emlékszem pontosan de könnyen lehet, hogy a vezérlő nem 100 %-ig HD44780 kompatibilis, ezért eme eltérés. A könyvtár valószínűleg a szabvány HD44780 vezérlőhöz készült, azok mondhatni általánosak.
(#) pjg hozzászólása Aug 29, 2017 /
 
Csinált már valaki Arduinóval mikrohullámú sütő, vagy automata mosógép vezérlést? Esetleg látott ilyet a neten? Link is jó lenne. Köszi.
(#) Medve válasza pjg hozzászólására (») Aug 29, 2017 /
 
Én gondolkodtam egy mosógép vezérlésen, de a paraméterek beállítása miatt inkább az analóg módot választottam.
(#) pjg válasza Medve hozzászólására (») Aug 29, 2017 /
 
Én most egy drága, de döglött mikrósütő korszerűsítésén elmélkedem.
Végül is csak egy időzítő 0-30 percig és egy másik időzítő 30, vagy 60 másodperces aminél állítható a kitöltési idő. Pl. 50-50% ki-bekapcsolási idő a fél teljesítmény. Relés kimenet. A beállítás lehetne nyomógomb, vagy rotary encoder.
A hozzászólás módosítva: Aug 29, 2017
(#) Medve válasza pjg hozzászólására (») Aug 29, 2017 /
 
Könnyű ujjgyakorlat Csináld meg tálcásra, Mint a DVD lejátszót! hm?
A hozzászólás módosítva: Aug 29, 2017
(#) pjg válasza Medve hozzászólására (») Aug 29, 2017 /
 
Hogyan gondolod?
(#) hinar_ hozzászólása Aug 30, 2017 /
 
Sziasztok!

Az ARDUINO UNO eszközt szeretem volna összekötni a számító géppel, de nem működik. Amikor rákötöm az USB-re nem ismeri fel az eszközt. Próbáltam a frissíteni, de a windowt nem csinálja meg a driver frissítést. A serial usb2.0- át keres. Az operációs rendszer WIN 7. Kipróbáltam régebbi (1.06) és új Arduino (1.8) szoftware-rel.Próbáltam az Arduino program lévő driverek is telepíteni, de semmi. Érdekes mert az eszközt a program látja, de a kapcsolat az gép és az eszköz között nincs meg...

Mi lehet a hiba? Mit csináltam rosszul?
(#) berkesandor válasza hinar_ hozzászólására (») Aug 30, 2017 /
 
Driver: Bővebben: Link
Eszközkezelőben látod rendesen?
COM portot beállítottad?
(#) pjg válasza hinar_ hozzászólására (») Aug 30, 2017 /
 
Itt fölöttem sárga szalagban :"A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)" Látod?
(#) hinar_ válasza berkesandor hozzászólására (») Aug 30, 2017 /
 
kÖSZI...
Igen beállítottam az eszközkezelőt és a COM portot is...
A LED világít. Szóval áramot kap. A drivert telepítem...
(#) hinar_ válasza pjg hozzászólására (») Aug 30, 2017 /
 
Igen látom köszi
(#) ALI hozzászólása Aug 30, 2017 /
 
Sziasztok. Olyan gondom lenne vettem három lcd-t.
Kettő 20×4 egy pedig 16×2. Mind i2c modullal szerelve.
Nem bírok semmit ki íratni rájuk.
Eddig amiket vettem mind simán működött. Mega 2560-ra kötöttem őket.
Próbáltam több mega-val is eggyel sem megy.
Annyi, hogy a 20×4 első és harmadik sorra végig fekete.
Mi lehet a gond.
Köszönöm
Következő: »»   378 / 854
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