Megszakítás egy bizonyos idő letelte után
Megszakítás egy bizonyos idő letelte után
Meg lehet-e oldani Arduino alatt azt, hogy bármilyen gombnyomás esetén egy számláló nullázódik és a kijelző háttérvilágítása bekapcsol, majd egy megadott idő letelte után automatikusan generálódik egy megszakítás ami lekapcsolja. Tehát lehet-e timert megszakításként használni? Ha igen, akkor hogy? Erre azért van szükség, mert a gombnyomásokat megszakításként kezelem, megszakításban pedig egy delay(30000) nem lenne túl praktikus...
Re: Megszakítás egy bizonyos idő letelte után
Lassan a fórumon a teljes feladatodat megoldjuk. Ebből nem tanulsz, csak foltokat. Legközelebb valami javaslat, hogy ezt néztem ki, de valamiért nem értem/nem úgy megy ahogy szeretném. Ezt tettem eddig, és ez az eredmény... (Nem bántani akarlak, csak tapasztalat, hogy a foltokban levő tudás sokkal veszélyesebb bármi másnál. Később nehezebb tanulni és a foltokat is rosszabb összerakni.)
Használd az eltelt időt:
Timer-t nem illik erre pazarolni (abból mindig kevés van). Timer0: idő: millis(), Microseconds(), ...
Timer0,1,2: PWM (lábfüggő)
Timer1: servo
Használd az eltelt időt:
Kód: Egész kijelölése
most=millis();
ha millis()>= most+2000 {hatter lekapcsol}
Timer0,1,2: PWM (lábfüggő)
Timer1: servo
Re: Megszakítás egy bizonyos idő letelte után
Ebben van ilyen (timer-es megoldás), az lcd_timout körüli dolgokat nézd: https://github.com/dlaszlo/Aquarium/blo ... uarium.cpp
A display_timeout pedig a "főképernyőre" ugrásért felel egy bizonyos idő eltelte után.
A megszakítás nem "bizonyos" idő eltelte után van (pl 20 másodperc), hanem másodpercenként (a példa progiban negyen másdpercenként van a timer, mert mást is csinál), és egyszerűen csak visszaszámlál egy változót.
A változó kezdeti értéke annyi, ahány másodperc után le kell kapcsolni az lcd-t.
A főciklusban ha a változó elérte a 0-t, akkor lekapolja a progi az lcd-t.
Ha valami esemény van, akkor ott a program visszaállítja a változó értékét az eredetire, így újra kezdődik a visszaszámlálás, nem kapcsol le az LCD.
A millis() amit Róbert írt, az még egyszerűbb.
Üdv!
A display_timeout pedig a "főképernyőre" ugrásért felel egy bizonyos idő eltelte után.
A megszakítás nem "bizonyos" idő eltelte után van (pl 20 másodperc), hanem másodpercenként (a példa progiban negyen másdpercenként van a timer, mert mást is csinál), és egyszerűen csak visszaszámlál egy változót.
A változó kezdeti értéke annyi, ahány másodperc után le kell kapcsolni az lcd-t.
A főciklusban ha a változó elérte a 0-t, akkor lekapolja a progi az lcd-t.
Ha valami esemény van, akkor ott a program visszaállítja a változó értékét az eredetire, így újra kezdődik a visszaszámlálás, nem kapcsol le az LCD.
A millis() amit Róbert írt, az még egyszerűbb.
Üdv!