Взаимодействие пользователя с устройством осуществляется при помощи нажатия и удержания одной единственной кнопки управления, при этом загорается и моргает информационный светодиод. Время удержания кнопки управления определяет выбранный режим, доступны следующие режимы:
NO_PRESS 0: just deep sleep again; LED - turn off
SHORT_PRESS 1: run sending data; LED - turn on and blink once
LONG_PRESS 2: run setting mode (WiFi Manager); LED - turn on and blink twice
VERY_LONG_PRESS 3: run clear mode; LED - turn on and blink three times
Предустановлены следующие величина времени удержание кнопки управления для выбора соответствующего режима (ms):
#define BTN_SHORT_PRESS 1000
#define BTN_LONG_PRESS 5000
#define BTN_VERY_LONG_PRESS 15000
Алгоритм работы следующий - при нажатии и удержании кнопки управления загорается светодиод, при удержании достаточного времени для достижения режима например SHORT_PRESS информационный светодиод моргает один раз, при достижении времени удержания соответствующего режиму LONG_PRESS светодиод моргает дважды и т.д.
Во время активированного режима настройки (запущен WEB портал настройки), если нажать и удерживать кнопку управления, произойдет принудительное завершение работы портала настройки и устройство перейдет в режим глубокого сна. Время удерживания определено как:
#define BTN_LONG_PRESS 5000
Выбор режимов кнопкой управления изначально детектируется сопроцессором ULP, который в случае обнаружения нажатия кнопки будит основной процессор и передает ему дальнейшую обработку нажатия кнопки управления. Режим завершения настройки работает используя иной алгоритм. Во время работы основного процессора ULP игнорирует нажатие кнопки, а обработка нажатие осуществляется через прерывание:
attachInterrupt(btnSetup._pin, btnHandlerDown, ONHIGH);