60 neoPixelType type = NEO_GRB + NEO_KHZ800) {
61 numberOfLeds = number;
62 pixels =
new Adafruit_NeoPixel(numberOfLeds, pin, type);
78 void setEffect(AddressableLEDsEffect neweffect, uint16_t newStepTime,
79 uint8_t turnAllLEDsTime = 0) {
80 if (effect != neweffect) {
85 if (turnOnTime != turnAllLEDsTime) {
87 for (
int i = 0; i < numberOfLeds; i++) {
88 pixels->setPixelColor(i, 0);
94 stepTime = newStepTime;
95 turnOnTime = turnAllLEDsTime;
102 AddressableLEDsEffect getEffect() {
105 uint16_t getStepTime() {
108 uint16_t getTurnOnTime() {
122 void setColor(uint32_t color) {
125 void setColor(uint8_t red, uint8_t green, uint8_t blue) {
126 RGBcolor = pixels->Color(red, green, blue);
128 void setBrightness(uint8_t brightness) {
129 pixels->setBrightness(brightness);
134 if (isOn() && lightedLeds < numberOfLeds
135 && ((millis() - lastLEDTime >= (1000 * turnOnTime / numberOfLeds))
136 || (millis() < lastLEDTime))) {
137 lastLEDTime = millis();
138 SUPLA_LOG_DEBUG(
"RGB strip: switching on LED %d", lightedLeds);
142 if (lightedLeds > 0 && ((millis()-lastTime >= stepTime)
143 || (millis() < lastTime))) {
158 iterate_RainbowWheel();
167 if (!isOn() && lightedLeds > 0
168 && ((millis() - lastLEDTime >= (1000 * turnOnTime / numberOfLeds))
169 || (millis() < lastLEDTime))) {
170 lastLEDTime = millis();
172 SUPLA_LOG_DEBUG(
"RGB strip: switching off LED %d", lightedLeds);
173 pixels->setPixelColor(lightedLeds, 0);
179 Adafruit_NeoPixel *pixels;
181 uint16_t numberOfLeds;
182 uint16_t lightedLeds = 0;
183 uint32_t RGBcolor = 0x004400;
184 uint32_t LastColor = 0;
186 uint8_t turnOnTime = 0;
187 uint32_t lastLEDTime = 0;
189 uint16_t stepTime = 1000;
190 uint32_t lastTime = 0;
192 AddressableLEDsEffect effect = STILL;
193 uint32_t counter = 0;
195 void iterate_Still() {
196 for (
int i = 0; i < lightedLeds; i++) {
197 pixels->setPixelColor(i, RGBcolor);
202 void iterate_Swap() {
203 for (
int i = 0; i < lightedLeds; i++) {
205 pixels->setPixelColor(i, RGBcolor);
207 pixels->setPixelColor(i, 0);
213 void iterate_Flow() {
214 for (
int i = 0; i < numberOfLeds; i++) {
216 pixels->setPixelColor(i, RGBcolor);
218 pixels->setPixelColor(i, 0);
224 void iterate_RainbowWheel() {
225 for (
int i = 0; i < lightedLeds; i++) {
229 pixels->setPixelColor(i, RainbowWheel((i*1+counter) & 255));
234 void iterate_Rainbow() {
235 for (
int i = 0; i < lightedLeds; i++) {
236 if (counter*256 > 5*65536) {
239 int pixelHue = 256*counter + (i * 65536L / numberOfLeds);
240 pixels->setPixelColor(i, pixels->gamma32(pixels->ColorHSV(pixelHue)));
245 uint32_t RainbowWheel(
byte WheelPos) {
247 return pixels->Color(WheelPos * 3, 255 - WheelPos * 3, 0);
248 }
else if (WheelPos < 170) {
250 return pixels->Color(255 - WheelPos * 3, 0, WheelPos * 3);
253 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:78