Так что бы если ардуина не видела нажатие кнопок в течение 10 секунд то делала что то(в моем случае уходила на главный экран но это не важно). Или куда копать что бы так сделать? Извините если глупый вопрос.
Вариантов много, можно так: Код (C++): #include <TimerOne.h> // --------------------------------- Timers -------------------------- #define TICKER_PERIOD 20 // ms период таймера #define SEC_COUNT_TO 1*(1000/TICKER_PERIOD) // 1 sec в единицах тикера #define PB_TO 10 // 10 sec в секундах uint8_t PB_TO_counter = 0; // Sec uint8_t PB_TO_Update_flag = 0; void Timer_Func(void) { static uint16_t Sec_Counter = SEC_COUNT_TO; // для универсальности с запасом Sec_Counter--; // здесь обрабатываем интервалы в тиках таймера if (Sec_Counter == 0) // 1 Sec counter сюда попадаем 1 раз в секунду { Sec_Counter = SEC_COUNT_TO; // перезапустим секундный счетчик if (PB_TO_counter) // если счетчик в нуле - ничего не делаем, таймер - не взведен { PB_TO_counter--; // если не в нуле - уменьшим на 1 if (PB_TO_counter==0) // если стал 0 PB_TO_Update_flag = 1; // взведем флаг о необходимости действия в loop() } } } // там где обрабатываем нажатия - делаем запуск или перезапуск таймера: PB_TO_counter = PB_TO; setup() { // ................................. // ................................. Timer1.initialize(1000L*(long)TICKER_PERIOD); Timer1.attachInterrupt(Timer_Func); // ................................. // ................................. } // в loop: loop() { // ................................. // ................................. if (PB_TO_Update_flag) { // переведем меню на начальный экран. PB_TO_Update_flag=0; // действие выполнили - скинем флаг } // ................................. // ................................. }