Ожидание нажатия кнопки в setup

AlexSan

✩✩✩✩✩✩✩
28 Янв 2019
4
0
Доброго времени суток, дамы и господа!

После многочисленных безуспешных проб встал вопрос:
Можно ли, и если да - то как, в функции setup реализовать ожидание нажатия кнопки:
если нажали - переходим в функцию для настройки и записи переменных в EEPROM для работы с ними в функции loop с завершением выполнения функции setup;
если не нажали - загрузка установленных переменных из EEPROM для работы с ними в функции loop (т.е. продолжение работы функции setup).

Т.е. более просто:
Ардуинка включились -> на экране приветствие и обратный отсчет времени (10 секунд) для нажатия клавиши (нажали - появилось меню редактирования настроек; не нажали - загружаются последние сохраненные настройки с оповещением об этом на экране) -> работа по программе.

Или есть другие пути реализации подобного функционала?
 

Fleshdeck

★★★✩✩✩✩
19 Янв 2019
349
174
Киев
в функции setup это не делается, смотри видео о прерываниях, используй библиотеку Gyverbutton, в ней есть пример с внешним прерыванием по кнопке
 

AlexSan

✩✩✩✩✩✩✩
28 Янв 2019
4
0
в функции setup это не делается, смотри видео о прерываниях, используй библиотеку Gyverbutton, в ней есть пример с внешним прерыванием по кнопке
Выполнение этой задачи должно происходить только один раз при подаче на ардуино питания. Я не утверждаю что она должна выполняться именно в setup.
По прерыванию будет вызываться то же самое меню что и при запуске - да. Как реализовать описанный алгоритм при запуске (или рестарту системы) - вот в чем вопрос)
 

Fleshdeck

★★★✩✩✩✩
19 Янв 2019
349
174
Киев
Можно использовать флажок для переключения режимов, а в setup написать флажок = нужный режим.
И в режиме ещё нужно установить таймер millis() для отсчёта времени, когда время заканчивается то переходим в другой режим, а если нажата кнопка то переходим в третий режим
 

Wan-Derer

★★★★★✩✩
Команда форума
31 Июл 2018
2,003
406
Москва
wan-derer.ru
Программа в setup ничем не отличается от программы в loop кроме исполнения: однократно/в цикле.
Соответственно, все способы, команды и пр. те же
 

AlexSan

✩✩✩✩✩✩✩
28 Янв 2019
4
0
Можно использовать флажок для переключения режимов, а в setup написать флажок = нужный режим.
И в режиме ещё нужно установить таймер millis() для отсчёта времени, когда время заканчивается то переходим в другой режим, а если нажата кнопка то переходим в третий режим
А можете написать пример как это реализовать?
 

KennyUA

★✩✩✩✩✩✩
13 Ноя 2018
59
18
Я делал так:
Если кнопка нажата - идем в луп, выполняем программу1 (у меня была настройка часов). Если при включении не нажата - выполняется основная программа. Но это требует перезагрузки устройства.