1234567891011121314151617181920212223242526272829303132333435363738 |
- #ifndef _SINGLE_LED_H_
- #define _SINGLE_LED_H_
- #include "led.h"
- #include <driver/gpio.h>
- #include <led_strip.h>
- #include <esp_timer.h>
- #include <atomic>
- #include <mutex>
- class SingleLed : public Led {
- public:
- SingleLed(gpio_num_t gpio);
- virtual ~SingleLed();
- void OnStateChanged() override;
- private:
- std::mutex mutex_;
- TaskHandle_t blink_task_ = nullptr;
- led_strip_handle_t led_strip_ = nullptr;
- uint8_t r_ = 0, g_ = 0, b_ = 0;
- int blink_counter_ = 0;
- int blink_interval_ms_ = 0;
- esp_timer_handle_t blink_timer_ = nullptr;
- void StartBlinkTask(int times, int interval_ms);
- void OnBlinkTimer();
- void BlinkOnce();
- void Blink(int times, int interval_ms);
- void StartContinuousBlink(int interval_ms);
- void TurnOn();
- void TurnOff();
- void SetColor(uint8_t r, uint8_t g, uint8_t b);
- };
- #endif // _SINGLE_LED_H_
|