Last active
February 8, 2018 00:03
-
-
Save brantritter/20da77bc662d037bf8e006fa72330b56 to your computer and use it in GitHub Desktop.
blend arrays to colors
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
#include <FastLED.h> | |
#define LED_PIN 11 | |
// Information about the LED strip itself | |
#define NUM_LEDS 238 | |
#define CHIPSET WS2811_400 | |
#define COLOR_ORDER GRB | |
#define BRIGHTNESS 100 | |
CRGB leds[NUM_LEDS]; | |
uint8_t blendRate = 8000; // How fast to blend. Higher is slower. [milliseconds] | |
//ZONE1 | |
CHSV colorStart1 = CHSV(0, 255, 255); // Red | |
CHSV colorTarget1 = CHSV(213, 255, 255); // PURPLE | |
CHSV colorCurrent1 = colorStart1; | |
//ZONE2 | |
CHSV colorStart2 = CHSV(42, 255, 255); // YELLOW | |
CHSV colorTarget2 = CHSV(171, 255, 255); // BLUE | |
CHSV colorCurrent2 = colorStart2; | |
//ZONE3 | |
CHSV colorStart3 = CHSV(85, 255, 255); // GREEN | |
CHSV colorTarget3 = CHSV(128, 255, 255); // CYAN | |
CHSV colorCurrent3 = colorStart3; | |
//ZONE4 | |
CHSV colorStart4 = CHSV(128, 255, 255); // CYAN | |
CHSV colorTarget4 = CHSV(85, 255, 255); // GREEN | |
CHSV colorCurrent4 = colorStart4; | |
//ZONE5 | |
CHSV colorStart5 = CHSV(171, 255, 255); // BLUE | |
CHSV colorTarget5 = CHSV(42, 255, 255); // YELLOW | |
CHSV colorCurrent5 = colorStart5; | |
//ZONE6 | |
CHSV colorStart6 = CHSV(213, 255, 255); // PURPLE | |
CHSV colorTarget6 = CHSV(0, 255, 255); // RED | |
CHSV colorCurrent6 = colorStart6; | |
//THESE ARE MY LED ARRAYS | |
int myLEDs1[ ] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187 }; | |
uint8_t Zone1 = sizeof(myLEDs1) / sizeof(myLEDs1[0]); | |
int myLEDs2[ ] = {11, 12, 13, 14, 15, 16, 17, 18, 19, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198 }; | |
uint8_t Zone2 = sizeof(myLEDs2) / sizeof(myLEDs2[0]); | |
int myLEDs3[ ] = {20, 21, 22, 23, 24, 25, 26, 27, 28, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 148, 149, 150, 151, 152, 153, 153, 154, 155, 156, 157, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208 }; | |
uint8_t Zone3 = sizeof(myLEDs3) / sizeof(myLEDs3[0]); | |
int myLEDs4[ ] = {29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218 }; | |
uint8_t Zone4 = sizeof(myLEDs4) / sizeof(myLEDs4[0]); | |
int myLEDs5[ ] = {39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228 }; | |
uint8_t Zone5 = sizeof(myLEDs5) / sizeof(myLEDs5[0]); | |
int myLEDs6[ ] = {49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 119, 120, 121, 122, 123, 124, 125, 126, 127, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238}; | |
uint8_t Zone6 = sizeof(myLEDs6) / sizeof(myLEDs6[0]); | |
int i; // counting variable | |
void setup() { | |
delay(3000); | |
FastLED.addLeds<WS2811_400, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); | |
FastLED.setBrightness(BRIGHTNESS); | |
FastLED.setDither( 0 ); // helps with dimming jitters | |
} | |
void loop() | |
{ | |
EVERY_N_MILLISECONDS(blendRate) { // FastLED based non-blocking delay to update/display | |
static uint8_t k; | |
if ( colorCurrent1 == colorTarget1 ) { // Check if target has been reached | |
colorTarget1 = colorStart1; | |
colorStart1 = colorCurrent1; | |
colorTarget2 = colorStart2; | |
colorStart2 = colorCurrent2; | |
colorTarget3 = colorStart3; | |
colorStart3 = colorCurrent3; | |
colorTarget4 = colorStart4; | |
colorStart4 = colorCurrent4; | |
colorTarget5 = colorStart5; | |
colorStart5 = colorCurrent5; | |
colorTarget6 = colorStart6; | |
colorStart6 = colorCurrent6; | |
k = 0; // reset k value | |
} | |
colorCurrent1 = blend(colorStart1, colorTarget1, k, SHORTEST_HUES); | |
colorCurrent2 = blend(colorStart2, colorTarget2, k, SHORTEST_HUES); | |
colorCurrent3 = blend(colorStart3, colorTarget3, k, SHORTEST_HUES); | |
colorCurrent4 = blend(colorStart4, colorTarget4, k, SHORTEST_HUES); | |
colorCurrent5 = blend(colorStart5, colorTarget5, k, SHORTEST_HUES); | |
colorCurrent6 = blend(colorStart6, colorTarget6, k, SHORTEST_HUES); | |
for (uint8_t i = 0; i < Zone1; i++) | |
{ | |
leds[myLEDs1[i] ] = colorCurrent1; | |
} | |
for (uint8_t i = 0; i < Zone2; i++) { | |
leds[myLEDs2[i] ] = colorCurrent2; | |
} | |
for (uint8_t i = 0; i < Zone3; i++) { | |
leds[myLEDs3[i] ] = colorCurrent3; | |
} | |
for (uint8_t i = 0; i < Zone4; i++) { | |
leds[myLEDs4[i] ] = colorCurrent4; | |
} | |
for (uint8_t i = 0; i < Zone5; i++) { | |
leds[myLEDs5[i] ] = colorCurrent5; | |
} | |
for (uint8_t i = 0; i < Zone6; i++) { | |
leds[myLEDs6[i] ] = colorCurrent6; | |
} | |
k++; | |
} | |
FastLED.show(); // update the display | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment