Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Én a menüből kilépéskor mentem a beállított adatokat , de ha fix értékek és sűrűn cserélgetni kell őket akkor jobb megoldás lehet a tömb használata az eeprom helyett
A hozzászólás módosítva: Ápr 25, 2019
Csináltam 50 memóriabankot, abba el lehet menteni. Bekapcsoláskor jön egy alap, amivel amúgy is megvizsgálom, hogy ez első indítás (friss install) vagy volt már használatban. Ezt a korábban linkelt projektből állítottam be. Még várok az alkatrészek egy részére, hogy kipróbáljam
![]()
Az eeprommal én úgy csinálnám, hogy felprogramozáskor törölném a tartalmát (FF értékkel tölteném fel minden bájtját). Attól függően hogy hány bájt egy keret, fognám az első keretet, kiolvasnám hogy minden értéke FF-e. Ha igen, akkor az az első üres keret, lehet írni bele az adatot. Kiolvasáskor szintén megkeresném az utolsó még nem FF tartalmú keretet, és az a keresett adat. Így minden írás új helyre kerül, nem terheled az eeprom bájtjait. Amikor a tárterület végét eléred, akkor megint törlöd az egészet, kezded a legelején. Szerintem így soha nem éred el a bájtonkénti 100k írást.
![]() Főleg ha kombinálod azzal, hogy csak kikapcsoláskor írsz. Olvasni meg ugye tetszőlegesen sokszor lehet.
Ez az adat átadás/visszaadás fura néha
![]() ![]() ![]() ![]() ![]() más: BigNumbers könyvtárat használ valaki? A 4-es és a 7-es karaktereknél hibádzik és nem jövök rá, hogy mi.
A függvény visszatérésekor egyetlen értéket ad vissza. Ha azt közben átnevezed az a te dolgod, őt nem zavarja. Ha több értéket akarsz visszaadni, akkor globális változókon keresztül tudod megtenni.
Ilyenkor azért jó lenne ha példakódot mutatnál, mert lehet hogy csak elírtál valamit.
Ha már kitapasztaltad a jó beállításokat, azokból 4-5 fog kelleni maximum. De ha 10 akkor sem gond. Ezeket fixen beírod egy választható menübe, és nem kell az eepromírással vacakolni.
Mellesleg a setup()-ot miért akarod a loop()-ból hívni?
A setup dolga hogy egyszer induláskor elinduljon, aztán átadja a vezérlést a loop-nak. Aztan meg az már magától loop-ol. Ne erőszakold meg ![]()
Nem rossz!!!
Most első bekapcsoláskor keresi az utolsó bájton, hogy egy általam beállított érték van vagy nem, ha nem akkor nullákkal írom tele a memóriát, mert van ahol a 255 hibás (például be lehet állítani, hogy hány alkalommal menjen végig a hegesztésen és oda max 20-at állítottam be) Az 50 bank, az 50x5 bájt, ezeket ha egyszer megtölti valaki, már csak olvasni kell, ritka, hogy átírja (ha mégis az sem számottevő). A maradékkal megpróbálom amit írsz, nagyon tetszik az ötlet ![]() Köszönöm!!!
A BigNumbers helyet használhatod ezt is. Minden számot és karaktert megjelenít és nem hibádzik.
Ez nálam weldsetup(); Már megint hamarabb küldtem el, mint gondolkodtam az itteni elnevezésen!
Erre kérhetnék egy gyakorlatias linket? Ha nem értem, majd jövök
![]() Pár hete kezdtem az arduino-t, túl sok egyértelmű kérdést tennék fel, ami egy asztalnál ülve nem akkora gáz, mint itt ![]()
Hidd el, egyszerűbb ha mutatsz kódot, és az elnevezéseket mi már fejben átkonvertáljuk. De akkor nincs elírás. Az ördög többnyire a részletekbe bújik bele.
hát jelen pillanatban nem mutatnám meg a teljeset
![]() ![]()
Ezt megnézem gyorsan! A bignumbers csak számok és nekem elég lenne a hőmérséklet kijelzéshez, amikor épp túlmelegedett.
Globális a változó ha a függvényen kívül hozod létre, tipikusan a program elején hogy ott legyen egy rakáson, könnyen megtaláld. Ha a függvényből változtatod az értékét, azt mindenki látja.
Ha lokálisan vagyis a függvény zárójelei között hozod létre, akkor annak értéke a függvényből való kilépés során megsemmisül. Helyi vagy munka változóknak hívjuk őket, és olyan értékek tárolására használjuk amire máskor már nem lesz szükség. Mivel megsemmisül, memóriatakarékos, azért szeretjük őket.
Ez a bigfont nagyon jó! Ment érte a mancs!
![]()
Itt épp settingsnek hívom, de volt már majdnem abrakadabra is a neve, nehogy az legyen a baja
![]()
a // után van egy próbám, de volt void-al is és akkor sem ment. A return után a változó neve stimmelt minden esetben.
A „packet = encoderValue;”-t tettem ár mindenhová, a return előttig mindig megvan az értékem.
És melyik értéked veszik el? A packet? Hogyan akarod kiírni? Szerintem ott rontod el (látatlanban), hogy a lokálisan létrehozott packet változót akarod globálisan a függvények kívülről használni. De mivel az már megszűnt léteznim a fordító jelez hogy hiányzik. Jól sejtem?
Ha igen, akkor a függvény nevével próbáld kiírni! println(packetsetup(érték)); A return hatására a függvény felveszi a változó értékét!
Egyébként szerintem ez nem jó:
Idézet: „void packetsetup(packet)” Helyette inkább: Idézet: „void packetsetup(int packet)” Itt létrehozod a lokális változót, de adj neki típust is! És nem kell mindjárt áttenni egy value változóba, használhatod simán is. A hozzászólás módosítva: Ápr 25, 2019
Azért látod benne, mert próbáltam már mindent amit a neten találtam
![]() Az eddigieket az itteni segítségekkel és sok githubos projekt elemzésével értem el. Szeretek kész kódból tanulni, belenyúlni, elrontani majd megint rendbe tenni. Ezt köszönöm mindenkinek aki eddig is segített, közel a cél ![]() ![]() Idézet: „void packetsetup(packet)” Ez soha nem fog visszaadni semmit, mivel a függvény void-nak lett deklarálva. Próbáld így: Idézet: „int packetsetup(int packet)” Arduino return leírás A hozzászólás módosítva: Ápr 25, 2019
Visszavonom az LCD Bignummeres kérdésem. LCD-t cseréltem és ezzel megy. A bigfont is rossz volt a másikon. A régi egy zöld, tavir-os kijelző, az új amin megy egy kék. Nem tudtam, hogy van kölönbség
![]()
Úgy sem ment, itt valami mást néztem be szerintem, valahol valami apróság lesz amin átsiklok. Nemsoká összeáll a teljes kód a hibámmal (nem csak ezzel valószínűleg
![]() ![]()
Addig is tedd fel a függvény meghívásának környékét! pl. +-5 sor a kódból, ott lesz a bibi.
settings:
Benne hagytam minden szemetet is ![]() A hozzászólás módosítva: Ápr 25, 2019
Ez így tényleg hiányos!
![]() Kicsit jobban átnézve ezt a kódot néhány dolog egyből szemetszúrt. - A function változó hol van deklarálva? Gondolom global, mivel a settings()-ben értéket adsz neki. - Ha tényleg global változó a funktion, akkor gondoskodni kell a menudisplay() meghívása előtt annak kiürítéséről. Vagy innen ki kell vennia komment jelet. Idézet: (benne marad a button2.clicks értéke, így ha a button1.clicks-ből nem kap értéket (nem nyomták meg a button1-t), akkor ezek közül „// funktion = 0;” Idézet: lefuthat akármelyik az értéknek megfelelően.„if (funktion == 1) settings(); //{ digitalWrite(ledPin, HIGH); save();} // if (funktion == 1) serialmonitor(); if (funktion == 2) load(); if (funktion == 3) save(); ” - A packetsetup() függvény hiába ad vissza értéket, mivel a visszaadott értékkel nem csinálsz semmit. Így első blikkre ennyi. Többet a teljes kód ismeretében lehetne mondani. A hozzászólás módosítva: Ápr 25, 2019
A funktion=0 értékkel nullázom a gombnyomást és hol itt hol ott próbáltam, gyakorlatilag mindegy, hogy hol csak valahol az új lekérdezés előtt nullázni kell, különben megnyomottnak hiszi. Ez a clickbutton.h hozadéka, visszatehetném a button2.Update(); elé is, de mindenhonnan ezzel tér most vissza. Majd később visszateszem, gondolom kicsit kisebb lesz a kész program ha nem 100 helyen nullázom, csak jelenleg ezt is kipróbáltam, hogy lehet-e ez az ok. (az én hibakeresésem még sok helyen találgatáson alapszik, kezdő vagyok
![]() ![]() ![]()
De a legjobb lenne a funktion változót elhagyni. pl. így:
A hozzászólás módosítva: Ápr 25, 2019
|
Bejelentkezés
Hirdetés |