This commit is contained in:
2025-10-04 11:49:53 +02:00
parent 697e6fd11f
commit c65050cd44
3 changed files with 145 additions and 72 deletions
+26 -16
View File
@@ -3,32 +3,42 @@
#include "hardware.pb.h"
#include <Adafruit_NeoPixel.h>
/**
* @class HardwareLed
* @brief Manages an LED strip on ESP8266 using Adafruit NeoPixel library.
* Supports animations defined by hardware_LedConfig (static, pulse, fade, flicker).
*/
class HardwareLed {
public:
using AnimationCallback = void (*)();
HardwareLed(uint8_t pin, uint8_t numPixels = 1);
void begin();
void end();
void update();
void update(); // Removed const
void set(const hardware_LedConfig& config);
void setAnimationCallback(AnimationCallback cb) { m_callback = cb; }
float estimateCurrent_mA() const;
private:
void applyStatic(const hardware_StaticParams& params);
void applyPulse(const hardware_PulseParams& params);
void applyFade(const hardware_FadeParams& params);
void applyFade(const hardware_FadeParams& params); // Removed const
void applyFlicker(const hardware_FlickerParams& params);
void setColor(uint32_t color, uint8_t brightness = 255);
uint32_t lerpColor(uint32_t color1, uint32_t color2, float t);
uint32_t lerpColor(uint32_t color1, uint32_t color2, float t) const;
Adafruit_NeoPixel _strip;
hardware_LedConfig _currentConfig;
unsigned long _startTime;
uint8_t _pulseState;
unsigned long _lastPulseTime;
uint8_t _fadeIndex;
unsigned long _lastFadeTime;
uint32_t _fadeCurrentColor;
uint32_t _fadeTargetColor;
float _fadeProgress;
unsigned long _fadeStartTime;
bool _isActive;
};
Adafruit_NeoPixel m_strip;
hardware_LedConfig m_currentConfig = hardware_LedConfig_init_default;
unsigned long m_startTime;
uint8_t m_pulseState;
unsigned long m_lastPulseTime;
uint8_t m_fadeIndex;
unsigned long m_lastFadeTime;
uint32_t m_fadeCurrentColor;
uint32_t m_fadeTargetColor;
float m_fadeProgress;
unsigned long m_fadeStartTime;
bool m_isActive;
AnimationCallback m_callback = nullptr;
};