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   156 / 863
(#) erdeidominik1999 hozzászólása Okt 6, 2015 /
 
Sziasztok! Egy arduinó és egy sim900-as közötti soros kommunikációval lenne gondom. Jelenleg ezt:
  1. while (Serial1.available() > 0){
  2.  
  3.         if(index2 < 100){
  4.             inChar = Serial1.read();
  5.             inData[index2] = inChar;
  6.             index2++;
  7.             inData[index2] = '\0';
  8.         }
  9.         Serial.println(inData);
  10.  
  11.     }

a kódot használom, de sokszor új sorba kerülnek karakterek, eltördeli a szöveget, és így nem tudja értelmezni a program többi része. Mi lehet itt a baj? Hogyan tudnám úgy megcsinálni, hogy C stringben legyen, és jól működjön? És még egy kérdés: arduinó due-n nincs software serial? Előre is köszi!
A hozzászólás módosítva: Okt 6, 2015
(#) jocoka hozzászólása Okt 6, 2015 /
 
Sziasztok
Kellene egy kis segítség Kínából vettem egy arduinot amin egy mega 2560-as avr van.
Az első program feltöltés az sikerült majd másnap egy másik programot akartam rátölteni mire egy ilyen hibát kaptam: avrdude:stk500v2_ReceiveMessage(): timeout.
Ez ha nem tévedek bootloader hiba,na külső programozóval ICSP csapokon felraktam rá egy loader programot ami az arduino könyvtárban volt utána ismét sikerült programozni elsőre de másodikra megint nem.
Majd mérgembe nyomtam neki egy reset gombot mire ismét felment a program.
Van valami ötletek hogy ez mitől lehet,ja és egyébként a loader betöltése után a 13-led villog egyenletesen azt nem tudom hogy hiba-e.
De az is lehet hogy rosszul töltöttem fel a loadert.
Ezekben kérnék egy kis segítséget előre is köszönöm.
(#) TavIR-AVR válasza jocoka hozzászólására (») Okt 7, 2015 / 1
 
Bootreset bit nincs bekapcsolva és/vagy bootloader méret nem 4kbyte-ra állított.
(#) jocoka válasza TavIR-AVR hozzászólására (») Okt 8, 2015 /
 
Szia!
Bocs hogy csak most írok de sokat melózók és későn érek haza.
Na megnéztem a dolgokat és át állítottam most minden oké köszönöm szépen a segítséget.
Ha esetleg lesz még valami gondom remélem nem baj ha kereslek.
Köszönöm még egyszer.
Üdv.
(#) jocoka válasza jocoka hozzászólására (») Okt 8, 2015 /
 
Szia
Na ezt elkiabáltam 2 szer tudtam feltölteni utána megint nem működött.
Csatolok pár képet segítenél elmagyarázni hogy mit hova állítsak.
Előre is köszönöm.
Üdv.
(#) Kovidivi válasza jocoka hozzászólására (») Okt 8, 2015 /
 
A reset lábbal lesz a gond. Vagy túl rővid ideig kapja meg a földet, vagy nem is kapja meg, vagy van ott valami, ami miatt nem tudja lehúzni a programozód. Kipróbálhatod: indítsd el a feltöltést, és azonnal nyomd meg a reset gombot a panelen (ha van. Ha nincs, készíts egyet). Ha ilyenkor mindig sikeres a feltöltés, akkor ott a hiba. Nekem CP210X-vel volt gondom, a DTR-ről szerettem volna reset jelet levenni, próbáltam többféle kondival (100nF), de csak a 0603-as méretű kondi vált be, a fóliakondival nem resetelt. Ha lenne szkópom, ránézhettem volna a reset lábra. Lehet neked meg van a lehetőség.
(#) jocoka válasza Kovidivi hozzászólására (») Okt 9, 2015 /
 
Szia
Köszönöm a segítséget szkópal ránéztem ést tényleg az volt kicseréltem a kondit egy smd 1uf kerámiára és minden program felmegy rá nincs hiba semmi.
Köszönöm még egyszer.
Üdv.
(#) Kovidivi válasza jocoka hozzászólására (») Okt 9, 2015 /
 
Na ennek örülök!
Milyen kondi volt előtte? 100nF-ot szoktak ajánlani egyébként. Gyári nyákod van, vagy milyen? Te készítetted a soros porti programfeltöltést?
A hozzászólás módosítva: Okt 9, 2015
(#) ALI hozzászólása Okt 9, 2015 /
 
Sziasztok.
Azt hogy lehet megoldani, hogy csak akkor fusson a program ha meg nyomok egy gombot, illetve ha egy másikat akkor álljon meg?

Előre is köszi
(#) atus1981 hozzászólása Okt 9, 2015 /
 
Sziasztok!
Ha a főprogram tartalmaz egy feltételt és ha az teljesül és van a végrehajtásban egy "mellékprogram" betöltése, amiben van egy visszaszámláló, ami ha lejár, akkor visszatér a főprogramhoz folytatásban?
(#) jocoka válasza Kovidivi hozzászólására (») Okt 9, 2015 /
 
Szia
Igen gyári nyák Kínából van ebay csak aszt hitem hogy kifogtam egy kínai vacakot és kiderült hogy igen.A kondi benne 100nf volt azt cseréltem ki így lett jó eddig nem lehetett csak egy programot felrakni rá azt is csak a bootloader újra programozása után.De most remekül megy.
Nem gyári bootloader van rajta azt letöltöttem a nettről.
Még csak most kezdtem foglalkozni az arduinoval úgyhogy sok mindent még nem tudok róla.
A hozzászólás módosítva: Okt 9, 2015
(#) csatti2 válasza ALI hozzászólására (») Okt 10, 2015 /
 
Ez így túl általános. Pontosan mit is akarsz?
Ne menjen az elektronika? Készítesz egy egyszerű reteszelő áramkört egy mosfet és két gomb segítségével (meg ami még kell). Az egyik gombra áram alá helyezed, a másikkal pedig áramtalanítod.
Álljon meg a uC? Felprogramozhatod a sleep módot úgy, hogy az egyik gomb mint külső megszakítás felébressze a uC-t. A másikat érzékelve pedig elaludjon.
Csak ne fusson a vezérlőkód, de nem baj ha a uC azért megy közben? Figyeld az egyik gomb állapotát majd indíts el egy while ciklust, ami addig tart amíg le nem nyomják a másik gombot. Ez a legegyszerűbb.
(#) erdeidominik1999 hozzászólása Okt 10, 2015 /
 
Sziasztok! Olyan gondom lenne, hogy 12v-ot szeretnék mérni arduinóval, ez eddig működik is, de a táp közös lenne az ardunóéval, és így ha lejjebb megy a feszültség, a mérés pontatlan lesz, lehet ezzel valamit kezdeni? Előre is köszi!
(#) Kovidivi válasza erdeidominik1999 hozzászólására (») Okt 10, 2015 /
 
Használd a beépített 1.1V-os referenciát, és méretezd a 12V-on levő feszültségosztót ehhez. Így pontos marad a mérésed egy bizonzos szintig.
(#) erdeidominik1999 válasza Kovidivi hozzászólására (») Okt 10, 2015 /
 
Tehát akkor a feszültségosztó kimeneti ágán max 1.1v lehet? Akkor olyan ellenállás kéne, ha mondjuk 15v van akkor legyen 1.1, hogy felfelé is legyen puffer, ugye? Egyébként kb 9-14v ig tud ingadozni.
A hozzászólás módosítva: Okt 10, 2015
(#) ALI válasza csatti2 hozzászólására (») Okt 10, 2015 /
 
Szia. Igazad van ez így túl általános kérdés volt.
Arról lenne szó mérek hőmérsékletet ha a beállított hőmérséklet alá esik az érték akkor meg húz egy relét x ideig meghúzva marad majd elenged vár x ideig és ha nem emelkedik a hőmérséklet akkor kezdődik előröl.Azt szeretném megoldani, hogy mérje a hőmérsékletet de ha úgy gondolom meg tudjam állítani az időzítést vagy elindítani.
(#) Kovidivi válasza erdeidominik1999 hozzászólására (») Okt 10, 2015 /
 
Így gondoltam. 9V-ból nem tudsz stabil 5V-ot előállítani?
(#) koncsik03 hozzászólása Okt 10, 2015 /
 
Üdv!
Az interneten keresgélve találtam rá erre a kódra:
  1. int dataPin = 11;
  2. int latchPin = 8;
  3. int clockPin = 12;
  4.  
  5. int value = 0;
  6. int oldValue =0;
  7. int oldoldValue =0;
  8.  
  9. int treshValue = 25;
  10. float maxValue = 25;
  11.  
  12. void setup()
  13. {
  14.   pinMode(dataPin, OUTPUT);
  15.   pinMode(latchPin, OUTPUT);
  16.   pinMode(clockPin, OUTPUT);  
  17. }
  18.  
  19. void loop()
  20. {
  21.   int sensorValue = analogRead(A0);
  22.  
  23.   sensorValue=(sensorValue+(oldValue+oldoldValue)/2)/2;
  24.   if(sensorValue>maxValue)maxValue=sensorValue;
  25.  
  26.   writeOutput(switchFunc(sensorValue));
  27.  
  28.   oldoldValue=oldValue;
  29.  
  30.   oldValue=sensorValue;
  31.  
  32.   if(maxValue>treshValue)maxValue=0.999*maxValue;      
  33.    
  34. }
  35.  
  36. void writeOutput(int value)
  37. {
  38.     digitalWrite(latchPin, LOW);
  39.     shiftOut(dataPin, clockPin, MSBFIRST, value);
  40.     digitalWrite(latchPin, HIGH);    
  41. }
  42.  
  43. int switchFunc(int switchVar){
  44.  
  45. int switchVarMap=map(switchVar,0,maxValue,0,8);
  46.  
  47.  
  48. switch (switchVarMap) {
  49.    case 0:    
  50.     return B00000000;
  51.     break;
  52.    case 1:
  53.     return B00000001;
  54.     break;
  55.    case 2:  
  56.     return B00000011;
  57.     break;    
  58.    case 3:    
  59.     return B00000111;
  60.     break;  
  61.    case 4:  
  62.     return B00001111;
  63.     break;  
  64.    case 5:    
  65.     return B00011111;
  66.     break;    
  67.    case 6:    
  68.     return B00111111;
  69.     break;
  70.    case 7:  
  71.     return B01111111;
  72.     break;
  73.    case 8:  
  74.     return B11111111;
  75.     break;    
  76.   }
  77. }

Segítséget szeretnék kérni abban, hogy hogyan lehetne 16 ledesre bővíteni.
(#) csatti2 válasza ALI hozzászólására (») Okt 10, 2015 /
 
Ez esetben teljesen rossz volt a kérdésed.
A legjobban átlátható kódot úgy készítheted ha csinálsz egy állapot gépet (state machine). Ez sokkal bonyolultabbnak hangzik, mint amilyen.
Csinálsz mondjuk egy phase (fázis) nevű változót amely a különböző állapotokat tárolja:
pl.:
0 : rendszer kikapcsolva
1: fűtés ki
2: fűtés be

Ezután meghatározod a fázis átmeneteket (itt azokat a feltételeket adom meg, aminek hatására egy adott fázisból át kell váltani egy másikra):
0 -> 1 : bekapcs gomb
1,2 -> 0: kikapcs gomb
1 -> 2: T (hőmérséklet) < Tsp (hőmérséklet beállított érték) és t (időzítő értéke) > tsp1 (várakozási idő 1), vagy Fűtés be gomb
2 -> 1: t < tsp2 (várakozási idő 2), vagy Fűtés ki gomb

Utána pedig a relét akkor húzod meg, amikor a phase = 2.
A hozzászólás módosítva: Okt 10, 2015
(#) ALI válasza csatti2 hozzászólására (») Okt 10, 2015 /
 
Köszi ilyenre gondoltam.
(#) Bell válasza koncsik03 hozzászólására (») Okt 11, 2015 / 1
 
Ha megnézed a map(), és a shiftOut() függvényeket (Bővebben: Link), abból kiderül a megoldás.
A map-nál átírod a 8-at 16-ra, folytatod a case részt 16-ig 2 byte os értékkel, a shiftOut()-al 2 byte-ot íratsz ki és két shift regisztert használsz.
(#) erdeidominik1999 válasza Kovidivi hozzászólására (») Okt 11, 2015 /
 
Hogy érted, hogy stabil 5v-ot? Úgy van, hogy van egy 12v-os táp (pótméterrel egy kicsit még lehet húzni) onnan mennek fogyasztók, és onnan megy az arduinó is, csak van előtte egy 7809, és a táp feszültségét szeretném mérni, ami 9-14v között tud ingadozni.
(#) Kovidivi válasza erdeidominik1999 hozzászólására (») Okt 11, 2015 /
 
Nem értelek. Akkor az Arduino nem stabil 5V-ot kap?
Idézet:
„de a táp közös lenne az ardunóéval, és így ha lejjebb megy a feszültség, a mérés pontatlan lesz.
Ha a 9V-ból stabilizálsz 5V-ot az Arduinonak, akkor miért lenne pontatlan a feszültség mérés, ha a tápfeszültség 9-14 között változik?
A 7809 9V-jával táplálod meg az Arduino -t a RAW bemenete? Ha igen, akkor 7805-öt használj, és a VCC-n tápláld az Ardut.
A hozzászólás módosítva: Okt 11, 2015
(#) erdeidominik1999 válasza Kovidivi hozzászólására (») Okt 11, 2015 /
 
És szerinted úgy jó lesz?
(#) Kovidivi válasza erdeidominik1999 hozzászólására (») Okt 11, 2015 /
 
Eddig csak találgattam. Mondd el, nálad mi a helyzet, mert még fogalmam sincs.
(#) erdeidominik1999 válasza Kovidivi hozzászólására (») Okt 11, 2015 /
 
Szóval van egy 12v 15a-es ipari táp, amin ugye van pótméter a finomhangoláshoz, ez be van állítva kb. 12.2v-ra, ez cctv kamerákat hajt meg, viszont nappal nagyobb a feszültség mint éjszaka, mert éjszaka bekapcsolnak az ir ledek, és jócskán megnő az áramfelvétel, lemegy kb 11.9v ra. Ezt a feszültséget szeretném mérni, és az arduinó is erről a tápról van megtáplálva egy 7809-en keresztül, de azt mondtad, hogy inkább 7805 legyen az arduinó 5v bemenetére. Illetve az még nem biztos, de lehet, hogy szünetmentesítve lesz, és akkor a 12v-os akkuról lesz az arduinó megtáplálva.
(#) Kovidivi válasza erdeidominik1999 hozzászólására (») Okt 11, 2015 /
 
Ebből még nem következik, hogy: "de a táp közös lenne az ardunóéval, és így ha lejjebb megy a feszültség, a mérés pontatlan lesz." Miből gondolod, hogy a mérés pontatlan lesz?
(#) erdeidominik1999 válasza Kovidivi hozzászólására (») Okt 11, 2015 /
 
mert kipróbáltam, fogtam egy állítható tápot, rátettem egy ardut, direkt lcd-re irattam nem serialra, hogy az usb ki legyen húzva, és ha a kódban finomhangolom, hogy a 12v-on annyit mutasson mint a multiméter, akkor ha a tápot 9-re teszem 1-2 tized eltérés van a multimétertől.
(#) Kovidivi válasza erdeidominik1999 hozzászólására (») Okt 11, 2015 /
 
Értem.
Ha ekkora pontosságot akarsz, akkor első körben használj más referencia feszültséget, mint a tápfeszültség. Az 1V1-es Vref jó is lesz.
Azt írtad, hogy finomhangoltad a programot. Ha pontosan megméred a feszültség referenciát (pl. nálam 1.058V 1.100V helyett), és a feszültség osztó ellenállásokat is, és ezekkel az értékekkel számolsz, akkor nem kell semmi finomhangolás, mert pontos lesz.
A hozzászólás módosítva: Okt 11, 2015
(#) csatti2 válasza Kovidivi hozzászólására (») Okt 11, 2015 /
 
A 7805, illetve családja igazi őskövületek, amikbe a hobbisták beleszerettek miközben rengeteg alternatívájuk kapható manapság. Lehet persze használni őket, de referencia feszültségforrásnak tökéletesen alkalmatlanok, mivel már eleve elég nagy a szórásuk alapból is, de ez még a külső körülményektől változik is.
Tehát a pontos méréshez lehet használni a belső 1V1 referenciát (stabil, de alapból pontatlan, ki kell előtte mérni a uC-re jellemző feszültségét, erről már sokszor volt itt szó) vagy lehet használni külső referenciát is pl. a jó öreg TL431-et is, igény szerint akár ennek egy pontosabb verzióját is.
Következő: »»   156 / 863
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