144 lines
2.8 KiB
Arduino
144 lines
2.8 KiB
Arduino
|
#include <SPI.h>
|
||
|
#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; j<NUMPIXELS1; j++) {
|
||
|
if( (!meteorRandomDecay) || (random(10)>5) ) {
|
||
|
fadeToBlack(j, meteorTrailDecay );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// draw meteor
|
||
|
for(int j = 0; j < meteorSize; j++) {
|
||
|
if( ( i-j <NUMPIXELS1) && (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);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|