#include #include "nRF24L01.h" #include "RF24.h" #include "printf.h" #include "Adafruit_NeoPixel.h" #define RADIOSEND false #define CE_PIN 12 #define CSN_PIN 2 #define SDO1 4 #define SDO2 8 #define SDO3 3 #define NUMPIXELS1 300 // fuego #define NUMPIXELS2 150 #define NUMPIXELS3 150 Adafruit_NeoPixel pixels1 = Adafruit_NeoPixel(NUMPIXELS1, SDO1, NEO_GRBW + NEO_KHZ800); Adafruit_NeoPixel pixels2 = Adafruit_NeoPixel(NUMPIXELS2, SDO2, NEO_GRBW + NEO_KHZ800); Adafruit_NeoPixel pixels3 = Adafruit_NeoPixel(NUMPIXELS3, SDO3, NEO_GRBW + NEO_KHZ800); int countFrame = 0; int r=0; void setup() { pixels1.begin(); pixels2.begin(); pixels3.begin(); pixels1.show(); // Initialize all pixels to 'off' pixels2.show(); // Initialize all pixels to 'off' pixels3.show(); // Initialize all pixels to 'off' Serial.begin(512000); } // *** REPLACE FROM HERE *** void loop() { meteorRain(0xff,0xff,0xff,0, 10, 64, true, 30); } void meteorRain(byte red, byte green, byte blue, byte white, byte meteorSize, byte meteorTrailDecay, boolean meteorRandomDecay, int SpeedDelay) { setAll(0,0,0,0); for(int i = 0; i < NUMPIXELS1; i++) { // fade brightness all LEDs one step for(int j=0; j5) ) { fadeToBlack(j, meteorTrailDecay ); } } // draw meteor for(int j = 0; j < meteorSize; j++) { if( ( i-j =0) ) { setPixel(i-j, red, green, blue, white); } } splitStrip(); showStrip(); delay(SpeedDelay); } } // used by meteorrain void fadeToBlack(int ledNo, byte fadeValue) { uint32_t oldColor; uint8_t r, g, b; int value; oldColor = pixels1.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); pixels1.setPixelColor(ledNo, r,g,b); } void splitStrip() { // CONVERSION DE UNA ANIMACION DE 5M A DOS TRAMOS for ( int i = 0; i < 150 ; i++) // numPixels/2 { pixels2.setPixelColor( i, pixels1.getPixelColor(i) ); pixels3.setPixelColor( i, pixels1.getPixelColor(i + 150) ); } } void showStrip() { //pixels1.show(); // tira entera de 5m pixels2.show(); // parte 1 de 2.5m pixels3.show(); // parte 2 de 2.5m } void setPixel(int Pixel, byte red, byte green, byte blue, byte white) { pixels1.setPixelColor(Pixel, pixels1.Color(red, green, blue, white)); } void setAll(byte red, byte green, byte blue, byte white) { for (int i = 0; i < NUMPIXELS1; i++ ) { setPixel(i, red, green, blue, white); } }