Блокировка выполнения программы

VitaliyGrimm
Offline
Зарегистрирован: 29.01.2021

Доброго времени суток. Подскажите, пожалуйста, как организовать блокировку выполнения программы до ввода кодовой последовательности на кнопках.
Пример:
1. система всегда запитана.
2. Есть 4 кнопки подключенные к пинам d3-d6.
3. При нажатии на любую кнопку, после задержки 5 секунд загорается, допустим, красный диод на d7 с надписью система заблокирована.
4. Но если я последовательно нажму кнопки 3,4,2 (d5, d6, d4) в течении 5 сек, загорится диод на d8 и теперь будет доступен основной код, где к примеру нажатие этих кнопок уже будет выполнять определенный код(включение реле и т.п.)
5. Если я закончил работу с устройством то например зажав кнопку 4, допустим на 3 сек, основной код программы снова недоступен до ввода последовательности.

Спасибо за внимание.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017
bool  RunEnabled = false;

void CheckRunEnable(void){
    RunEnabled = (нужные условия соблюдены);   
}

loop(){
   CheckRunEnable();
   if (!RunEnabled) return;
   .
   .
   .
}

 

VitaliyGrimm
Offline
Зарегистрирован: 29.01.2021

Блин точно!!. Все гениальное просто. спасибо.