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   669 / 846
(#) lobo67 válasza mateatek hozzászólására (») Dec 19, 2020 /
 
Átnéztem, de semmi érdekeset nem találtam benne. Ezt ki kell debugolni, ha nem jössz rá a bajára.
Miért szerepel benne a Wire.setClock(300000) sor? Ráadásul az lcd init után? Nem gondolom, hogy ez okozza a hibát, de nem látom értelmét. A 300k nem szokásos érték. Vagy 100, vagy 400.
De ismétlem, nem találom a hiba okát
(#) mateatek válasza lobo67 hozzászólására (») Dec 19, 2020 /
 
Tudom, hogy nem szokásos. LGT-nél, ahol 32 MHz-en megy a mag, ez a legnagyobb sebesség, amit biztonsággal tud az I2C-s LCD. Onnan maradt benne.
(#) rettung válasza lobo67 hozzászólására (») Dec 20, 2020 /
 
Nagyon koszonom a valaszodat, hasznosnak talaltam!
(#) morzsa15 hozzászólása Dec 20, 2020 /
 
Sziasztok!

Lehet nagyon amatőr kérdés. Van egy roomba 581 robot porszivom egy dokkoló projektet kezdtem el hozzá épiteni, elvileg a lent található kóddal működni-e kellene. Valaki át nézné nekem található-e benne hiba? 3 infra lednek kell a megfelelő működéshez, nekik pedig ezeket kellene küldeni (kódban is megtalálható):
161 0xA1 1010 0001 Force Field
164 0xA4 1010 1000 Green Buoy (meaning Starboard, or Right)
168 0xA8 1010 0100 Red Buoy (meaning Port, or Left)

Esetleg akinek valami szembe tünik miért nem működik a dolog nagyon hálás lennék érte napok óta szenvedek vele.Remélem érthetően sikerült leirni

Előre is nagyon szépen köszönöm a segitséget!

  1. //IR signals
  2. //161 0xA1  1010 0001 Force Field
  3. //164 0xA4  1010 1000 Green Buoy (meaning Starboard, or Right)
  4. //168 0xA8  1010 0100 Red Buoy (meaning Port, or Left)
  5. //162 0xA2  1010 0011 Virtual Wall field (working with Roomba 650)
  6. //
  7.  
  8. //Bit 0 - 1ms on, 3 ms off -___
  9. //Bit 1 - 3ms on, 1 ms of ---_
  10.  
  11. //PINS
  12. // 11 - to mosfet gate. I used 2N7000 mosfet. It switches LEDS ON/OFF at 38khz to generate carrier
  13. // 5,6,7 - to IR LEDs
  14. //
  15. // 5 - field LED
  16. // 6 - right LED (green buoy)
  17. // 7 - left LED (red buoy)
  18.  
  19.  
  20. int green[] = {1, 1, 1, 0   ,   1, 0, 0, 0 ,    1, 1, 1, 0   ,   1, 0, 0, 0 ,     1, 1, 1, 0  ,  1, 0, 0, 0 ,   1, 0, 0, 0 ,   1, 0, 0, 0  };
  21. int red[] =   {1, 1, 1, 0   ,   1, 0, 0, 0 ,    1, 1, 1, 0   ,   1, 0, 0, 0 ,     1, 0, 0, 0  ,  1, 1, 1, 0 ,   1, 0, 0, 0 ,   1, 0, 0, 0  };
  22. int field[] = {1, 1, 1, 0   ,   1, 0, 0, 0 ,    1, 1, 1, 0   ,   1, 0, 0, 0 ,     1, 0, 0, 0  ,  1, 0, 0, 0 ,   1, 1, 1, 0 ,   1, 1, 1, 0  }; //above one doesn't work with my roomba 650, but this one does
  23.  
  24.  
  25.  
  26. void setup() {
  27.   pinMode(11, OUTPUT);
  28.   pinMode(5, OUTPUT);
  29.   pinMode(6, OUTPUT);
  30.   pinMode(7, OUTPUT);
  31.  
  32.  
  33.   // set up Timer 2 to generate 38khz carrier needed for IR reciever
  34.   TCCR2A = _BV (COM2A0) | _BV(WGM21);  // CTC, toggle OC2A on Compare Match
  35.   TCCR2B = _BV (CS20);   // No prescaler
  36.   OCR2A =  209;          // compare A register value (210 * clock speed)
  37.   //  = 13.125 nS , so frequency is 1 / (2 * 13.125) = 38095
  38.  
  39.   DDRD = DDRD | B11111100;// this is safer as it sets pins 2 to 7 as outputs
  40.   // without changing the value of pins 0 & 1, which are RX & TX
  41.   delay(100);
  42. }
  43.   void loop() {
  44.     for (int i = 0; i < 32; i++)
  45.     {
  46.       byte b = 0;
  47.       if (green[i] == 1)  b = b |  B10000000;
  48.       if (red[i] == 1)    b = b |  B01000000;
  49.       if (field[i] == 1)  b = b |  B00100000;
  50.       PORTD = b;// sets digital pins 5,6,7
  51.     }
  52.     delayMicroseconds(1000);
  53.   }
A hozzászólás módosítva: Dec 20, 2020
(#) proli007 válasza morzsa15 hozzászólására (») Dec 20, 2020 /
 
Hello! Én nem tudom mit teszel és mit nem, de a 164 és 168 decimáli számnak a Hexa 0xA4 és 0xA8 megfelel, de a bináris értékei már fel vannak cserélve.
(#) morzsa15 válasza proli007 hozzászólására (») Dec 20, 2020 /
 
Szia!

Igazából az mindegy lenne, az csak hogy balra menjen a proszivó vagy jobbra. De ez semmit nem akar csinálni. Mintha nem is látná az infrát vagy nem megfelelően küldi vagy nem tudom kipróbáltam már minden lehetőséget szinte.
(#) sargarigo válasza morzsa15 hozzászólására (») Dec 20, 2020 /
 
Ledek egyáltalán villognak? Kamerával meg tudod nézni.
(#) morzsa15 válasza sargarigo hozzászólására (») Dec 20, 2020 /
 
Igen, néztem villognak. Esetleg az lehet probléma hogy tranzisztor-t használok mosfet helyett egy bc413-at?
A hozzászólás módosítva: Dec 20, 2020
(#) morzsa15 válasza sargarigo hozzászólására (») Dec 20, 2020 /
 
Vagy is inkább lehet hogy csak világit ha jobban meg nézem.
(#) sargarigo válasza morzsa15 hozzászólására (») Dec 20, 2020 /
 
Szkóp van? Azzal egzaktul meg tudod látni. Az ir ledeket amúgy nagy árammal szokás hajtani, nem tudom bírják-e a tranyók. Rajzot mutatsz esetleg?
A hozzászólás módosítva: Dec 20, 2020
(#) sdrlab válasza mateatek hozzászólására (») Dec 20, 2020 /
 
Most jutottam oda, hogy tüzetesebben megnézzem az enkóder kezelésed. És hogy miért nem működött a javaslatom...

Az eredeti kódodban megszakítást állítasz be mindkét csatornára. Ez felesleges, mert elegendő egyik jelre kezelni az állapotokat, nincs szükség mindkettő lekezelésére! Ennek ellenére érdekes, hogy nem tűnt fel neked, hogy minden második kattanás kimarad nálad! Ez nem katasztrofális, de az amúgy sem nagy lépésszámú jeladó felbontását kapásból megfelezed így....
Viszont, ha kikapcsolod a másik megszakítást, akkor az alábbi kód hibátlanul lekezeli a lépéseket:
  1. PCMSK2 = 0b00010000;
  2. ........
  3. A = (A << 1) + ((PIND & _BV(4)) == 0);
  4. A = (A << 1) + ((PIND & _BV(7)) == 0);
  5. if((A & 3) == 1 | (A & 3) == 2) lepes--;
  6. if((A & 3) == 0 | (A & 3) == 3) lepes++;


Így kattanásokra csak egyszer fut le megszakítás, mégsem hagy ki egyet sem...
(#) mateatek válasza sdrlab hozzászólására (») Dec 21, 2020 /
 
Kipróbáltam a kódodat. Egy kattanásra 2 értéket lép. De működik.
Nekem nem tűnt föl a kódomban, hogy csak minden második kattanásra lépne, mert minden kattanásra lépett. Egyet.
(#) mateatek válasza sdrlab hozzászólására (») Dec 21, 2020 /
 
  1. A = (A << 1) + ((PIND & _BV(2)) == 0);
  2. A = (A << 1) + ((PIND & _BV(3)) == 0);
  3. if((A & 3) == 1) lepes--;
  4. if((A & 3) == 0) lepes++;


Így már jó.
(#) mateatek válasza sdrlab hozzászólására (») Dec 21, 2020 /
 
De, hogy nehogy véletlenül sértődés legyen a dologból, egy dolgot leszögeznék. Ez a kód olcsó-pici kínai enkóderen fut.
Van drága, minőségibb enkóderem, azon a következő kódot használtam:

  1. ISR(PCINT2_vect) {
  2.    A = A + ((PIND & _BV (4)) == 0) << 1;
  3.    A = A + ((PIND & _BV (5)) == 0) << 1;
  4.    A = A << 2;
  5.    if(A == 136 || A == 16) lepes--;
  6.    if(A == 144 || A == 8) lepes++;
  7. }


Ez ugyan az lehet, mint a tiéd, amire azt írtam, hogy kettőt lép. Tehát nem mindegy az sem, hogy milyen enkóderre van írva. És igen, azon az enkóderen minden második lépést kihagy az én előző kódom.
Tehát van különbség enkóder és enkóder között. Ezt mondjuk már az elején tisztázhattuk volna.
(#) mateatek válasza mateatek hozzászólására (») Dec 21, 2020 /
 
Én a kisebbik, gagyi enkóderre írt kódot linkeltem be, míg te a másikra, a nagyobbra írtál és csodáltad hogy azon milyen ramaty az én kódom. Míg én a tiédet a kicsin próbáltam és én is csodálkoztam. Elbeszéltünk egymás mellett. Az előbb linkelt kódom a nagyobbikra van írva.

IMG_1156.JPG
    
(#) Bakman válasza mateatek hozzászólására (») Dec 21, 2020 /
 
Idézet:
„van különbség enkóder és enkóder között”
Az egyik Step/Dir kimenetű (elég egy megszakítás), a másik Gray kód szerint váltogatja a kimeneteit, utóbbihoz kell két portot figyelni.
(#) mateatek válasza Bakman hozzászólására (») Dec 21, 2020 /
 
Igen. Csak ezt az elején elfelejtettük tisztázni.
(#) sdrlab válasza mateatek hozzászólására (») Dec 21, 2020 /
 
Ez fura, finoman szólva is )))
Kiszedted a megszakításból a másik portláb figyelését??!
(#) sdrlab válasza Bakman hozzászólására (») Dec 21, 2020 /
 
Ezek az olcsó, kínai jeladók általában kivétel nélkül mind kétfázisú, IQ jelet adnak. Ahogy a drága optikai jeladók többsége is, a kivételeket leszámítva...
Az enyém is természetesen az olcsó, filléres, mechanikai jeladó volt, amin teszteltem az egészet! Fura, hogy a kódom, fele annyi megszakítással is kétszer annyi lépést produkált mateateknél )
A hozzászólás módosítva: Dec 21, 2020
(#) fleta hozzászólása Dec 22, 2020 /
 
Üdv az Uraknak.
Egy kis segítségre lenne szükségem. Arduinoval 12 Voltos akksi feszültségét szeretném figyelni és az eredményt wifin keresztül küldeném. A kérdés az lenne hogy milyen voltmérő modult kell hozzá vásárolnom. Előre is köszönöm a segítséget.
(#) tbarath válasza fleta hozzászólására (») Dec 22, 2020 /
 
Semmilyet. Leosztod egy feszültségosztóval, és azt figyeled ADC-vel. Ha nem elég az ADC felbontása, akkor vehetsz komolyabb modult, (pl. 16 bites ADS1115).
Arra érdemes figyelni, hogy az Arduino lábára semmiképp se kerüljön 5V-nál nagyobb feszültség.

Bár a wifi-hez mindenképp szükséged lesz másra, jellemzően ESP8266 vagy ESP32 modulokat szokás használni, és azok is tartalmaznak ADC-t, és lehet akár Arduino IDE-ben is programozni. Szóval akár az Arduino se kell oda. Itt arra kell figyelni, hogy ezek 3,3 Voltos eszközök, szóval itt így kell az osztót méretezni.
(#) vargham válasza tbarath hozzászólására (») Dec 22, 2020 / 1
 
Az ESP8266 ADC lábára 1 Voltnál magasabb feszültség nem kerülhet.
(#) fleta válasza tbarath hozzászólására (») Dec 22, 2020 /
 
Köszönöm a választ. Nem jól írtam nem wifivel hanem gsm modullal lesz küldve a jel.
(#) tbarath válasza vargham hozzászólására (») Dec 22, 2020 /
 
Igazad van, hülyeséget írtam, bocsánat
(#) szalamandra válasza vargham hozzászólására (») Dec 22, 2020 /
 
Szerintem az sem mindegy milyen modulról beszélünk, mert sokféle van Esp8266-tal szerelve, (pl. a nodemcu modulon van gyárilag feszültségosztó 3.3/1 V-ra).

image.jpeg
    
(#) lobo67 válasza fleta hozzászólására (») Dec 22, 2020 /
 
Ha GSM modullal lesz küldve, akkor nem kell feltétlenül WiFi-s modul, az ESP8266 ADC-je egyébként is marha pontatlan. Mivel általában a GSM modulok AT parancsokkal soros porton kommunikálnak, elvileg bármi jó lehet rá, de komplex a feladat, így valami méretesebb memóriával szerelt mikrokontroller kell.
Az még kérdés, hogy a GSM modullal interneten, vagy SMS-el akarsz adatot küldeni. Az SMS-hez jóval kevesebb erőforrás kell, az egy kisebb atmegás modullal is elmegy, adatkommunikációhoz én inkább valami STM32-es modult használnék. Annak az ADC-je is nagyon jó, és memória is van benne elég, az ára pedig szintén nagyon jó, már itthon is 1300 körül van. Vagy lehet ESP32-t is használni GSM modullal, az ADC pontossága pedig ha elég, akkor nincs több tennivaló, ha kevés, akkor egy külső ADC-vel. Ebből vannak GSM modullal egybeépített típusok is, például a Lilygo TTGO T-Call, ez már a prémium kategória ennek megfelelő áron.
A hozzászólás módosítva: Dec 22, 2020
(#) KoblogPerGyok válasza fleta hozzászólására (») Dec 22, 2020 /
 
Helló!

A GSM működhet, de fizetős. Azzal (is) az a gond, hogy mikor a hálózattal kommunikál (keres) akkor a GSM modul elég nagy áramtüskéket kér. Ez combosabb kondival ki lehet küszöbölni, de figyelni kell rá. Mondjuk ez a megoldás lehetővé teszi az automatikus felélesztést is. Lehet kell mellé egy RTC modul, hogy adott időközönként felébressze a rendszert és mérjen, küldje el az adatokat és mennyen vissza pihenni.

ESP is jó, de írták hogy csak 1 V kerülhet az adc-re. Ezt szerintem ki lehet kerülni egy SPI, vagy I2C feszmérő rákötésével.

Bár most épp nem találok olyan modult, csak sima feszosztót.
(#) lobo67 válasza KoblogPerGyok hozzászólására (») Dec 22, 2020 /
 
A mérendő feszültség értéke teljesen közömbös, osztóval bármit lehet mérni ésszerű határokon belül.
Az RTC sem szükséges, hacsak nem halál pontosan egyforma időközönként kell küldeni adatot. A legbutább mikrokontroller is tud időt mérni alvás közben.
A GSM modul valóban fogyaszt működés közben, de azért az sem veszélyes, a tüskék pedig 2A-esek 577us-ig, a gyártó 330µF-os kondenzátort javasol a táp lábra. Arról nem esett szó, hogy miről kell táplálni, lehet, hogy az egésszel nem is kell foglalkozni, mert rendelkezésre áll megfelelő mennyiségű áram.
A GSM ára pedig adottság, ha szükséges, fizetni kell érte. Mondjuk azt tudom biztosan, hogy jönnek az IoT SIM kártyák, amik kis adatmennyiségre nagyon olcsók lesznek.
(#) dB_Thunder hozzászólása Dec 22, 2020 /
 
Sziasztok!

Próbálok életre kelteni egy WS2813 led szalagot. Tehát két buszvezetékest!!
Próbáltam már a Neopixel, meg a fastled csomagok minta programjait. Egyik sem hozott eredményt a ledek sötétek. variáltam már az összes váltózót..
Arduino mega 2560 kínai klón, a blink példa felmegy és működik, tehát elvileg jó az alaplap, illetve pár éve másik tesztprojekbe üzemelt.
A ledszalag külön 5v tápról meg, de kipróbáltam, hogy táplálja az ardit is. (külön szűrőkondi nincs)
Szalag bekötése: két jelvezeték összekötve és 330ohmon keresztül ardi egyik digitális kimenetére kötve, LED - ardi GND összekötve.

Mi lehet a gond? Mire nem gondoltam esetleg? Valami beállítás? Fuse bit(Itt azt egyáltalán lehet álligatni?)? Vagy mit tudom én...

Valakinek bármilyen példaprogija a WS28 ledhez? Akár egyetlen pixelhet is!!

Holnap ránézek szkóppal a kimenetre van e ott jel, de ma már alvás...

Köszönöm előre is a válaszokat!!
(#) Bakman válasza dB_Thunder hozzászólására (») Dec 23, 2020 / 1
 
Idézet:
„két jelvezeték összekötve”
Nem jó. Itt látható a helyes bekötés: Bővebben: Link.
Következő: »»   669 / 846
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