Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Sziasztok! Miért lehet az, hogy ha van egy stringem, amit indexOf-fal vizsgálok, egyszer megtlálja a keresett szó, egyszer nem, tehát mondjuk bedugom az arduinót, megtalálja, kihúzom, újra bedugom és már nem, aztán az 5. újraindításra megint jó. Ez mitől lehet? Előre is köszi a segítséget!
Megtaláltam a hibát, egy kicsit más volt a gond, de nem tudom hogyan tudnám megoldani. A hiba: A serialon olvasott karaktereket hozzáfűzöm egy stringhez, vagyis helyesebben kettőhöz, és az egyik stringhez csak egy bizonyos hosszúságot fűz hozzá, de ha csak egyhez fűzöm, akkor jó, ez miért lehet?
Ilyen alapon csinálom, mi itt a hiba?
Sziasztok!
Egy tapasztalatot szeretnék megosztani DHT-11 szenzorral kapcsolatban. Van egy órám, ami nagyon ritkán egy bizonyos hibával megállt, de úgy, hogy az interruptok is tiltva vannak, a főprogram sem tud továbblépni egy bizonyos pontnál. Nem tudtam behatárolni, mert ritkán jött elő. A neten fellelhető könyvtár nem tudja lekezelni, ha a szenzor nem válaszol, és teljesen megakad. Jelenleg nincs bent szenzorom egyáltalán (fordított tápfeszültségtől megolvadt a burkolat is), és ha lefut a DHT függvény, azonnal megáll az óra. Egyébként a DHT-11-en található egy smd NTC vagy PTC, a nyák legfelső részén. Ez a hiba is kényszerít arra az útra, ahol magamnak írom meg az ilyen programrészeket.
Az Adafruit-féle DHT library tartalmaz védelmet timeout esetére. Ez nem elegendő?
Egy csere ajánlott lenne. Nálam így néz ki:
Sziasztok,
Szerintetek LM35 hasznalataval, ez:
A 2,3,4,5 sorok sorrendjét cserél fel...
Sziasztok! Egy elég érdekes problémával állok szemben, megpróbálom érthetően leírni. Van egy programom, amibem van egy webszerver, de a webszerveren van egy hitelesítés, és a client.read() karaktereit rögtön 2 db stringbe pakolom, az egyikből a hitelesítést indexOf-fozom, ha megtalálta nullázom, a másik pedig az adatokért felel. Ez eddig tökéletesen működik, viszon a programban van egy olyan is, hogy software serialon kommunikál egy másik arduinóval, az innen érkező jeleket is egy stringbe pakkolja, majd indexOf-fozza, viszont ha ezt a serial kommunikkációt beleteszem a programba, akkor a webszerver stringjét össze vissza pakkolgatja, és a hitelesítést sem találja meg benne, sokszor csak krix-kraxok vannak a stringben. Próbáltam, hogy a serial kommunnikációt nem teszem stringbe, hanem csak karakterekkel kommunikálok, úgy sem jó. Viszont az a fura, hogy ha csak 2-3 indexOf-fot teszek a serial kommunikáció stringjére, akkor működik, de ha többet, akkor a webszerver meghal. Mi lehet ennek az oka? Előre is nagyon köszönöm a segítséget, remélem sikerült érthetően leírnom.
A hibakeresésben neked édes keveset tudunk segíteni, mivel csak te látod a programodat!
Ha megvan minden részletnek a forráskódja? Nézd, át nem használsz e a 2 függvényben, egyforma nevű változókat? (Ilyen szokott pl. lenni az „i” index számláló, mindenki előszeretettel használja!) Jól vannak méretezve a tömbjeid? …
Nincs két egyforma változó, már néztem, nincs benne tömb.
példaképp, hol itt a tömb? Már 3 napja szenvedek vele, és nem működik, és az a fura, hogy ha csak 2-3 indexOf van, akkor jó, illetve ha mondjuk 10 indexOf van, de nincs végrehajtandó művelet az indexOf-fon belül, akkor is jó, én inkább valamim más jellegű hibára gondolok, talán a memória kevés vagy valami ilyesmi. Sőt azt is próbáltam, hogy ha amíg serial kommunikáció van, addig a webszerver nem megy, akkor sem jó. A hozzászólás módosítva: Ápr 5, 2015
Jó kérdés!
A „probastring” a „char”-ok tömbje. Amit ráadásul folyamatosan növelsz a hozzáadásokkal. ...
Olyan érdekes ½ magyar, ½ angol neve van: „sajatSerial”
Ez biztosan nem arduinos könyvtári függvény? Kíváncsi lennék a részleteire?
Így már ok? De egyébként csak példának írtam.
A szoftveres soros kommunikáció csak akkor fog működni, ha a adatküldés és fogadás előtt letiltod az interruptokat, mivel pontos időzítésre alapul... Utána engedélyezd is! Ez csak akkor igaz, ha delay-jel várakozik. Viszont ha beállítja az egyik timert, és interruptra küld adatot, akkor simán összeakad két könyvtár, azzal megint nem tudsz mit kezdeni... Nem Mega-t használsz? Annak ha jól tudom minimum 2 soros egysége van.
A hozzászólás módosítva: Ápr 6, 2015
Megát használok, de próbáltam hardwareSerialon is, ott sem jó, vagy ott is le kéne tiltani?
Meg még azt vettem észre, hogy alapon ha megnyitom a webes felületet, működik, a hitelesítést is elfogadja, az autofrissítésnél is jó, viszont ha megnyomok egy gombot, akkor a stringben kesze-kusza lesz és nem fogadja el a hitelesitést sem. És próbáltam így csak simán karakterekkel, amíg nincs művelet az if-en belül, addíg jó (tehát ami itt van), viszont ha valamit beleteszek, hogy csináljon, akkor már nem jó.
Nem jól csinálod!
A témáról bővebben itt: Convert serial.read() into a useable string using Arduino?
Hogy én eddig erre hogy nem találtam rá... Hihetetlen, működik, ezer hála és köszönet!
Akkor 1 (Értékeld a hozzászólást +!) jól esne!
Lehet, hogy hamar örültem, miután mindent visszpakoltam a progiba ugyan azt csinálja
Azt nem értem, hogy mi az összefüggés a webszerver és a soros kommunikáció között? Illetve, hogy az miért van, hogy ha a soros kommunikációnál az if-en belülre nem teszek műveletet, akkor jó, ha igen akkor nem. A hozzászólás módosítva: Ápr 6, 2015
Ha kicsit figyelmesebben olvastad volna a be linkelt oldal diskurzusait, akkor értenéd!
Itt a pontos időzítéseket a software végzi. Ezért nem csinálhatsz adás-vétel közben mást! Várd ki, míg bejön az egész string, utána dolgozd fel. És ami megszakítás zavarja a kommunikációt, azt is le kell tiltani! (Ezért ajánlott a minél rövidebb megszakítás rutinok használat!)
De ha nincs kommunikáció, csak alapjáraton megy, akkor sem jó a webszerver.
Az öreg Isten tudja, mit csinál a webszervered alapjáraton! Megvan a forráskódja?
Tiltsd le a SPI megszakítást, amíg fut a rutin:
Talán ez a baja?
Próbáltam ez alapján is, úgy sem jó, csatoltam a webszerver forrását, illetve egy képet, hogy ha a soros kommunikáció benne van a programban, akkor ez történik a webszerver stringjével. Ha a soros kommunikációt kihagyom a progiból, a webszerver tökéletes. Sőt egyszerűsítek a dolgon, nem kell semmi soros kommunikáció, ha a programba csak simán létrehozok egy stringet arra pakolgatok indexOf-fokat (nem adok a stringhez semmilyen értéket) akkor sem működik a webszerver.
A hozzászólás módosítva: Ápr 6, 2015
Nekem az:
SPI.h Ethernet.h SPI.cpp Ethernet.cpp kellenének!
Bocs!
Most volt időm foglalkozni vele: ezzel a megoldással elsőre, gond nélkül működik.
Köszönöm!
Egy lm35dz homerot szeretnek beolvasni szazad pontosaggal. Egy masik forumtemban kezdotott a beszelgetes. Javasoltak inkabb ide jojjek.
Rendben koszonom. Utana nezek, ez a kulso tap dolog remelem megoldja a satbil 5v problemat. Ha jol ertem 5V-n pontosabb merest kapok mint 1.1V-n. A nanonak lehet aref-t bekotni. A kerdesem meg az lenne az aref tapnak foldet hova kotom le? Az arduino nano foldjevel kene osszekossem? Koszonom elore is a valaszt. A hozzászólás módosítva: Ápr 9, 2015
Nem. Épp hogy az 1.1V-on kapsz pontosabban. Gondolj bele: az lm35-öd a keltetőben mondjuk 37°C-on van. Akkor kiad 370mV-ot. Ha 5V a referencia, akkor az adc 4.88mV pontossággal mér. Ha 1.1V a referencia akkor 1.07V pontossággal mér. Persze ezek elméleti számítások. LM35-el mértem már stabilan tized hőfokot. Szobahőmérsékleten nem ingadozott. Akkor nem csináltam méréseket, mert nem vol meg hozzá a megfelelő műszerezettségem.
|
Bejelentkezés
Hirdetés |