45 neoPixelType type = NEO_GRB + NEO_KHZ800) {
46 numberOfLeds = number;
47 pixels =
new Adafruit_NeoPixel(numberOfLeds, pin, type);
63 void setEffect(AddressableLEDsEffect neweffect, uint16_t newStepTime,
64 uint8_t turnAllLEDsTime = 0) {
65 if (effect != neweffect) {
70 if (turnOnTime != turnAllLEDsTime) {
72 for (
int i = 0; i < numberOfLeds; i++) {
73 pixels->setPixelColor(i, 0);
79 stepTime = newStepTime;
80 turnOnTime = turnAllLEDsTime;
87 AddressableLEDsEffect getEffect() {
90 uint16_t getStepTime() {
93 uint16_t getTurnOnTime() {
107 void setColor(uint32_t color) {
110 void setColor(uint8_t red, uint8_t green, uint8_t blue) {
111 RGBcolor = pixels->Color(red, green, blue);
113 void setBrightness(uint8_t brightness) {
114 pixels->setBrightness(brightness);
119 if (isOn() && lightedLeds < numberOfLeds
120 && ((millis() - lastLEDTime >= (1000 * turnOnTime / numberOfLeds))
121 || (millis() < lastLEDTime))) {
122 lastLEDTime = millis();
123 SUPLA_LOG_DEBUG(
"RGB strip: switching on LED %d", lightedLeds);
127 if (lightedLeds > 0 && ((millis()-lastTime >= stepTime)
128 || (millis() < lastTime))) {
143 iterate_RainbowWheel();
152 if (!isOn() && lightedLeds > 0
153 && ((millis() - lastLEDTime >= (1000 * turnOnTime / numberOfLeds))
154 || (millis() < lastLEDTime))) {
155 lastLEDTime = millis();
157 SUPLA_LOG_DEBUG(
"RGB strip: switching off LED %d", lightedLeds);
158 pixels->setPixelColor(lightedLeds, 0);
164 Adafruit_NeoPixel *pixels;
166 uint16_t numberOfLeds;
167 uint16_t lightedLeds = 0;
168 uint32_t RGBcolor = 0x004400;
169 uint32_t LastColor = 0;
171 uint8_t turnOnTime = 0;
172 uint32_t lastLEDTime = 0;
174 uint16_t stepTime = 1000;
175 uint32_t lastTime = 0;
177 AddressableLEDsEffect effect = STILL;
178 uint32_t counter = 0;
180 void iterate_Still() {
181 for (
int i = 0; i < lightedLeds; i++) {
182 pixels->setPixelColor(i, RGBcolor);
187 void iterate_Swap() {
188 for (
int i = 0; i < lightedLeds; i++) {
190 pixels->setPixelColor(i, RGBcolor);
192 pixels->setPixelColor(i, 0);
198 void iterate_Flow() {
199 for (
int i = 0; i < numberOfLeds; i++) {
201 pixels->setPixelColor(i, RGBcolor);
203 pixels->setPixelColor(i, 0);
209 void iterate_RainbowWheel() {
210 for (
int i = 0; i < lightedLeds; i++) {
214 pixels->setPixelColor(i, RainbowWheel((i*1+counter) & 255));
219 void iterate_Rainbow() {
220 for (
int i = 0; i < lightedLeds; i++) {
221 if (counter*256 > 5*65536) {
224 int pixelHue = 256*counter + (i * 65536L / numberOfLeds);
225 pixels->setPixelColor(i, pixels->gamma32(pixels->ColorHSV(pixelHue)));
230 uint32_t RainbowWheel(
byte WheelPos) {
232 return pixels->Color(WheelPos * 3, 255 - WheelPos * 3, 0);
233 }
else if (WheelPos < 170) {
235 return pixels->Color(255 - WheelPos * 3, 0, WheelPos * 3);
238 return pixels->Color(0, WheelPos * 3, 255 - WheelPos * 3);
void setEffect(AddressableLEDsEffect neweffect, uint16_t newStepTime, uint8_t turnAllLEDsTime=0)
Setting effect on strip/ring.
Definition addressable_leds.h:63