Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
A parancs vevő rész ugyanaz:
if (Serial.available() > 0) { commandChar = Serial.read(); rec = true; } if(rec== true){ rec = false; switch (commandChar){ case 'a': //csinal valamit delay(10); Serial.print('A'); break; ... A vezérlő kódja: if (Serial1.available() > 0) { rec=Serial1.read(); //Serial.println(rec); recbit=true; } if(recbit == true){ recbit = false; if(lastsend=='a' && rec == 'A'){ zummer1(); } else if(lastsend=='o' && rec == 'O'){ zummer1(); } ... Küldéskor elmentem egy globális válozóba a legutolsó küldött adatot: Serial1.print('o'); lastsend = 'o';
Nem írtam, hogy prellezik. Épp azt írtam, hogy nem prellezik. Az, hogy folyamatosan küldi a jelet, nem prellezés. Hallokal terveztem, de érintő szenzorok lesznek, így könnyebb. A prell mentesítés itt is meg van. A gombok, csak ideiglenesen vannak, amíg nincsenek szenzorok.
Elvileg megoldódott. Ha kész lesz letesztelem és ha minden OK, elküldöm a programot. Üdv: Tibi
GPRS segítségével szeretnék adatokat feltölteni egy SQL adatbázisba.
Adott a Pro Mini és egy Sim800. Ezekkel az AT parancsokkal lehet feltölteni az adatokat: AT+CGATT? AT+SAPBR=3,1,"CONTYPE","GPRS" AT+SAPBR=3,1,"APN","internet" AT+SAPBR=1,1 AT+HTTPINIT AT+HTTPPARA="URL","http://********.hu/write_data_s.php?data1=2.22&data2=3.33" AT+HTTPACTION=0 AT+HTTPREAD AT+HTTPTERM Csináltam egy softserial-os kis programot. A soros monitorra beírom (vagy bemásolom) a parancsokat sorban, majd továbbítom a SIM800 felé, minden szépen megy. Ha programból küldöm egymás után a parancsokat, akkor az AT+SAPBR=1,1 -nál folyton error-t dob. Emeletem a parancsok közti időt, de az sem segít. Mit rontok el? Hol van a kutya elásva?
A hozzászólás módosítva: Júl 13, 2019
Egy USB-UART modul segítségével hasonlítsd össze a két adatot, látni fogod mi a különbség a kettő között és már meg is lesz a hiba.
Lehet hiányzik neki valami init rész. Esetleg mint primitív hiba a SIM zárolt, vagy a szolgáltatónál nincs minden engedélyezve. Ha telefonba teszed a kártyát ott megy?
Szia!
Vedd ki az 1,1 utáni space-nek látszó karaktert. Lehet nem white space, hanem valami mássá konvertálódik a fordítóban. Illetve nem értem miért kell két soremelés kocsi vissza. A GSM.println() nem ezt teszi? Lehet tévedek csak egy tipp.
Köszönöm az ötletek, közben megoldódott a probléma.
#Bakman: jó öltet, de előbb megoldódott, mint hogy rávettem volna magam a modulozásra #proba: a parancsok ugyanazok, meg a sim kártya is, ezért ezeket a hibákat kizárnám. #KoblogPerGyok: Szinte minden példában a \r\n szerepel, nem tudom csak így jó e, de eddig mindig működött. A megoldás: Ne kérdezzétek miért van így, vagy miért csak így működik, nem tudom. A reset lábbal először kikapcsolom a SIM800-t, várok pár másodpercet ráresetelek, és működik. Ha csak sima resetet adok neki akkor nem.
Ami még eszembe jutott,
egyik lehet valamely egyébként bemeneti lábon tápfeszültséget kap kikapcsolás után is, így csak félhalott lesz. Így félálomból ébred. illetve a katalógus szerint a bemenetek jobban szeretnék a 2,8V-ot mint a 3,3-at. Ha a modul nem teljesen korrekt, a magasabb bemenő feszültségre is csinál hülyeséget. Némely modul eladó leteszi az esküt, hogy TTL szintű a modulja, de ez koránt sincs úgy, még a 3,3V is sok neki. A hozzászólás módosítva: Júl 14, 2019
Ezt nem teljesen értem. Ha van a bemenettel soros ellenállás, akkor ha az Arduino tápjánál nagyobb feszültség érkezik a bemenetre (egy diódányival nagyobb), akkor automatikusan a feszültség ott le lesz csökkentve, betáp+diódányi feszültségre. A soros ellenállást úgy kell megválasztani, hogy az Arduino tápja és az Arduino is kezelni tudja ezt a plusz áramot.
Használok szintillesztőt. 2,8 V-t kap a Sim. Jobb a békesség.
Soros ellenállás nem elég fesz osztó kell spi busra 5v to 3.3v pl (3k3, 1k8) lenti képnél..
plBővebben: Link
Mint írtam, nem 3,3V kell a bemenetekre hanem maximum 2,8V.
Kovidivi: Osztó kell, mert a soros ellenálláson nem folyik akkora áram, hogy kellő feszültség essen rajta. A lábakon befolyó áram pedig a belső referencia feszültség felé van elvezetve, a túlfeszültség ennek a potenciálját emeli. Nem az arduinót kell védeni ( az jól viseli soros ellenállással), hanem a sim800 modult. A hozzászólás módosítva: Júl 15, 2019
Mi a gond?
hibba kod: expected ';' before 'Serial'
Szerintem a 34. sor végén hiányzik a pontosvessző.
Mi a hiba: no matching function for call to 'Adafruit_BME280::readPressure(float&)'
Ma megjött az Arduino Due alaplap.
Az első tesztek után nagyon csalódott vagyok. Régen egy 100Mhz-es pentium 1-es elvitt a vállán egy egész oprendszert+ egy csomó audió programot. Ezzel a cuccal meg három szinusz függvényt nem lehet kiszámolni valós időben, 12biten és az értéküket a DAC-ra kiírni, pedig 84Mhz-en ketyeg, és nekem elég lenne 100nanoszekundumonként 6 számítás. 84000000/10000/6=1400. Tehát 1400 órajelciklus alatt kellene megoldania egy szinusz függvény értékszámítást. Persze velem is van a baj, nem igazán értem miért kell a színuszt radiánban számolni, számomra fokokban érthető 90-nél csúcs, 180-nál nulla, és így egy csomó konverzió, és double változók tömkelege akadályozza a teljesítményt... Eléggé elszomorodtam. Ha valaki tud jó bufferes megoldást a DAC kezeléséhez, ne kíméljen! Esetleg eladó, vagy olyan boardra cserélendő, ami ki tudja számolni ezeket valósidőben, és nem kell hozzá megvenni egy dsp fejlesztőeszközt 100ezerért. (Bocs de nagyon mérges vagyok, elcsesztem rá 8ezer Ft-ot ![]() A hozzászólás módosítva: Júl 17, 2019
Az megvan, hogy a Pentium egy CISC processzor koprocesszorral, ami a lebegőpontos számolásokat csinálja?
Ezzel szemben az Arduino magja egy RISC procin alapul, ráadásul az aritmetikai egysége sem bonyolult.
1/84000000=0.000000012=12ns
100/12~=8.3 ciklus Azert ennyibol nehez kihozni egy szinuszt... ![]() A hozzászólás módosítva: Júl 18, 2019
"nekem elég lenne 100nanoszekundumonként 6 számítás"
A 84 MHz-en ketyegő MCU 100 ns alatt legjobb esetben is csak 8,4 utasítást tud végrehajtani.
Ha át tudod írni a függvényt, hogy ne lebegőpontos számokkal számoljon, nagy mértékű gyorsulást fogsz elérni, tippem szerint legalább 4x gyorsabb lesz.
A sin fv-ed is optimalizálni kellene. Esetleg a beépített Arduino-s fv-t használod? Ha igen, az valószínűleg univerzálisra van megírva, rengeteg feltételrendszerrel, minden hibát megvizsgálva. Ezekre szerintem neked nincs szükséged. Összefoglalva, nem biztos, hogy a hardware a kevés (elképzelhető!), de lebegőpontos számítással, és egy optimalizálatlan fv-nyel ne akarj hiper-szuper sebességet elérni! A hozzászólás módosítva: Júl 18, 2019
Köszönöm mindenkinek, kidobálom a levegőpontos dolgokat belőle, lehet használok wavetábla értékeket, ennek ellenére gyenge ez a proci is sajnos...
Mivel a DAC-nak egész számokat kell küldeni, felesleges a lebegőpontos számokkal bűvészkedni. Szinusz előállításhoz meg használj táblázatot a lebegőpontos és lassú beépített függvény helyett. A másik lehetőség, hogy FPU-t is tartalmazó M4 procit használsz, pl. ezt.
Közben kipróbáltam az Audio.h függvénytárat és lehet megoldja a bufferelési problémákat. Most egyszerre már 7 háromszögjel szól különböző hangmagasságban+egy zajgenerátor.
A szinusz részt valahogy átgondolom még egyszer ez alapján indultam el: fm szintézis a ym2151-ben Ugye itt az fm modulációt egymásba ágyazott függvényekkel alakítják ki (elméletileg): két vezérlő operátornál: y = Sin(x1+Sin(x2)) három vezérlő operátornál: y = Sin(x1+Sin(x2+Sin(x3))) Itt az x1 határozza meg a vivőfrekvenciát, az x2, és x3 a modulációt. Számítógépen megírtam C#-ban remekül működik. Az eredeti Yamaha chip 7 MHz-en megcsinálja ezeket a számításokat, tehát mennie kell itt is, leegyszerűsítem amennyire tudom. Köszönök mindent!
Ha megnézed az általad belinkelt yamaha adatlapot, ott is látható, hogy nem számolja a szinuszt, hanem táblázatból olvassa ki. Abban is biztos vagyok, hogy lebegőpontos számokat sem használ.
Üdv!
Ha külső megszakítást használok, hall szenzor jelét figyelem, miért nem működik rendesen az I2C 1602-es kijelző?
Kód nélkül arra tippelek hogy elhasználtad az i2c kivezetését. Gondolom a te paneleden is duplán van kivezetve. Vagy sokáig vagy a megszakításban, ezekre gondolok.
Uno 2-es Pinen van a megszakítás. Az i2c A4-A5. Más nincs használatban egyelőre.
Arra gondolok nincs-e valami összeakadás, vagy kikötés, hogy nem lehet használni. A hozzászólás módosítva: Júl 18, 2019
|
Bejelentkezés
Hirdetés |