Last active
July 10, 2019 19:02
-
-
Save adamjezek98/26527618c8f9d370a6a71f710c4531f2 to your computer and use it in GitHub Desktop.
FastLED RGBW
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
THIS SKETCH TRANSPORMS 4-COLOR RGBW LEDS INTO 2 3-COLOR RGB LEDS, | |
SO YOU CAN USE FASTLED (WHICH AS OF NOW, HAS NO RGBW SUPPORT), TO | |
CONTROL RGBW LEDS | |
*/ | |
#include <FastLED.h> | |
#define NUM_LEDS 16 | |
/* | |
for every 3 rgbw leds, we need 4 rgb leds. | |
to get rgbw count from rgb, do (count/4)*3, and roud it down | |
to get rgb count from rgbw, do (count/3)*4, and round it up | |
*/ | |
#define NUM_LEDS_RGBW 10 | |
#define LED_PIN 12 | |
CRGB leds[NUM_LEDS]; | |
void setup() { | |
FastLED.addLeds<NEOPIXEL, LED_PIN>(leds, NUM_LEDS); | |
Serial.begin(115200); | |
} | |
void loop() { | |
for (int i = 0; i < NUM_LEDS_RGBW; i++) { | |
setRGBW(i, 1, 0, 0, 0); | |
//leds[i][0] = 5; | |
//leds[i] = CRGB(5,0,0); | |
FastLED.show(); | |
delay(100); | |
} | |
delay(3000); | |
//while (1); | |
for (int i = 0; i < NUM_LEDS_RGBW; i++) { | |
setRGBW(i, 0, 9, 0, 0); | |
FastLED.show(); | |
delay(100); | |
} | |
delay(3000); | |
for (int i = 0; i < NUM_LEDS_RGBW; i++) { | |
setRGBW(i, 0, 0, 9, 0); | |
FastLED.show(); | |
delay(100); | |
} | |
delay(3000); | |
for (int i = 0; i < NUM_LEDS_RGBW; i++) { | |
setRGBW(i, 0, 0, 0, 9); | |
FastLED.show(); | |
delay(100); | |
} | |
} | |
void setRGBW(int led, byte r, byte g, byte b, byte w) { | |
//takes r,g,b,w for 4-color LEDs and transfers them into 3-color array | |
//to use with fastled | |
int segment = int((led / 3.0) * 4.0); | |
switch ( led % 3) { | |
case 0: //first | |
leds[segment][0] = r; | |
leds[segment][1] = g; | |
leds[segment][2] = b; | |
leds[segment + 1][1] = w; | |
break; | |
case 1: //second | |
leds[segment][0] = g; | |
leds[segment][2] = r; | |
leds[segment + 1][0] = w; | |
leds[segment + 1][1] = b; | |
break; | |
case 2: //third | |
leds[segment][2] = g; | |
leds[segment + 1][0] = b; | |
leds[segment + 1][1] = r; | |
leds[segment + 1][2] = w; | |
break; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment