LED Strip Pattern Collection: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Note: Some of these may be written specifically for octows2811, neopixel or fastSPI, but it's usually easy to port between them (change the show and set color functions). | Note: Some of these may be written specifically for octows2811, neopixel or fastSPI, but it's usually easy to port between them (change the show and set color functions). | ||
Try the [https://noisebridge.net/wiki/Talk:Light_Patterns_with_LEDs_and_Arduino#Patterns LED talk page] for some great outside links! | |||
=== Random Twinkle === | === Random Twinkle === | ||
Line 54: | Line 56: | ||
} | } | ||
</pre> | |||
=== HSV to RGB === | |||
Really useful function returns RGB values from Hue Saturation Brightness! From teldredge's [http://funkboxing.com/wordpress/wp-content/_postfiles/sk_qLEDFX_POST.ino FAST_SPI LED FX EXAMPLES] | |||
<pre> | |||
void HSVtoRGB(int hue, int sat, int val,int *colors) { | |||
int r, g, b, base; | |||
// hue: 0-359, sat: 0-255, val (lightness): 0-255 | |||
if (sat == 0) { // Achromatic color (gray). | |||
colors[0]=val; | |||
colors[1]=val; | |||
colors[2]=val; | |||
} else { | |||
base = ((255 - sat) * val)>>8; | |||
switch(hue/60) { | |||
case 0: | |||
colors[0] = val; | |||
colors[1] = (((val-base)*hue)/60)+base; | |||
colors[2] = base; | |||
break; | |||
case 1: | |||
colors[0] = (((val-base)*(60-(hue%60)))/60)+base; | |||
colors[1] = val; | |||
colors[2] = base; | |||
break; | |||
case 2: | |||
colors[0] = base; | |||
colors[1] = val; | |||
colors[2] = (((val-base)*(hue%60))/60)+base; | |||
break; | |||
case 3: | |||
colors[0] = base; | |||
colors[1] = (((val-base)*(60-(hue%60)))/60)+base; | |||
colors[2] = val; | |||
break; | |||
case 4: | |||
colors[0] = (((val-base)*(hue%60))/60)+base; | |||
colors[1] = base; | |||
colors[2] = val; | |||
break; | |||
case 5: | |||
colors[0] = val; | |||
colors[1] = base; | |||
colors[2] = (((val-base)*(60-(hue%60)))/60)+base; | |||
break; | |||
} | |||
} | |||
} | |||
</pre> | </pre> |
Revision as of 20:05, 20 July 2013
Note: Some of these may be written specifically for octows2811, neopixel or fastSPI, but it's usually easy to port between them (change the show and set color functions).
Try the LED talk page for some great outside links!
Random Twinkle
// number, twinkle color, background color, delay // twinkleRand(5,strip.Color(255,255,255),strip.Color(255, 0, 100),90); // twinkle random number of pixels void twinkleRand(int num,uint32_t c,uint32_t bg,int wait) { // set background stripSet(bg,0); // for each num for (int i=0; i<num; i++) { strip.setPixelColor(random(strip.numPixels()),c); } strip.show(); delay(wait); }
Set All Pixels Quickly
// quickly set the entire strip a color void stripSet(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); } // move the show outside the loop strip.show(); delay(wait); }
Simple Wave
// very simple wave: velocity, cycles,delay between frames // simpleWave(0.03,5,10); void simpleWave(float rate,int cycles, int wait) { float pos=0.0; // cycle through x times for(int x=0; x<(strip.numPixels()*cycles); x++) { pos = pos+rate; for(int i=0; i<strip.numPixels(); i++) { // sine wave, 3 offset waves make a rainbow! float level = sin(i+pos) * 127 + 128; // set color level strip.setPixelColor(i,(int)level,0,0); } strip.show(); delay(wait); } }
HSV to RGB
Really useful function returns RGB values from Hue Saturation Brightness! From teldredge's FAST_SPI LED FX EXAMPLES
void HSVtoRGB(int hue, int sat, int val,int *colors) { int r, g, b, base; // hue: 0-359, sat: 0-255, val (lightness): 0-255 if (sat == 0) { // Achromatic color (gray). colors[0]=val; colors[1]=val; colors[2]=val; } else { base = ((255 - sat) * val)>>8; switch(hue/60) { case 0: colors[0] = val; colors[1] = (((val-base)*hue)/60)+base; colors[2] = base; break; case 1: colors[0] = (((val-base)*(60-(hue%60)))/60)+base; colors[1] = val; colors[2] = base; break; case 2: colors[0] = base; colors[1] = val; colors[2] = (((val-base)*(hue%60))/60)+base; break; case 3: colors[0] = base; colors[1] = (((val-base)*(60-(hue%60)))/60)+base; colors[2] = val; break; case 4: colors[0] = (((val-base)*(hue%60))/60)+base; colors[1] = base; colors[2] = val; break; case 5: colors[0] = val; colors[1] = base; colors[2] = (((val-base)*(60-(hue%60)))/60)+base; break; } } }