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   66 / 854
(#) csabeszq válasza Kovidivi hozzászólására (») Dec 9, 2014 /
 
Én épp most szándékozom vásárolni Arduino Nano klónt, szándékosan CH340 chippel.

A helyzet az, hogy az FTDI nem nyerte meg a tetszésem. Ha hosszú kábelt használok, akkor nem ismeri fel az operációsrendszer és vagy 5-ször be kell dugni, mire elindul. Éppen ezért jelenleg inkább ferrit gyűrűs rövid kábeleket használok, mert ott csak minden harmadik csatlakoztatás sikertelen. Szinte az összes speckó arról ír, hogy az FTDI mennyire érzékeny a kábelek minőségére.

Miután nem kifejezetten jött be nekem ez a hatszor bedugom, mire elindul működés, ezért úgy döntöttem, hogy megnézném, mit tud a CH340-es vetélytársa.
(#) Kovidivi válasza csabeszq hozzászólására (») Dec 9, 2014 /
 
Vagy vegyél minit, és hozzá egy USB-soros átalakítót. Úgysem kell a végleges eszközre USB csatlakozó, bőven elég, ha csak meghagyod a lehetőséget, hogy később, a dobozt felnyitva frissítsd a programot.
(#) andykaaa válasza Kovidivi hozzászólására (») Dec 9, 2014 /
 
Sziasztok
Idézet:
„Eltárolod mondjuk az 1000-szeresét, kiíráskor meg az ezred részének az egészrészét írod ki (szam/1000), raksz egy pontot, utána meg a szam%1000-et használsz, ez pedig a maradék.”

Ezt probalom elerni most en is, igy (szazszorosaval):
  1. lcd.print(ertek/ 100);  lcd.print("," ); lcd.print(ertek% 100);

Az ertek az "int", a szazszorosa annak amit latni akarok, de amikor a tizedesvasszo utan nulla kovetkezik azt nem irja ki. Vagyis a tizedesvasszo utan egybol a szazad erteket irja, kihagyja a tized erteket, a nullat. UI: csak Proteusba modellezem.
Mi ebbe az estbe a teendo ?
A hozzászólás módosítva: Dec 9, 2014
(#) kisedison válasza csabeszq hozzászólására (») Dec 9, 2014 /
 
Jelentem a CH340 egy patent cucc. Nekem 5 méteres kínai USB hosszabbítón lóg (pusz a 40centis gyári kábel) és tökéletesen működik, egyszer nem volt olyan hogy ne ment volna elsőre.
(#) Kera_Will válasza andykaaa hozzászólására (») Dec 9, 2014 /
 
Lehet 10el is osztanod kellene majd százzal is a tizedes jegypont/vessző után.
pszeudó nyelven írva:

lcdre (változó/100) ; lcdre(","); lcdre(változó%10);lcdre(változó%100) ;
(#) Kera_Will válasza andykaaa hozzászólására (») Dec 9, 2014 /
 
Lehet 10el is osztanod kellene majd százzal is a tizedes jegypont/vessző után.
pszeudó nyelven írva:

lcdre (változó/100) ; lcdre(","); lcdre(változó%10);lcdre(változó%100) ;
(#) Kovidivi hozzászólása Dec 9, 2014 /
 
Sziasztok!
Egy tipp, ha Arduino alatt próbálgatjátok írogatni a timer-ek regisztereit, és nem jön a megszakítás valamiért: a regiszterek fel vannak töltve már különböző értékekkel, pl. a timer1 TCCR1A-nál be van állítva, hogy 255-ig számoljon csak, pedig ez egy 16bit-es timer... Plusz az előosztókkal is ugyanez van. Érdemes minden használandó regiszter aktuális értékét lekérni, és módosítani, amit kell.
(#) Kovidivi válasza Kovidivi hozzászólására (») Dec 9, 2014 /
 
Hogy valami értelme is legyen, itt a kód villogtatása timerrel, nem megszakításból! Csak simán kiolvasom a TCNT1 értékét, és ha 31100-nál nagyobb vagy egyenlő, akkor telt le kb. fél mp, átbillentem a LED-et, és nullázom a TCNT1-et. Mint látható, 325 - 455 órajelbe telik, míg a if, és minden parancs lefut a soros kommunikációval együtt.
Ja, ha valaki tudja, miért nem működik ez: PORTB ^= (1<<PB5); Arduino alatt, az szóljon! Köszönöm!
  1. #include <avr/io.h>
  2. void setup()
  3. {          
  4.   Serial.begin(9600);
  5.   Serial.println("TESZT");
  6.   Serial.println(TCCR1A,BIN);  
  7.   Serial.println(TCCR1B,BIN);
  8.   Serial.println(TCCR1C,BIN);
  9.   /*
  10. Serial.println(OCR1A);
  11.    Serial.println(OCR1B);
  12.    Serial.println(ICR1);
  13.    Serial.println(TIMSK1);
  14.    Serial.println(TIFR1);
  15.    Serial.println(GTCCR);*/
  16.   DDRB=0b00100000;  //= pinMode(13, OUTPUT);  
  17.   TCCR1A = 0;  //alapból 0b00000001 az erteke->max=00FF,
  18.   //0b00000000 ->max=FFFF
  19.   TCCR1B = (1<<CS12);    //1:256 prescaler
  20.  
  21.   Serial.println("     ***************  ");
  22.  
  23.   Serial.println(TCCR1A,BIN);  
  24.   Serial.println(TCCR1B,BIN);
  25.   Serial.println(TCCR1C,BIN);
  26.   /*
  27. Serial.println(OCR1A);
  28.    Serial.println(OCR1B);
  29.    Serial.println(ICR1);
  30.    Serial.println(TIMSK1);
  31.    Serial.println(TIFR1);
  32.    Serial.println(GTCCR);*/
  33. }
  34.  
  35. void loop() {
  36.   if(TCNT1 >= 31100){      //Our pre-calculated timer count
  37.     digitalWrite(13,!digitalRead(13));  //= PORTB ^= (1<<PB5);    //Toggle the led state
  38.     TCNT1 = 0;      //Reset the timer value
  39.   }
  40.   Serial.println(TCNT1);
  41. }
A hozzászólás módosítva: Dec 9, 2014
(#) andykaaa válasza Kera_Will hozzászólására (») Dec 10, 2014 /
 
Szerintem akkor majd 3 szamjegyet ir ki a tizedesvasszo utan.
(#) Kovidivi válasza Kovidivi hozzászólására (») Dec 10, 2014 /
 
Kiderült, hogy Atmega2560-nál, vagy melyiknél vannak a portok PBx-ként definiálva, Atmega328-nál PORTBx-et kell használni, és működik is a gyors kimenet billegtetés. Pl: PORTB ^= (1<<PORTB3); -ez pont a 13-as kimenetet állítja, ahol a beépített LED van.
Sikerült timer0-val és timer1-gyel is megszakítást létrehozni UNO-n, ez az oldal volt a kiinduló, nagyon hasznos, jól magyaráz: Bővebben: Link, és persze ez sem árt: Atmega328 PinMap. A kód pedig itt elérhető, a 11-es lábra kell egy LED-et kötni, és kész. A két LED egymástól függetlenül más frekvencián villog, csak megszakításból.
  1. #include <avr/io.h>
  2. volatile long szam=0;
  3. void setup()
  4. {          
  5.   DDRB=0b00101000;  //= pinMode(13, OUTPUT) és pinMode(11, OUTPUT)
  6.  
  7.  //////////////////timer1-gyel 0.5mp-es interruptot állítok be
  8.   TCCR1A = 0;  //alapból 0b00000001 az ertéke->max=00FF, 0b00000000 ->max=FFFF
  9.   OCR1A =  21240;  //sets the desired count to generate the x Hz signal
  10.   // 2Hz => OCR1A=31249;
  11.   TCCR1B = (1<<CS12)|(1<<WGM12);    //1:256 prescaler+ctc mode
  12.   TIMSK1=(1<<OCIE1A);
  13.  
  14.   /////////////////timer0-val kb. 1KHz-et állítok be:
  15.   TCCR0A = (1<<WGM01); //ctc mode
  16.   TCCR0B = (1<<CS01)|(1<<CS00); //64 prescaler
  17.   OCR0A = 249; // compare value
  18.   TIMSK0 = (1<<OCIE0A);  //interrupt enable
  19.  
  20.   sei();  //globalis megszakitas engedelyezese
  21. }
  22.  
  23. void loop()
  24. {
  25. //semmi...
  26. }
  27.  
  28. //LED villogtatashoz timer1
  29. ISR(TIMER1_COMPA_vect)
  30. {        //This is our interrupt service routine
  31.    PORTB ^= (1<<PORTB5); //Toggle led state
  32. }
  33.  
  34. //1kHz-hez timer0
  35. ISR(TIMER0_COMPA_vect)
  36. {
  37.   szam++;
  38.   if (szam>1000)
  39.   {
  40.    PORTB ^= (1<<PORTB3);
  41.   szam=0;
  42.   }
  43. }
A hozzászólás módosítva: Dec 10, 2014
(#) Koleus hozzászólása Dec 11, 2014 /
 
Sziasztok.
Belefutottam egy problémába, hátha már találkozott vele valaki...
Van egy ilyen lapkám, amit Nano-ként programoztam eddig. Valamelyik nap elővettem, hogy kipróbáljam egy ötletemet, de nem tudtam felprogramozni, mert a com port foglalt üzenetet kaptam. Először azt hittem, a Serial.write(adat)-tal blokkoltam le (folyamat küld valamit). Tavir/Robitól azt a tanácsot kaptam, hogy tartsam resetben mig el nem indul az új program feltöltése (Blink). Ez nem jött össze .
Frissitettem az FTDI drivert a legújabbra, nem hamisított chip (FTDIBUS/COMPORT/VID_0403/PID_6001), átállítottam másik com portra, leszedtem a drivert, gép ujraindít, újratelepítettem, de minden maradt a régiben. Szereztem egy USBasp-t + AVRDudess, bekopogtam a hátsó ajtón (ISP). Proci azonosító OK, fuse bitek OK. Letöröltem az egészet, újrairtam a bootloadert. Próba Arduino 1.0.5 meg 1.0.6 is, de az eredmény ugyanaz, com port foglalt. Ez mind Win7 x64-en történt.
Elhesegettem az asszonyt a másik géptől (jó öreg XP), driver telepít, Arduino kicsomagol, Blink felment minden gond nélkül.
Hogy tudnám kideríteni, ki ült rá a com portokra?
(#) Kera_Will válasza andykaaa hozzászólására (») Dec 11, 2014 /
 
Neked nem az kell?
X.tized század jelenjen meg? 2 tizedesre?
Miért jó neked a századot kiírni ?
Közte marad egy tized is amit lenyelsz .
(#) madazg77 hozzászólása Dec 11, 2014 /
 
Sziasztok.

Szeretnék segítséget kérni. Vettem egy klón mega 2560-as és egy ethernet w5100/sd shildet. A minta programokat szeretném kipróbálni. A soros monitoron mindig hiba üzenettel tér vissza. Elvileg a shild az ICSP tüskesoron kommunikál ami rendesen kapcsolódik a boardhoz. Próbáltam a sd-t tiltani és w5100 engedélyezni de semmi változás. Próbáltam USB-s táplálással és Vin-en is, de semmi. A shilden az RX LED villog és néha a TX is.
Van valakinek ötlete hogy hogyan tudnám életre kelteni?
A hozzászólás módosítva: Dec 11, 2014
(#) ronin75 válasza Koleus hozzászólására (») Dec 11, 2014 /
 
Szia,
Win eszközkezelőben nem tudsz ránézni? (Nekem minden COM portot le kellett tiltanom, csak az az egy maradhatott életben, amit a lapka használni akart. Állítólag különösen a Bluetooth eszközöket nem szereti, mármint azokat, amik a COM portot használják.)
Amúgy mik a tapasztalatok az általad használt lapkával?
(#) andykaaa válasza Kera_Will hozzászólására (») Dec 11, 2014 /
 
Hello.
Nem. Szóval a gond az hogy, pld. 1,07 helyett 1,7 -et ir ki. Elég nagy a különbség. Ha a dizedek értéke nulla csak akkor áll elö ez a gond. Köszi.
A hozzászólás módosítva: Dec 11, 2014
(#) Kera_Will válasza andykaaa hozzászólására (») Dec 11, 2014 /
 
Akkor van egy integer változód 0-(2^16)-1 32ezer akármeddig ábrázolhatsz vele.
Ezt szeretnéd 2 tizedesre ki írni ?
Az értéket 1000el szorzod majd visszafele törtrész egész rész függvényekkel ábrázolod.

pl.: 2456 az integer értéke 1000es szorzás után.
ezt 1000 egész részes függvény esetén 2 ad .
majd jön a tört részes függvények .
törtrész 100ra elvileg 4
törtrész 10re elvileg 5 a válasza.
Az utolsót meg már el is hagyhatod ...
(#) andykaaa válasza Kera_Will hozzászólására (») Dec 11, 2014 /
 
Igy elolvasni könnyű, de ábrázolni az LCD-n, itt a gond.
(#) Kera_Will válasza andykaaa hozzászólására (») Dec 11, 2014 /
 
Ha nem egyértelmű a programban akkor vezessél be másik 2 3 új változót.
Azokkal végezd el a műveletet arduino nyelvi szintaktikája szerint tört/egészrészre .
Aztán egymás után ki íratod .
pszeudó nyelven így festene:
egesz = valtozo egészrészfüggvény 1000
tized = változo törtrészfüggvény 10
szazad = változo törtrészfüggvény 100
lcdre ir egesz "," tized szazad

Direkt nem arduino utasításokat írok ... így talán jobban megérted mit kellene csinálni,
aztán az utasítások keresgetésével jobban megismered őket+ némi probléma megoldást is látsz ...
A hozzászólás módosítva: Dec 11, 2014
(#) andykaaa válasza Kera_Will hozzászólására (») Dec 11, 2014 /
 
Igy mar jobban hangzik, Köszi.
(#) Koleus válasza ronin75 hozzászólására (») Dec 11, 2014 /
 
Szia.
Megoldottam a problémát. Robitól kaptam még egy tippet (FT_Clean). Win eszközkezelő nem mondott semmi okosat, mert ha nincs bedugva semmi, szerinte nem is foglalja a portokat semmi, vagy ha csak a lapka van rajta, akkor azt jelezte ki. Furcsáltam, hogy a port megváltoztatásnál foglalt volt mind 1-17-ig. Guglival is ránéztem a com portok buherálására, és ezt találtam. Kiírja az összes valaha telepített com portot. Kilőtem az összeset, amiről nem tudtam hogy mi és FTDI drivert használ. Gép újrainditás után csatlakoztattam a lapkát, feltelepítette magát com 3-ra, és megy minden gond nélkül.
Maga a lapka elég kultúrális, nem volt vele semmi gondom.
(#) pepe1125 hozzászólása Dec 11, 2014 /
 
Sziasztok!

Esetleg van valakinek ilyen vagy ehhez hasonló TFT LCD kijelzője?

Most szereztem be egy Arduino DUE -t. És sajnos nem fordítja le azt a kódot ami az UNO-n simán működött. Van valakinek valami jó ötlete mit tegyek?!

Hogyan lehetne használhatóvá tenni?!
(#) andykaaa hozzászólása Dec 12, 2014 /
 
Na elertem hogy Proteus-ba mukszi, de a valosagba az LCD meg sem rebben. Meg a Hello W minta steckre sem. Egy ilyen LCD-m van.
mintakod:
  1. #include "Wire.h"
  2. #include "LiquidCrystal.h"
  3. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  4. void setup() {
  5.   lcd.begin(16, 2);
  6.   lcd.print("hello, world!"); }
  7. void loop() {
  8.   lcd.setCursor(0, 1);
  9.   lcd.print(millis()/1000); }


A bekotes a feltoltott kep szerint.
Mi lehet a gond ? Mit neztem el ?

Hello W.png
    
(#) Kovidivi válasza andykaaa hozzászólására (») Dec 12, 2014 /
 
A print-ek után mindig kell egy sor vége jel. Ez println esetén az ln utótagból adódóan megvan, de ha csak simán print-et használsz, akkor írj a végére \n-t. E nélkül nem fog megjelenni a szöveg.
Ezt próbáld ki, én is ezzel kezdtem: Bővebben: Link. A kontrasztot beállítottad egyáltalán? Háttérvilágítás megy?
A hozzászólás módosítva: Dec 12, 2014
(#) andykaaa válasza Kovidivi hozzászólására (») Dec 12, 2014 /
 
Háttér világítás direktbe van kotve, a kontrasztot pedig a 3,3v -ra akasztottam hirtelen.
Majd holnap vagy holnapután kiprobalom a tipped. Köszi.
(#) morfondi válasza andykaaa hozzászólására (») Dec 12, 2014 / 1
 
Hivatalosan nem 0-0.5 v között kell lennie? Nekem a GND-n volt jó. (kontraszt)
A hozzászólás módosítva: Dec 12, 2014
(#) Kovidivi válasza andykaaa hozzászólására (») Dec 12, 2014 /
 
Akkor már tudjuk is mi a baj. A kontrasztot nem fix feszültségre kell rakni, hanem egy potival be kell állítani, hogy látszódjanak a pixelek. Ha túl sok a kontraszt, minden pixel fekete, ha túl kevés, akkor mind fehér.
(#) andykaaa válasza morfondi hozzászólására (») Dec 12, 2014 /
 
Megtortenhet hogy ez is gond, habár elég sötét volt az lcd. Nem toom mikor esek meg neki, talan csak vasárnap. Jelzek majd. Koszonom a faradsagotokat.
A hozzászólás módosítva: Dec 12, 2014
(#) erdeidominik1999 hozzászólása Dec 12, 2014 /
 
Sziasztok! Megpróbálkoztam használni a tv out library-t, de akármilyen példaprogrammal próbálom, egy csomó hibát ír rá. Mit rontok el?
(#) morfondi válasza erdeidominik1999 hozzászólására (») Dec 12, 2014 /
 
De milyen hibákat? Másold ki legalább nagyjából.
(#) erdeidominik1999 válasza morfondi hozzászólására (») Dec 13, 2014 /
 
Ezeket:

Idézet:
„C:\Users\Dominik\Documents\Arduino\libraries\TVout\TVout.cpp: In member function 'void TVout::render_setup(uint8_t)':
C:\Users\Dominik\Documents\Arduino\libraries\TVout\TVout.cpp:730: error: '_VID_DDR' was not declared in this scope
C:\Users\Dominik\Documents\Arduino\libraries\TVout\TVout.cpp:730: error: '_VID_PIN' was not declared in this scope
C:\Users\Dominik\Documents\Arduino\libraries\TVout\TVout.cpp:731: error: '_SYNC_DDR' was not declared in this scope
C:\Users\Dominik\Documents\Arduino\libraries\TVout\TVout.cpp:731: error: '_SYNC_PIN' was not declared in this scope
C:\Users\Dominik\Documents\Arduino\libraries\TVout\TVout.cpp:732: error: '_VID_PORT' was not declared in this scope
C:\Users\Dominik\Documents\Arduino\libraries\TVout\TVout.cpp:733: error: '_SYNC_PORT' was not declared in this scope”
A hozzászólás módosítva: Dec 13, 2014

hibák.png
    
Következő: »»   66 / 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