ako vyriešiť v kóde ON/OFF

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
nichicon
Příspěvky: 16
Registrován: pát bře 25, 2022 3:38 pm

ako vyriešiť v kóde ON/OFF

Příspěvek od nichicon »

Ahoj,
mám dosť zložitý kód. Obsahuje OLED display, dialkové ovládanie, encoder, pár tlačítok a asi 20 vecí je zapojených na výstupe. Zaujímal by ma váš názor ako je najvhodnejšie riešiť ON/OFF pre toto zariadenia.

ON/OFF by malo ísť riešiť cez jedno tlačítko DO ale zároveň cez jedno HW tlačidlo. Z pohladu použivatela si od toho slubujem že pri vypnutí dojde k povypínaniu asi všetkých zhruba 20 vecí ktoré sú na výstupe MCU. Ale niekde bude potrebná časová postupnosť, teda nie všetko odrazu. Inak od toho očakávam samozrejme že zhasne display. Že to nebude reagovať na iné tlačítka než HW tlačidlo ON/OFF a tlačidlo ON/OFF na DO. Od zapnutia čakám tiež určitú časovú postupnosť nábehu obvodov na výstupe MCU. Okamžité rozsvietenie displeja. To je asi všetko.

Časom by som v nejakom bode asi riešil uloženie stavu do vnútornej pamäte ale zatial mi to netreba a asi by som to ešte neriešil.

Prosím vás, akým spôsobom by ste kód pre toto napísali? Byť tam len tlačidlo ON/OFF bez DO dal by som na začiatok kódu podmienku. Ale keďže je tam aj DO tak to takto lahko asi nepôjde. DO mám písané takto:

Kód: Vybrat vše



    if (irrecv.decode(&results))
    {
        if (results.value == 0XFFFFFFFF)
            results.value = key_value;
        switch (results.value)
        {

            // Postupnost DOWN - DO
        case 0xFFA25D:
            Serial.println("Stisknuto CH-");
            premenna--; // Počítadlo sa zníži o jednu jednotku

            if (premenna < 0)
            {
                premenna = 3; // Pocitadlo sa vynuluje navratom na LED 3
            }
            break;

Ak to niečomu pomôže tak sem môžem dať aj celý kód. Ale zatial asi bude stačiť keď mi niekto poradí akým spôsobom sa takéto veci programujú. Či to ide cez nejake podmienky, alebo nejaky power down, alebo nejake resetovanie MCU. Ja vôbec neviem. Ďakujem za pomoc!