opakovaný stisk tlačítka
opakovaný stisk tlačítka
Zdravím, trápím se s trivialitou.
Potřebuji do stávajícího programu dostat takovou maličkost. Program běží a dělá co má, to s tím nesouvisí.
Ale jakmile stisknu tlačítko 3x musí bliknout LED ( a současně s tím uložím nějakou proměnnou do EEPROM )
Pokud stisknu jen 2x nebo jen 1x nestane se nic. Víckrát to nevadí, akce proběhne po třetím stisku a uvolnění.
Interval je - stisk cca 300/300 ms plus mínus - myslím, že se to dá 3x stisknout do 3 vteřin...
Potřebuji do stávajícího programu dostat takovou maličkost. Program běží a dělá co má, to s tím nesouvisí.
Ale jakmile stisknu tlačítko 3x musí bliknout LED ( a současně s tím uložím nějakou proměnnou do EEPROM )
Pokud stisknu jen 2x nebo jen 1x nestane se nic. Víckrát to nevadí, akce proběhne po třetím stisku a uvolnění.
Interval je - stisk cca 300/300 ms plus mínus - myslím, že se to dá 3x stisknout do 3 vteřin...
Re: opakovaný stisk tlačítka
Udělej si počítadlo stavu, každé stisknutí jej navýší o +1, každý interval beze stisku (např. 1000 ms) ho vynuluje.
Pokud je počítatdlo == 3, provedeš akci.
Budeš si tedy uchovávat millis() posledního stisku, pokud bude při dalším stisku miliis() - poslední větší než nastavená mez (např. těch 1000), bude počítadlo = 1.
Pokud je počítatdlo == 3, provedeš akci.
Budeš si tedy uchovávat millis() posledního stisku, pokud bude při dalším stisku miliis() - poslední větší než nastavená mez (např. těch 1000), bude počítadlo = 1.
Re: opakovaný stisk tlačítka
Asi to myslíš správně, ale já špatně chápu... nedaří se mi zajistit,
aby to počítání času začalo až s prvním stiskem tlačítka
aby to počítání času začalo až s prvním stiskem tlačítka
-
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: opakovaný stisk tlačítka
V momente prvého stisku si ulož čas millis() a k tomu už len doplníš danú logiku o počte stlačení a časového rámca od tohto času.
Re: opakovaný stisk tlačítka
Tak už mi to šlape, díky ! ale přeteče to !!! I když dám Long nebo Double, stejně by to někdy přeteklo...
Dá se millis() občas vynulovat?
Dá se millis() občas vynulovat?
Re: opakovaný stisk tlačítka
Není nutné zachytávat čas prvního stisku (i když je to taky možné), jednodušší je uchovávat čas posledního stisku a to je taky použitelné, zajímá Tě rozestup, pokud stisknu 2x a pak 5 vteřin nic, tak další stisk už je zase 1.
Jinak přeteče co? Millis() jednou za čas přeteče sám, o to se nemusíš nijak starat... Principiálně v tom problém není.
Jinak přeteče co? Millis() jednou za čas přeteče sám, o to se nemusíš nijak starat... Principiálně v tom problém není.
Re: opakovaný stisk tlačítka
počítadlo času v arduinu je definovalé jako uint32_t a přeteče jednou za cca 50dní. Vynulovat se nijak nedá (jedině provedením SW nebo HW resetu). Přetečení v tomhle případě řešit nemusíš, protože když to náhodou stiskneš v okamžiku přetečení, tak se ti ten druhý stisk zaregistruje, jako by od prvního uběhla moc dlouhá doba. Jinak, šance že se zrovna trefíš do toho okamžiku je asi stejná, jako vyhrát první pořadí ve sportce desetkrát za sebou
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 12 hostů