#include #include "pwm.h" class RgbLed { private: Pwm8b* _pwmA; Pwm8b* _pwmB; uint8_t _pattern = 0; uint16_t _counter = 0; bool _stroke = false; uint8_t _targetR = 0; uint8_t _targetG = 0; uint8_t _targetB = 0; bool _fade = true; uint8_t _fadeSpeed = 7; bool _powerd = false; void patternStep(); public: RgbLed( Pwm8b* pwmA, Pwm8b* pwmB ); void setSolidColor( const uint8_t r, const uint8_t g, const uint8_t b); void setPattern(const uint8_t id); void setPreset( const uint8_t preset); void on(); void off(); void setFade(bool fade = true); void logic(); uint8_t getR(); uint8_t getB(); uint8_t getG(); bool isPowerd(); uint8_t getPattern(); }; template T sgn(T val) { return (T(0) < val) - (val < T(0)); }