#include <FastLED.h>
#include <Arduino.h>
#define NUM_LEDS 16//numero de leds a usar
#define DATA_PIN 13 // Arduino
#define COLOR_ORDEN GRB // Green - Red - Blue
#define BRILLO 250 //intencidad del brillo
CRGB leds[NUM_LEDS];
int pot = A0;
int potval = 0;
int outval = 0;
void setup() {
FastLED.addLeds<WS2812B, DATA_PIN, COLOR_ORDEN>(leds, NUM_LEDS);
pines();
}
void loop() {
if(digitalRead(12)==HIGH){
Brillo();
meteorRain(0xff, 0xff, 0xff,10, 64, true, 30);
}
}
//////////////////////////////////////////////////
void pines(){
pinMode(12, INPUT);
}
void showStrip() {
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
FastLED.show();
#endif
}
void setPixel(int Pixel, byte red, byte green, byte blue) {
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds[Pixel].r = red;
leds[Pixel].g = green;
leds[Pixel].b = blue;
#endif
}
void setAll(byte red, byte green, byte blue) {
for(int i = 0; i < NUM_LEDS; i++ ) {
setPixel(i, red, green, blue);
}
showStrip();
}
void Brillo(){
potval=analogRead(pot);
outval=map(potval, 0, 1023, 0, 255);
analogWrite(NUM_LEDS, outval);
FastLED.setBrightness(outval);
}
void apagado(){
for(int f = 0; f <= NUM_LEDS; f++){
leds[f] = 0x000000;
}
FastLED.show();
}
////////////////////////////////////////////
////////////////////////////////////////////
//////////////////////////////////////////
void fillOut(int t){
for(int x = 0; x <= NUM_LEDS; x++){
leds[x] = CRGB(255, 255, 255);
}
FastLED.show();
delay(t);
for(int x = 0; x <= NUM_LEDS; x++){
leds[x] = CRGB(255, 132, 0);
}
FastLED.show();
delay(t);
for(int x = 0; x <= NUM_LEDS; x++){
leds[x] = CRGB(255, 247, 0);
}
FastLED.show();
delay(t);
for(int x = 0; x <= NUM_LEDS; x++){
leds[x] = CRGB(77, 255, 0);
}
FastLED.show();
delay(t);
for(int x = 0; x <= NUM_LEDS; x++){
leds[x] = CRGB(0, 255, 102);
}
FastLED.show();
delay(t);
for(int x = 0; x <= NUM_LEDS; x++){
leds[x] = CRGB(0, 255, 208);
}
FastLED.show();
delay(t);
for(int x = 0; x <= NUM_LEDS; x++){
leds[x] = CRGB(5, 5, 251);
}
FastLED.show();
delay(t);
for(int x = 0; x <= NUM_LEDS; x++){
leds[x] = CRGB(123, 15, 255);
}
FastLED.show();
delay(t);
for(int x = 0; x <= NUM_LEDS; x++){
leds[x] = CRGB(230, 0, 255);
}
FastLED.show();
delay(t);
for(int x = 0; x <= NUM_LEDS; x++){
leds[x] = CRGB(255, 0, 102);
}
FastLED.show();
delay(t);
for(int x = 0; x <= NUM_LEDS; x++){
leds[x] = CRGB(244, 6, 6);
}
FastLED.show();
delay(t);
apagado();
}
/////////////////////////////////////////
void dFill(int timing, int fade){
for(int d = 0; d <= NUM_LEDS; d++){
leds[d] = CRGB(255, 255, 255);
FastLED.show();
delay(timing);
fadeToBlackBy(leds,NUM_LEDS,fade);
}
for(int d = 0; d <= NUM_LEDS; d++){
leds[d] = CRGB(255, 132, 0);
FastLED.show();
delay(timing);
fadeToBlackBy(leds,NUM_LEDS,fade);
}
for(int d = 0; d <= NUM_LEDS; d++){
leds[d] = CRGB(255, 247, 0);
FastLED.show();
delay(timing);
fadeToBlackBy(leds,NUM_LEDS,fade);
}
for(int d = 0; d <= NUM_LEDS; d++){
leds[d] = CRGB(77, 255, 0);
FastLED.show();
delay(timing);
fadeToBlackBy(leds,NUM_LEDS,fade);
}
for(int d = 0; d <= NUM_LEDS; d++){
leds[d] = CRGB(0, 255, 102);
FastLED.show();
delay(timing);
fadeToBlackBy(leds,NUM_LEDS,fade);
}
for(int d = 0; d <= NUM_LEDS; d++){
leds[d] = CRGB(0, 255, 208);
FastLED.show();
delay(timing);
fadeToBlackBy(leds,NUM_LEDS,fade);
}
for(int d = 0; d <= NUM_LEDS; d++){
leds[d] = CRGB(5, 5, 251);
FastLED.show();
delay(timing);
fadeToBlackBy(leds,NUM_LEDS,fade);
}
for(int d = 0; d <= NUM_LEDS; d++){
leds[d] = CRGB(123, 15, 255);
FastLED.show();
delay(timing);
fadeToBlackBy(leds,NUM_LEDS,fade);
}
for(int d = 0; d <= NUM_LEDS; d++){
leds[d] = CRGB(230, 0, 255);
FastLED.show();
delay(timing);
fadeToBlackBy(leds,NUM_LEDS,fade);
}
for(int d = 0; d <= NUM_LEDS; d++){
leds[d] = CRGB(255, 0, 102);
FastLED.show();
delay(timing);
fadeToBlackBy(leds,NUM_LEDS,fade);
}
for(int d = 0; d <= NUM_LEDS; d++){
leds[d] = CRGB(244, 6, 6);
FastLED.show();
delay(timing);
fadeToBlackBy(leds,NUM_LEDS,fade);
}
apagado();
}
////////////////////////////////////////////
void fadeMoving(int v, int f){
for(int a=0; a<=10; a++){
switch(a){
case 1:
for(int m = 0; m <= NUM_LEDS; m++){
leds[m] = CRGB(255, 132, 0);
FastLED.show();
fadeToBlackBy(leds,NUM_LEDS,f);
delay(v);
}
for(int m = NUM_LEDS; m >= 0; m--){
leds[m] = CRGB(255, 247, 0);
FastLED.show();
fadeToBlackBy(leds,NUM_LEDS,f/2); //fade/2
delay(v);
}
break;
case 2:
for(int m = 0; m <= NUM_LEDS; m++){
leds[m] = CRGB(77, 255, 0);
FastLED.show();
fadeToBlackBy(leds,NUM_LEDS,f);
delay(v);
}
for(int m = NUM_LEDS; m >= 0; m--){
leds[m] = CRGB(0, 255, 102);
FastLED.show();
fadeToBlackBy(leds,NUM_LEDS,f/2); //fade/2
delay(v);
}
break;
case 3:
for(int m = 0; m <= NUM_LEDS; m++){
leds[m] = CRGB(0, 255, 208);
FastLED.show();
fadeToBlackBy(leds,NUM_LEDS,f);
delay(v);
}
for(int m = NUM_LEDS; m >= 0; m--){
leds[m] = CRGB(5, 5, 251);
FastLED.show();
fadeToBlackBy(leds,NUM_LEDS,f/2); //fade/2
delay(v);
}
break;
case 4:
for(int m = 0; m <= NUM_LEDS; m++){
leds[m] = CRGB(123, 15, 255);
FastLED.show();
fadeToBlackBy(leds,NUM_LEDS,f);
delay(v);
}
for(int m = NUM_LEDS; m >= 0; m--){
leds[m] = CRGB(230, 0, 255);
FastLED.show();
fadeToBlackBy(leds,NUM_LEDS,f/2); //fade/2
delay(v);
}
break;
case 5:
for(int m = 0; m <= NUM_LEDS; m++){
leds[m] = CRGB(255, 0, 102);
FastLED.show();
fadeToBlackBy(leds,NUM_LEDS,f);
delay(v);
}
for(int m = NUM_LEDS; m >= 0; m--){
leds[m] = CRGB(244, 6, 6);
FastLED.show();
fadeToBlackBy(leds,NUM_LEDS,f/2); //fade/2
delay(v);
}
break;
}
}
}
////////////////////////////////////////
void arcoiris(int SpeedDelay) {
byte *c;
uint16_t i, j;
for(j=0; j<256*1; j++) { // 5 cycles of all colors on wheel
for(i=0; i< NUM_LEDS; i++) {
c=Wheel(((i * 256 / NUM_LEDS) + j) & 255);
setPixel(i, *c, *(c+1), *(c+2));
}
showStrip();
delay(SpeedDelay);
}
}
byte * Wheel(byte WheelPos) {
static byte c[3];
if(WheelPos < 85) {
c[0]=WheelPos * 3;
c[1]=255 - WheelPos * 3;
c[2]=0;
} else if(WheelPos < 170) {
WheelPos -= 85;
c[0]=255 - WheelPos * 3;
c[1]=0;
c[2]=WheelPos * 3;
} else {
WheelPos -= 170;
c[0]=0;
c[1]=WheelPos * 3;
c[2]=255 - WheelPos * 3;
}
return c;
}
////////////////////////////////////////
void meteorRain(byte red, byte green, byte blue, byte meteorSize, byte meteorTrailDecay, boolean meteorRandomDecay, int SpeedDelay) {
setAll(0,0,0);
for(int i = 0; i < NUM_LEDS+NUM_LEDS; i++) {
// fade brightness all LEDs one step
for(int j=0; j<NUM_LEDS; j++) {
if( (!meteorRandomDecay) || (random(10)>5) ) {
fadeToBlack(j, meteorTrailDecay );
}
}
// draw meteor
for(int j = 0; j < meteorSize; j++) {
if( ( i-j <NUM_LEDS) && (i-j>=0) ) {
setPixel(i-j, red, green, blue);
}
}
showStrip();
delay(SpeedDelay);
}
}
void fadeToBlack(int ledNo, byte fadeValue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
uint32_t oldColor;
uint8_t r, g, b;
int value;
oldColor = strip.getPixelColor(ledNo);
r = (oldColor & 0x00ff0000UL) >> 16;
g = (oldColor & 0x0000ff00UL) >> 8;
b = (oldColor & 0x000000ffUL);
r=(r<=10)? 0 : (int) r-(r*fadeValue/256);
g=(g<=10)? 0 : (int) g-(g*fadeValue/256);
b=(b<=10)? 0 : (int) b-(b*fadeValue/256);
strip.setPixelColor(ledNo, r,g,b);
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds[ledNo].fadeToBlackBy( fadeValue );
#endif
}