Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 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;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement