single_led.h 880 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef _SINGLE_LED_H_
  2. #define _SINGLE_LED_H_
  3. #include "led.h"
  4. #include <driver/gpio.h>
  5. #include <led_strip.h>
  6. #include <esp_timer.h>
  7. #include <atomic>
  8. #include <mutex>
  9. class SingleLed : public Led {
  10. public:
  11. SingleLed(gpio_num_t gpio);
  12. virtual ~SingleLed();
  13. void OnStateChanged() override;
  14. private:
  15. std::mutex mutex_;
  16. TaskHandle_t blink_task_ = nullptr;
  17. led_strip_handle_t led_strip_ = nullptr;
  18. uint8_t r_ = 0, g_ = 0, b_ = 0;
  19. int blink_counter_ = 0;
  20. int blink_interval_ms_ = 0;
  21. esp_timer_handle_t blink_timer_ = nullptr;
  22. void StartBlinkTask(int times, int interval_ms);
  23. void OnBlinkTimer();
  24. void BlinkOnce();
  25. void Blink(int times, int interval_ms);
  26. void StartContinuousBlink(int interval_ms);
  27. void TurnOn();
  28. void TurnOff();
  29. void SetColor(uint8_t r, uint8_t g, uint8_t b);
  30. };
  31. #endif // _SINGLE_LED_H_