LEDStatus.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <Arduino.h>
  2. #ifndef _LED_STATUS_H
  3. #define _LED_STATUS_H
  4. class LEDStatus {
  5. public:
  6. enum class LEDMode {
  7. Off,
  8. SlowToggle,
  9. FastToggle,
  10. SlowBlip,
  11. FastBlip,
  12. Flicker,
  13. On
  14. };
  15. LEDStatus(int8_t ledPin);
  16. void changePin(int8_t ledPin);
  17. void continuous(LEDMode mode);
  18. void continuous(uint16_t ledOffMs, uint16_t ledOnMs);
  19. void oneshot(LEDMode mode, uint8_t count = 1);
  20. void oneshot(uint16_t ledOffMs, uint16_t ledOnMs, uint8_t count = 1);
  21. void handle();
  22. private:
  23. void _modeToTime(LEDMode mode, uint16_t& ledOffMs, uint16_t& ledOnMs);
  24. uint8_t _pinState(uint8_t val);
  25. uint8_t _ledPin;
  26. bool _inverse;
  27. uint16_t _continuousOffMs = 1000;
  28. uint16_t _continuousOnMs = 0;
  29. bool _continuousCurrentlyOn = false;
  30. uint16_t _oneshotOffMs;
  31. uint16_t _oneshotOnMs;
  32. uint8_t _oneshotCountRemaining = 0;
  33. bool _oneshotCurrentlyOn = false;
  34. unsigned long _timer = 0;
  35. };
  36. #endif