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   56 / 850
(#) Kovidivi válasza bbb hozzászólására (») Okt 28, 2014 /
 
De szerettem DOS alatt ▄█▀ ╚╦╩ ilyenekkel menüket létrehozni... Vagy inkább csak játszani.
(#) erdeidominik1999 hozzászólása Okt 28, 2014 /
 
Egyébként lcd-n hogyan lehet megcsinálni az ékezetes karaktereket? (nem karaktert létrehozni és lcd.write-tal kiírni, hanem, hogy simán beírhassam ékezetekkel a szöveget lcd.print-ben, és megcsinálja)
(#) holex válasza erdeidominik1999 hozzászólására (») Okt 28, 2014 /
 
\ jel aztán a karakter kódja 8-as számrendszerben.
(#) pepe1125 válasza Kovidivi hozzászólására (») Okt 29, 2014 /
 
Amint készen lesz a többi LED panel, akkor gondoltam egy fa lapot feketére fújok és kifúrok sok lyukat. De valami műanyag jobb lenne ami fekete. Ugye a neten látok ilyen LED mátrixokat, azon mind műanyag lap van, de amíg 1536 LED-nek kifúrom a lyukakat, megőszülök. Szóval ötlet még a tejüveget rakni elé... :S De ha van valakinek jobb ötlete akkor szívesen fogadom.
(#) Kovidivi válasza pepe1125 hozzászólására (») Okt 29, 2014 / 1
 
Én nem fúrnék lukat a LED-eknek, mert ezek a LED-ek kis szögben világítanak, ha jól láttam. Sokkal jobban átjön a kép, ha van egy felület, amiről kilép a fény, pl. tejüveg. Ha nincs a LED-ek előtt semmi, akkor szemből vakít, és nagyon világos. Kipróbálhatod, hogy a fal felé irányítod 1m-ről, és látni fogod a kis köröket, amiket a LED-ek világítanak, ezek át is fedik egymást.
Pl. itt 2-3 réteg bőrpauszt raktam a LED elé, pontosan lemértem, milyen távolságra kell lennie a LED-től. Nappal is meggyőző a fénye. Bővebben: Link Ezt nem én építettem: Bővebben: Link
A hozzászólás módosítva: Okt 29, 2014
(#) erdeidominik1999 válasza holex hozzászólására (») Okt 29, 2014 /
 
Ha megkérlek kicsit részleteznéd.
(#) pepe1125 válasza erdeidominik1999 hozzászólására (») Okt 29, 2014 /
 
lcd.print("Szövegben egy nulla: \060"); // gondolom erre gondolt.
(#) erdeidominik1999 válasza pepe1125 hozzászólására (») Okt 29, 2014 /
 
De az ékezetes karakterek definiálva vannak? Mert szerintem nincsenek. Akkor pedíg, ha nincsenek, honnan van kódjuk?
(#) pepe1125 válasza erdeidominik1999 hozzászólására (») Okt 29, 2014 /
 
Na akkor itt tartunk. Hát van a 16x2 szabványos LCD kijelzőnek RAM-ja, aminek az első pár bitje szabadon feltölthető 5*8 karakterrekkel.

Szerintem kattints ide és máris megtudhatod, valamint ki is próbálhatod.
(#) erdeidominik1999 válasza pepe1125 hozzászólására (») Okt 29, 2014 /
 
Köszi a választ! De ezt eddig is tudtam, de úgy hogyan lehetne ezt kivitelezni, hogy ne kelljen lcd.write(), hanem simán lcd.print()-ben is működjön. pl.: lcd.print("áé") és megcsinálja, vagy ha nem is így, de egyszerűbben, mint minden ékezetes karakterért egy lcd.write.
(#) pepe1125 válasza erdeidominik1999 hozzászólására (») Okt 30, 2014 /
 
De az lcd.print()-ben úgy hívhatod elő mondjuk az ékezeted, hogy csinálsz egy saját karaktert mondjuk a RAM 1. helyére, majd erre hivatkozol a szövegben a \001 -el.

  1. // Létrehoztam egy "á" betűt:
  2. byte aa[8] = {
  3.   B00010,
  4.   B00100,
  5.   B01110,
  6.   B00001,
  7.   B01111,
  8.   B10001,
  9.   B01111,
  10.   B00000
  11. };
  12.  
  13.   lcd.begin(16, 2);
  14.  
  15.   lcd.createChar(7, aa);   //Mentettem az "á" betűt a kijelző RAM-jának 7. memória területére.
  16.  
  17.   lcd.setCursor(0, 0);
  18.   lcd.print("Inicializ\007l\007s...");   // Kiíratom a kijelzőre hogy: Inicializálás...
  19.  
  20.  // Az ékezetet a szövegbe beírt nyolcas számrendszerben megadott értékkel hívom elő.
  21.   // Hogy most ehhez, milyen módon lehetne az "á" betűt beírva hozzárendelni a \007 értéket,    
  22.   // azt nemtudom, de ha valaki igen, segíthetne nekem is
(#) icserny válasza erdeidominik1999 hozzászólására (») Okt 30, 2014 /
 
C18 fordítónál én úgy oldottam meg, hogy a _H_USER stream számára írt _user_putc() függvénybe beleraktam az ékezetes karakterek átkódolását. A 0...7 közötti kimenő kódok a CGRAM-ban definiált karaterekre hivatkoznak, a 128 fölöttiek pedig a gyári karaktertáblára (pl. 0xEF az 'ö' betű). Bővebben: Link

  1. //-- LCD-re egy karaktert kiíró függvény a _H_USER stream számára
  2. void _user_putc(char c) {
  3.     switch(c) {
  4.             case 'á':  c = 0x00; break;
  5.             case 'é':  c = 0x01; break;
  6.             case 'í':  c = 0x02; break;
  7.             case 'ó':  c = 0x03; break;
  8.             case 'ú':  c = 0x04; break;
  9.             case 'ü':  c = 0x05; break;
  10.             case 'ű':  c = 0x06; break;
  11.             case 'ő':  c = 0x07; break;
  12.             case 'ö':  c = 0xEF; break;
  13.     }
  14.     lcd_write(c,1,1,1);
  15. }
(#) ISF79 hozzászólása Okt 30, 2014 /
 
Sziasztok!

Arduino leonardo pro micro, miután feltöltöttem rá a kódot,
a Windows ismeretlen USB eszközként kezeli.

A kód elég nagy (26,656 bytes of a 28,672 byte maximum) és 1000 sor.
Viszont maga a program teljesen alap, csak 1000 szó text fájlba írása egymás után.
Van még arra esély, hogy életet leheljek a modulba, felismertetni a Windowszal?

Ez a kód, a ... részről kitöröltem 998 sort, de ott csak random szavak vannak:
  1. int count = 0;
  2. //int button = 2;
  3. //int buttonState = 0;
  4.  
  5. void setup(){
  6.   //pinMode(button, INPUT);
  7.   Serial1.begin(9600);
  8.   Keyboard.begin();
  9.   delay(5000);
  10. }
  11.      
  12. void loop(){
  13.   //int buttonState = digitalRead(button);
  14.   //if (buttonState == HIGH){
  15.    
  16.   if (count <= 999){
  17.   char* msg[15];
  18. msg[0]="elsoszo";
  19. ... //innen kitörölt részben ismétlődik 998 alkalommal az előző sor, más szavakkal, sorszámozva
  20. msg[999]="utolsoszo";
  21.        Keyboard.print(msg[(count++)]);
  22.        Keyboard.press(0xB0);
  23.        Keyboard.releaseAll();
  24.        delay(500);
  25.        Keyboard.press(0xB0);
  26.        Keyboard.releaseAll();
  27.        delay(50);
  28.     //}
  29.   }
  30. }
(#) Kovidivi válasza ISF79 hozzászólására (») Okt 30, 2014 /
 
Szia. Az msg tömb a RAM-ban van tárolva? Az SRAM csak 2KB. Ha ennél nagyobb tömböt akartam lefoglalni, el sem indult a program. Esetleg malloc-kal foglalj le helyet, de akkor sem fogsz tudni 2KB-nál több adatot memóriában tárolni.
A hozzászólás módosítva: Okt 30, 2014
(#) Kovidivi hozzászólása Okt 30, 2014 /
 
Sziasztok!
Szeretném a timer1-et használni, hogy 10bit-es PWM jelet tudjak előállítani, a lehető legnagyobb frekvenciával.
Külön-külön találtam rá megoldást, egyik a pwmfrequency: Bővebben: Link, ezzel fel tudom húzni a frekvenciát 31250Hz-re, a másik pedig a timerone.h: Bővebben: Link, ezzel pedig elő tudok állítani 10bit-es PWM-et. Arra keresem a választ, hogy a timerone.h hogyan befolyásolja a frekvenciát? Sajnos szkópom és frekvenciamérőm nincs, hogy le tudjam mérni. Lehet készítenem kell egy frekvencia mérőt is... Köszönöm!
(#) ISF79 válasza Kovidivi hozzászólására (») Okt 30, 2014 /
 
Szia, hibát nem írt ki, simán feltöltötte a kódot.
Az a baj, hogy már ismeretlen USB eszközként kezeli a Windows és nem tudok vele mit kezdeni.
Lehet, hogy hülyeséget kérdezek, de nincs valami hard reset opció arduinonál?
(#) mikrokapcsolo válasza ISF79 hozzászólására (») Okt 30, 2014 /
 
Az arduinokon tudomásom szerint FTDI illesztő ic van. Mostanában volt egy olyan frissítésük, amivel a hamis csipeket egyszerűen tönkre tette. A frissítés a Windows pudate-tel jött le. Bővebben: Link Esetleg, a tied is áldozata lett.
(#) rmis válasza Kovidivi hozzászólására (») Okt 30, 2014 /
 
"a tx-et a tx-szel, rx-et az rx-szel összekötöm" - miért?
(#) rmis válasza ISF79 hozzászólására (») Okt 30, 2014 /
 
Ha FTDI van rajta, akkor végső esetben megpróbálhatod, hogy az IC 27-28-as lábát rövidre zárod (pl csavarhúzó) és úgy dugod be az USB-be...
(#) ISF79 válasza mikrokapcsolo hozzászólására (») Okt 30, 2014 /
 
Ez egy leonardo pro micro klón, MEGA32U4 IC-vel, nincs külön FTDI.
Biztos, hogy az 1000 soros kód nem tetszik neki, mert egy másik leo pro microval is így jártam
(#) erdeidominik1999 hozzászólása Okt 30, 2014 /
 
Sziasztok! Azt vettem észre, ha digitalRead()-et csinálok, de a a csatlakozót, amin csinálom a setup() részben kimenetre állítom, és a loop()-ba beteszek egy digitalWrite(LOW)-ot a csatira, akkor nem kell lehúzó ellenállás, mert nem lebeg a bemenet, de az olvasás működik jól, ez így működöképes megoldás, vagy van valami, amiért nem kéne használni?
(#) Kovidivi válasza rmis hozzászólására (») Okt 30, 2014 / 1
 
Mert fordítva nem ment... Komolyra fordítva a szót, az Usb-soros átalakítóra kötöm a minit, az unoval párhuzamosan. Így mindkettö megkapja az adatot, de csak a mini fogadja, és dolgozza fel, mert neki van címezve. Az uno mintha ott se lenne. Sokan írják, hogy kiveszik az Uno-ból az Atmega328-at, de ahogy tapasztaltam, teljesen felesleges.
(#) rmis válasza Kovidivi hozzászólására (») Okt 30, 2014 /
 
Köszi! Így már értem!
(#) pepe1125 válasza icserny hozzászólására (») Okt 30, 2014 /
 
Tetszik!

Látod ez eszembe se jutott

Köszi!
(#) pepe1125 válasza erdeidominik1999 hozzászólására (») Okt 30, 2014 /
 
digitalWrite(LOW) -> Kimenetet lehúzza a GND (0V) potenciálra. Max DC Current per I/O Pin ........... 40.0 mA

Ha most te erre a csatlakozóra csináltál egy digitalRead()-et, és le van húzva GND-re és még ehhez képest kapcsolsz magasabb potenciált, mondjuk (+5V -ot), mert gondolom ezt olvastatod be, akkor szerencsétlen kontrollerben lévő MOSFET-en fog az összes áram megindulni, amit nem igazán tolerál... Még szerencse, hogy építettek a kimeneti részre áramkorlátot, különben az ilyenektől már halott lenne sok mikrovezérlő.

Használd inkább a PULL UP -ot : pinMode(bemenet,INPUT_PULLUP);
Ennél csak néhány uA áram fog folyni és nem lebeg a bemeneted, hanem logikai 1 szintre húzza. Invertálni meg bármikor tudsz!
(#) pepe1125 válasza Kovidivi hozzászólására (») Okt 30, 2014 /
 
Tudomásom szerint 10 bites PWM módban nem lesz 31250Hz-nél nagyobb frekid.
Csak 8 BIT FAST PWM MÓDBAN = 62500Hz.

  1. For Arduino Uno, Nano, Micro Magician, Mini Driver, Lilly Pad and any other board using ATmega 8, 168 or 328
  2.  
  3. //---------------------------------------------- Set PWM frequency for D5 & D6 -------------------------------
  4.  
  5. //TCCR0B = TCCR0B & B11111000 | B00000001;    // set timer 0 divisor to     1 for PWM frequency of 62500.00 Hz
  6. //TCCR0B = TCCR0B & B11111000 | B00000010;    // set timer 0 divisor to     8 for PWM frequency of  7812.50 Hz
  7.   TCCR0B = TCCR0B & B11111000 | B00000011;    // set timer 0 divisor to    64 for PWM frequency of   976.56 Hz
  8. //TCCR0B = TCCR0B & B11111000 | B00000100;    // set timer 0 divisor to   256 for PWM frequency of   244.14 Hz
  9. //TCCR0B = TCCR0B & B11111000 | B00000101;    // set timer 0 divisor to  1024 for PWM frequency of    61.04 Hz
  10.  
  11.  
  12. //---------------------------------------------- Set PWM frequency for D9 & D10 ------------------------------
  13.  
  14. //TCCR1B = TCCR1B & B11111000 | B00000001;    // set timer 1 divisor to     1 for PWM frequency of 31372.55 Hz
  15. //TCCR1B = TCCR1B & B11111000 | B00000010;    // set timer 1 divisor to     8 for PWM frequency of  3921.16 Hz
  16.   TCCR1B = TCCR1B & B11111000 | B00000011;    // set timer 1 divisor to    64 for PWM frequency of   490.20 Hz
  17. //TCCR1B = TCCR1B & B11111000 | B00000100;    // set timer 1 divisor to   256 for PWM frequency of   122.55 Hz
  18. //TCCR1B = TCCR1B & B11111000 | B00000101;    // set timer 1 divisor to  1024 for PWM frequency of    30.64 Hz
  19.  
  20. //---------------------------------------------- Set PWM frequency for D3 & D11 ------------------------------
  21.  
  22. //TCCR2B = TCCR2B & B11111000 | B00000001;    // set timer 2 divisor to     1 for PWM frequency of 31372.55 Hz
  23. //TCCR2B = TCCR2B & B11111000 | B00000010;    // set timer 2 divisor to     8 for PWM frequency of  3921.16 Hz
  24. //TCCR2B = TCCR2B & B11111000 | B00000011;    // set timer 2 divisor to    32 for PWM frequency of   980.39 Hz
  25.   TCCR2B = TCCR2B & B11111000 | B00000100;    // set timer 2 divisor to    64 for PWM frequency of   490.20 Hz
  26. //TCCR2B = TCCR2B & B11111000 | B00000101;    // set timer 2 divisor to   128 for PWM frequency of   245.10 Hz
  27. //TCCR2B = TCCR2B & B11111000 | B00000110;    // set timer 2 divisor to   256 for PWM frequency of   122.55 Hz
  28. //TCCR2B = TCCR2B & B11111000 | B00000111;    // set timer 2 divisor to  1024 for PWM frequency of    30.64 Hz
(#) Kovidivi válasza pepe1125 hozzászólására (») Okt 31, 2014 /
 
Szia!
Köszönöm, nagyon szuper, amit küldtél, el is mentem!
Lemértem közben, 9-es lábon készítettem PWM jelet, ez 8bit-re konfigurálva 31250Hz, 9bit-tel ennek a fele, 10bit-tel pedig kb. 7800Hz. Nekem elég a 7800Hz is, 100k és 1µF RC taggal kapok 0.0016V ripple-t, ez mivel referencia, ezért a kimeneten ennek 4X-e van, ami bőven jó, a beállási idő pedig 0,23s 0->90%-ra, ez is megfelelő számomra. A timer0 és timer2 pedig 8bites, azoknál ennél nagyobb felbontást még nem olvastam, csak timer1-ről ír mindenki.
(#) TavIR-AVR válasza ISF79 hozzászólására (») Okt 31, 2014 /
 
A reset gombot megnyomkodod 5 másodpercenként. Ekkor csak a bootloader indul el és a Leonardo Boot COM portja jelenik meg.
A blink nevű SW az amit fel akarsz tölteni rá utána. A COM-ból a bootloader COM-ját választod ki.

Ha nem indul el a bootloader, akkor a klón áramkörödben a biztosítékbitek nem voltak jól beállítva és a bootlodert is felülírtad. Ekkor külső programozóval az ISP-n át kell újraírni a chipet.
(#) TavIR-AVR válasza mikrokapcsolo hozzászólására (») Okt 31, 2014 /
 
FTDI-s Arduino:
A korai változatok: Arduino, Arduino NG, Arduino Diecimila és Duemilanove valamint Arduino Mega 1280.
(#) ISF79 válasza TavIR-AVR hozzászólására (») Nov 1, 2014 /
 
Köszi!
Sikerült ezzel a módszerrel újra működésre bírni a leonardokat.
Következő: »»   56 / 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