Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Szerintem igy valahogy:
Ha ez sem megy, akkor:
if (5247489L == received){ Hátha valami másképpen kell az IDE-nek jelezni, hogy az ott egy long integer. És a másik hozzászólónak is: https://www.arduino.cc/reference/en/language/variables/constants/in...tants/ Hátha....
Próbáltam én már mindent, ha signed long long-ot használok, nem megy az osztás. Ez egyébként az uint64-gyel egyenértékű, 64bites int változó. Nincs vele gond, csak nem használható...
A hozzászólás módosítva: Nov 19, 2018
Szerintem az adatok küldésekor ez:
(mySwitch.available()) { sokáig igaz, mert nem csak az adatokat küldi, hanem a protokollt, meg egyebet is küld.
Előző hozzászólásában be linkelte mit olvas be: Bővebben: Link
Inkább az lehet probléma, hogy itt elakad: if (mySwitch.available()) { // Ha nem nyomja a gombot és nem érkezik semmi jel?
Hát a fene tudja, de... Szóval nem ismerem ezt a libet, de a próbakódból nekem az jött le, hogy a resetAva() mindenképp kell akkor, ha egyszer true-van jött vissza az available(). Szóval ez a kód szerintem ezért nem jó.
Más: annak a for ciklusnak nem nagyon látom ott az értelmét. Ha van mit kiolvasni és nem vagy a debounce miatt tiltott időben, akkor azt kiolvassa mindkét kód, a lastDebounceTime pedig csak elfogadott kód esetén kerül beállításra, szóval ebben sincs igazán különbség. Ami különbség az az, hogy az enyém eldobja a debounce időn belül míg a tiéd gyűjti a queue-ba fölöslegesen, szerintem fölöslegesen, sőt, károsan, mert ugye pont azért lenne debounce hogy a duplán jövő jelet elkerüljük. Már ha van queue, de szerintem kéne lennie. A hozzászólás módosítva: Nov 19, 2018
Igen, de az IDE-nek kell forszírozni a konstans érték megadásánál, hogy az long. Azért van benne L-a szám után. Szerintem az a feltétel minden esetben igaz volt.
if (5247489L == received){ //Ha nincs benne az L akkor hibásan értelmezi. Ki kellene próbálni.
Gondolom olyankor lesz 0 a getReceivedValue() értéke.
igen, de a belő if átengedi. Az blokkolná a nullákat, de nem teszi, mert nem jó a konstans megadása. Legalábbis szerintem. Puding próbája az evés.
Igaz, könnyebb lenne megérteni, ha itt lenne az asztalomon a távcsi!
Oh, no. Ha a signed long long az előjeles 64 bites int-et jelenti, akkor az nem uint64_t-vel egyenértékű, hanem int64_t-vel.
De mit találtam: Bővebben: Link Itt a #3-as komment. Lehet h ezt keresed...
Kétségkívü megvan a bája a távgyógyításnak
Értem amit mondasz!
Szerintem is ekkor 0, mert hibásan értelmezi, a küldött adat meg 0. Valóban erre gondolok amire te!
Ráadásul ez miatt:
sima L nem is elég az if-ben. UL kell.
Mivel minden szám belefér a long-ba, ezért a serial.print-nek se okoz gondot a kiírás. Egyébként programhiba miatt találtam a hibára, és csak utána debuggoltam ki serial.print-tel. De volt, amikor átkasztoltam signed long-gá a signed long long-ot, mivel belefér, és ezt írattam ki.
A hozzászólás módosítva: Nov 19, 2018
Igen én is így raktam bele. Sajnos valamiért ez sem az igazi ha megnyomom a gombot (folyamatosan) akkor folyamatosan tolja soros porton a HIGH szót . Valahogy resetelni kéne a received tartalmát de úgy sem jó :/ Azon agyaltam, hogy valamely számlálót beiktatni, hogy mondjuk leszámol 3-4 jelet X időn belül akkor értékelje ki (billentsen be egy bitet).
Persze én itt elmondtam mind szép és jó csak ezt megvalósítani nem tudom (illetve próbálkozok ) (Véletlenül sem azt szeretném, hogy megírja helyettem a programot bárki félre ne értsd!!!) Próbálkozni szabad úgyhogy még van agy kis időm ma is )
Várjatok, mert lemaradtam.
Most olvasgatom a HSZ-eket. (fel kell ám fognom mi történik és meg szeretném érteni is nem csak bemásolni a kódot ) Ha jól értem és a hozzászólásokból értem?! akkor a for ciklus leszámol 8 "ciklust és a 9-dik ciklusban kiolvassa?
Megpróbálom leírni ami eddig történt / működést.
EZ a verzió ha megnyomtam a power gombot akkor utána soros porton folyamatosan küldte a HIGH jelet mindaddig míg egy másik gombot meg nem nyomtam. Ez után beleraktam azt, hogy minden ciklus végén resetelje (mySwitch.resetAvailable(); ). Ahogy beleraktam a resetet, akkor már csak akkor küldte a HIGH jelet soros porton mikor nyomtam vagy nyomva tartottam a gombot (jelen esetben ismét ugye a power gombot). Amit küldtem képet ( ezt ) ezzel azt szerettem volna bemutatni, hogyha folyamatosan nyomom a gombot akkor ennyi "ciklusonként"?! jön a kód. Ekkor minden ciklusban resetelődik a received változó azt hiszem . Viszont ha az " if (mySwitch.available()) {" függvénybe beleteszem a debounce?! részt ( ezt:
Akkor csak abban az esetben fut le ha valamelyik gombot megnyomom. Remélem érthetően írtam le és nem vezettelek félre titeket. A segítségeket köszönöm szépen! Ui.: Kipróbáltam az utolsó verziót a for ciklusosat az arduino IDE hisztizett a break; sorral. gondoltam rossz helyen van zárojelet váltottam beszúrtam már mindenhova is, de mindig hisztizett a IDE szoftver ezért kitöröltem (lehet nem kellett volna, a lényeg ez is azt csinálja, hogy ha nyomom a gombot írja a HIGH szót ha nem nyomom akkor nem írja . For helyett inkább nem lenne jobb a while ciklus? mindjárt kipróbálom
While ciklus szerintem nem jó h@lyeséget írhattam
Az RC switch könyvtár egyik példaprogramja elvileg ez mindent megjelenít nem tudom ez segít-e valamit, vagy lehet ezt kellett volna már jóval előbb is
"hogy beleraktam a resetet, akkor már csak akkor küldte a HIGH jelet soros porton mikor nyomtam vagy nyomva tartottam a gombot (jelen esetben ismét ugye a power gombot)."
És ez a cél, nem? "Amit küldtem képet ( ezt ) ezzel azt szerettem volna bemutatni, hogyha folyamatosan nyomom a gombot akkor ennyi "ciklusonként"?! jön a kód. Ekkor minden ciklusban resetelődik a received változó azt hiszem ." Szerintem nem baj ha jön szemét, csak gondosan el kell dobni, nem kell vele foglalkozni. Mondjuk hasznos lenne mélyebben elmerülni a lib available() és resetAva() függvényeiben, vagy legalábbis a leírásában, mert gondolom valahol le van írva az, hogy hogyan működik, ha máshol nem akkor a kódban. De nekem erre most nincs időm... Idézet: „És ez a cél, nem?” Nem teljesen, mert ahogy nyomom a gombot folyamatosan küldi a HIGH jelet. Ahogy szeretném hogy működjön: Megnyomom vagy nyomva tartom a power gombot (vagy egy gombot a távirányítón) akkor egyszer küldje mondjuk a high jelet, majd ha ismételten megnyomom, vagy nyomva tartom ugyanazt a gombot a távirányítón akkor pedig resetelje azt (mondjuk LOW jelet küldjön). Itt most nem vált a ledstate jel / bit / függvény (nem tudom hogyan hívják). Kitaláltam most, hogy lehet, hogy "mySwitch.getReceivedDelay()," ezzel a jellel kéne valamit kezdeni ezt visszakerestem és amit az előző HSZ-ba küldtem képet ott milisec-ben van megadva, gondolom ennyi idő kell, hogy teljesen feldolgozza?! a kapott kódot. Ha ezzel nem tudok mit kezdeni akkor megpróbálkozok megfejteni amit írtál: Idézet: „hasznos lenne mélyebben elmerülni a lib available() és resetAva() függvényeiben, vagy legalábbis a leírásában, mert gondolom valahol le van írva az, hogy hogyan működik, ha máshol nem akkor a kódban.” Köszönöm a segítséget! A hozzászólás módosítva: Nov 20, 2018
Aham. Akkor ez?
Bocs hogy a saját kódomat pimpelgetem, de a tiedet baromira nem értem. Van benne reading, received, power, a fene tudja mi, amikor csak annyi lenne a lényeg, hogy egy válozót kellene változtatni.
No és akkor elkezdtem szórakozni, ilyen rádiós izé hiányában simán csak egy digit pint használva nyomógombnak (beépített pullup bekapcsolva, low-ra húzva gombnyomás). Az alábbi kód nem prelleg, akármilyen hosszan is nyomom egy kapcsolásnak veszi, és erre aktuális állapotnak megfelelően ki- vagy bekapcsol.
Még annyi, hogy ha jön egy junk jeled (ami a 0 gondolom, akkor azt valahol nagyon kívül el kellene dobni, közvetlen a readValue() után
Nos kipróbáltam (ezt ) nem teljesen értem a működést, mert minden ciklus elején reseteli a receivedLast jelet a végén meg a received-et írja bele szerintem ezért csinálja azt, hogy ha folyamatosan nyomom a gombot folyamatosan HIGH-LOW küldözgeti , próbáltam bele mókolni, de nem tudtam megoldani sehogy.
Aztán jött ez a kód ez viszont majdnem jó volt, csak az a baj, hogy 0-k is jönnek ugye amit írtál ezt valahogy nem tudtam megoldani sehogyan ezt sem, de rájöttem /rávilágítottatok, hogy a millis és a debounce delay-el kell szórakozni. Félre söpörtem mindent (na jó nem, mert ez az utolsó kód volt az alapja). Agyaltam, hogy ha folyamatosan jönne egy jel amíg nyomom és elmenne, ha már nincs nyomva a gomb akkor össze lehetne applikálni a programot. Hozzá is kezdtem és a végeredmény kb 3 órával később :
Azt hiszem így működik köszönöm szépen a segítséget!! Szerintem fogok még itt kérdezni Karácsony előtt hisz ez a projektem csak egy kis darabkája (egy gomb) a következő rész amikor a +- gombokat több program váltásához, vagy fényerő állításhoz fogom felhasználni, de ehhez segítséget még nem kérek majd ha elakadok A hozzászólás módosítva: Nov 20, 2018
Hajrá, csak így tovább! Csak csináld, ne add fel, csináld, agyalj rajta, és ha valami nem tiszta akkor kérdezz!
És örülök hogy tudtam segíteni
SIM800-al tudok követelenül hívni sim kártya telefonkönyvéből, vagy előbb kiolvasom a névjegyet, kivágom a számot, és azt tárcsázom?
Helló.
Összeraktam Conway's Game of life nevű "játékát" Arduinora. Elég csak feltölteni egy Uno-ra vagy Nano-ra, bekapcsolni a soros portot (115200-ra állítani), kicsit átméretezni az ablakot, és máris látszik a sejtek élete. 12mp-ként újrainicializálja a térképet. Úgy tervezem, hogy egy LCD-re implementálom, ott 16x80 pixelem van. Egy hiba viszont biztosan van a "hanyszomszed" függvényben, mert a bal alsó sarokban rosszul számol valamiért. Ha valaki meglátja a hibát, megköszönném! A játék így néz ki más platformon: Bővebben: Link
A hozzászólás módosítva: Nov 23, 2018
A 150. sort ki kell cserélni erre:
if ((xx<0)||(xx>=HATARX)||(yy<0)||(yy>=HATARY)) continue; // folytatjuk a következő for-ral. És tökéletesen fog működni! Egész cukin néz ki! Főleg ahogy animálódnak a sejtek, mozognak.
A hozzászólás módosítva: Nov 23, 2018
|
Bejelentkezés
Hirdetés |