Saltar la navegación

Código Infrarojos

Vídeo ejemplo

Con el siguiente código vas a poder conseguir esto


Código

 /*
 * 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();
  }
}