Vídeo ejemplo
Con el siguiente código vas a poder conseguir esto
Con el siguiente código vas a poder conseguir esto
/*
* MANTENER ALEJADOS LOS TELÉFONOS MÓVILES DEL SENSOR IR. PUEDEN PROVOCAR INTERFERENCIAS.
Reconoce todas las teclas del mando keyes.
En este ejemplo utilizaremos los botones 1, 2, 3...9
que encienden/apagan la tira con colores diferentes.
El botón 0 apaga toda la tira
Dos funciones función encender_tira() y función apagar_tira().
Por monitor serie indica: tecla pulsada, color name y RGB de la tira.
También indica, en el caso de ser modificado, el tiempo entre led y led en nuevas subidas
Una vez rellenada la tira puede modificarse el tiempo entre led y led
con las teclas arriba, que suma, y abajo, que resta.
www.sacosta.org 04/2020.
*/
#include <Adafruit_NeoPixel.h>
#define PIN 6 //IMPORTANTE arduino 6 a input Neopixel
#define NUMPIXELS 60 // Número de píxels de la tira
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int fadeControl = 80;
int fadeDirection = 30;
//creamos unos boleanos para que
//los botones encienden y apagan los leds
boolean L_1=false;//boleano para tramo 1
boolean L_2=false;
boolean L_3=false;
boolean L_4=false;
boolean L_5=false;
boolean L_6=false;
boolean L_7=false;
boolean L_8=false;
boolean L_9=false;
int t_on=50;
int increment_temps=50;
int t_llamp=15;// tiempo de subida del rayo/temps pujada llamp
int num_llamps=2; //numero de rayos/nombre de llamps
//creamos variables para color píxel
int redColor = 0;
int greenColor = 0;
int blueColor = 0;
// libreria y puerto IR
#include "IRremote.h"
int receiver = 3; //IMPORTANTE Y del sensor a pin 3 arduino
IRrecv irrecv(receiver);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
// Inicializa NeoPixel library.
pixels.begin();
}
void loop()
{
if (irrecv.decode(&results))
{
switch(results.value)
{
// codi Joan 0x00FF629D
// codi Jesus 0x00FF18E7
case 0x00FF18E7: Serial.print("Tecla: Arriba ");
//case 0x00FF18E7: Serial.print("Tecla: Arriba ");
if (t_on<400){
t_on=t_on+increment_temps;
Serial.print("Tiempo entre leds= ");
Serial.println(t_on);
}
else
{}
break;
// codi Joan 0x00FFA857
// codi Jesus 0x00FF4AB5
case 0x00FF4AB5: Serial.print("Tecla: Abajo ");
//case 0x00FF4AB5: Serial.print("Tecla: Abajo ");
if (t_on> increment_temps){
t_on=t_on-increment_temps;
}
Serial.print("Tiempo entre leds= ");
Serial.println(t_on);
break;
// codi Joan 0x00FF22DD
// codi Jesus 0x00FF10EF
case 0x00FF10EF: Serial.println("Tecla: Izquierda");
//case 0x00FF10EF: Serial.println("Tecla: Izquierda");
if (fadeControl >(15+ fadeDirection)){
fadeControl = fadeControl - fadeDirection;//increment the brightness value
}
else{}
Serial.print("fade = ");
Serial.println(fadeControl);
break;
/*
case 0x00FF02FD: Serial.println("Tecla: OK");
break;
*/
// codi Joan 0x00FFC23D
// codi Jesus 0x00FF5AA5
case 0x00FF5AA5: Serial.println("Tecla: Derecha");
//case 0x00FF5AA5: Serial.println("Tecla: Derecha");
if (fadeControl <(255 - fadeDirection)){
fadeControl = fadeControl + fadeDirection;//incremento del valor de brillo
}
else{
}
Serial.print("fade = ");
Serial.println(fadeControl);
break;
/*
case 0x00FF52AD: Serial.println("Tecla: #");
break;
case 0x00FF42BD: Serial.println("Tecla: *");
break;
*/
// codi Joan 0x00FF6897
// codi Jesus 0x00FFA25D
case 0x00FFA25D: //Tecla 1
//el rayo
L_1=!L_1;
if (L_1==true){
Serial.println("Tecla: 1, encén llamp");
// print_color();
// encender_tira();
for(int x=0; x<num_llamps;x++){
for (int i=1; i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(0, 0, 0));
pixels.show();//encendemos el led
}
for (int i=1; i<NUMPIXELS+1;i++){
pixels.setBrightness(fadeControl);//configuracion del brillo del led
pixels.setPixelColor(i-1, pixels.Color(0, 0, 0));
pixels.setPixelColor(i, pixels.Color(255, 255, 255));
pixels.setPixelColor(i+1, pixels.Color(255, 255, 255));
pixels.setPixelColor(i+2, pixels.Color(255, 255, 255));
pixels.setPixelColor(i+3, pixels.Color(255, 255, 255));
pixels.show();//encendemos el led
delay(t_llamp);
}
for (int i=1; i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(255, 255, 255));
pixels.show();//encendemos el led
}
delay(150);
for (int i=1; i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(0, 0, 0));
pixels.show();//encendemos el led
}
delay(random (2000,4000));
}
for (int i=1; i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(60, 60, 60));
pixels.show();//encendemos el led
}
}
else
{
Serial.println("Tecla: 1, apaga llamp");
apagar_tira();
}
L_2=L_3=L_4=L_5=L_6=L_7=L_8=L_9=false;
break;
// codi Joan 0x00FF9867
// codi Jesus 0x00FF629D
case 0x00FF629D: //Tecla 2
L_2=!L_2;
redColor = 255;
greenColor = 117;
blueColor = 0;
if (L_2==true){
Serial.println("Tecla: 2, enciende tira color azul claro");
print_color();
encender_tira();
}
else
{
Serial.println("Tecla: 2, apaga tira color azul claro");
apagar_tira();
}
L_1=L_3=L_4=L_5=L_6=L_7=L_8=L_9=false;
break;
// codi Joan 0x00FFB04F
// codi Jesus 0x00FFE21D
case 0x00FFE21D: //tecla 3
L_3=!L_3;
redColor = 0;
greenColor = 0;
blueColor = 139;
if (L_3==true){
Serial.println("Tecla: 3, enciende tira color azul oscuro");
print_color();
encender_tira();
}
else
{
Serial.println("Tecla: 3, apaga tira color azul oscuro");
apagar_tira();
}
L_1=L_2=L_4=L_5=L_6=L_7=L_8=L_9=false;
break;
// codi Joan 0x00FF30CF
// codi Jesus 0x00FF22DD
case 0x00FF22DD: //tecla 4
L_4=!L_4;
redColor = 255;
greenColor = 0;
blueColor = 0;
if (L_4==true){
Serial.println("Tecla: 4, enciende tira color rojo");
print_color();
encender_tira();
}
else
{
Serial.println("Tecla: 4, apaga tira color rojo");
apagar_tira();
}
L_1=L_2=L_3=L_5=L_6=L_7=L_8=L_9=false;
break;
// codi Joan 0x00FF18E7
// codi Jesus 0x00FF02FD
case 0x00FF02FD: // Tecla 5
L_5=!L_5;
redColor = 255;
greenColor = 45;
blueColor = 0;
if (L_5==true){
Serial.println("Tecla: 5, enciende tira color naranja ");
print_color();
encender_tira();
}
else
{
Serial.println("Tecla: 5, apaga tira color naranja ");
apagar_tira();
}
L_1=L_2=L_3=L_4=L_6=L_7=L_8=L_9=false;
break;
// codi Joan 0x00FF7A85
// codi Jesus 0x00FFC23D
case 0x00FFC23D: //tecla 6
L_6=!L_6;
redColor = 0;
greenColor = 255;
blueColor = 0;
if (L_6==true){
Serial.println("Tecla: 6, enciende tira color verde ");
print_color();
encender_tira();
}
else
{
Serial.println("Tecla: 6, apaga tira color verde");
apagar_tira();
}
L_1=L_2=L_3=L_4=L_5=L_7=L_8=L_9=false;
break;
// codi Joan 0x00FF10EF
// codi Jesus 0x00FFE01F
case 0x00FFE01F: //tecla 7
L_7=!L_7;
redColor = 214;
greenColor = 0;
blueColor = 193;
if (L_7==true){
Serial.println("Tecla: 7, enciende tira color violeta oscuro ");
print_color();
encender_tira();
}
else
{
Serial.println("Tecla: 7, apaga tira color violeta oscuro ");
apagar_tira();
}
L_1=L_2=L_3=L_4=L_5=L_6=L_8=L_9=false;
break;
// codi Joan 0x00FF38C7
// codi Jesus 0x00FFA857
case 0x00FFA857: //tecla 8
L_8=!L_8;
redColor = 255;
greenColor = 255;
blueColor = 255;
if (L_8==true){
Serial.println("Tecla: 8, enciende tira color blanco");
print_color();
encender_tira();
}
else
{
Serial.println("Tecla: 8, apaga tira color blanco");
apagar_tira();
}
L_1=L_2=L_3=L_4=L_5=L_6=L_7=L_9=false;
break;
// codi Joan 0x00FF5AA5
// codi Jesus 0x00FF906F
case 0x00FF906F: //tecla 9
L_9=!L_9;
if (L_9==true){
for (int i=0; i<9;i++){//lila
pixels.setPixelColor(i, pixels.Color(214, 0, 193));
pixels.show();
delay (t_on);
}
for (int i=9; i<19;i++){//vermell
pixels.setPixelColor(i, pixels.Color(255, 0, 0));
pixels.show();
delay (t_on);
}
for (int i=19; i<29;i++){//taronja
pixels.setPixelColor(i, pixels.Color(255, 45, 0));
pixels.show();
delay (t_on);
}
for (int i=29; i<39;i++){//groc
pixels.setPixelColor(i, pixels.Color(255, 117, 0));
pixels.show();
delay (t_on);
}
for (int i=39; i<49;i++){//verd
pixels.setPixelColor(i, pixels.Color(0,255, 0));
pixels.show();
delay (t_on);
}
for (int i=49; i<59;i++){//blau
pixels.setPixelColor(i, pixels.Color(0,0, 255));
pixels.show();
delay (t_on);
}
}
else
{
Serial.println("Tecla: 9, apaga tira colors arco iris");
apagar_tira();
}
L_1=L_2=L_3=L_4=L_5=L_6=L_7=L_8=false;
break;
// codi Joan 0x00FF4AB5
// codi Jesus 0x00FF9867
case 0x00FF9867: Serial.println("Tecla: 0, apaga la tira");
L_1=L_2=L_3=L_4=L_5=L_6=L_7=L_8=L_9=false;
apagar_tira();
break;
}
irrecv.resume();
}
delay(600);
}
//función que enciende la tira
void encender_tira(){
for (int i=0; i<NUMPIXELS;i++){
pixels.setBrightness(fadeControl);//configuracion del brillo del led
pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));
pixels.show();
delay (t_on);
}
}
//
void print_color(){
Serial.print("redColor: ");
Serial.println(redColor);
Serial.print("greenColor: ");
Serial.println(greenColor);
Serial.print("blueColor: ");
Serial.println(blueColor);
}
//función que apaga la tira
void apagar_tira(){
for (int i=0; i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(0, 0, 0));
pixels.show();
}
}
Obra publicada con Licencia Creative Commons Reconocimiento Compartir igual 4.0