Files
OptoTest/OpticalChannelTester/Buttons.h
Razvalyaev c952c165f8 Добавлено энергосбережение для увеличения работы от аккума:
- через 60 сек экран выключается и есп уходит в сон
- слейв в ожидании мастера прослушивает не постоянно 20мс/100мс
2026-08-08 10:42:59 +03:00

20 lines
473 B
C++

#pragma once
#include <Arduino.h>
enum class ButtonEvent : uint8_t { NONE, SHORT, LONG, REPEAT };
class Button {
public:
explicit Button(uint8_t pin) : pin_(pin) {}
void begin();
ButtonEvent update(uint32_t nowMs);
void suppressUntilRelease();
bool pressed() const { return stable_; }
private:
uint8_t pin_;
bool raw_ = false, stable_ = false, longSent_ = false;
bool suppressed_ = false;
uint32_t changedAt_ = 0, pressedAt_ = 0, nextRepeat_ = 0;
};