Nesse post gostaria de mostrar o Led RGB endereçavel em funcionamento. Utilizei 4 LEDS juntamente com o kit receptor e controle IR que já mostrei em outro post aqui no Blog.

Utilizei as teclas de 1 a 4 para acender os leds e também para mudar a cor deles. As setas para cima e para baixo aumentam o brilho dos leds. O botão OK executa uma sequência de liga e desliga dos leds com cores diferentes.

 

Esquema de ligação:

Código:

#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results codigo;

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif

#define PIN            2
#define NUMPIXELS      4
int brilho = 10;
#define BRIGHTNESS brilho
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);


int LED;
int tecla_1 = 0;
int tecla_2 = 0;
int tecla_3 = 0;
int tecla_4 = 0;
int tecla = 0;


void setup(){
  Serial.begin(9600);
  irrecv.enableIRIn();
  pixels.setBrightness(BRIGHTNESS);
  pixels.begin();
  pixels.show();
  
}

void teclasindividuais(){
    if(codigo.value == 0xFF6897){ //TECLA 1
      LED = 0;
      tecla = tecla_1;
      tecla_1 = tecla_1 + 1; 
      if(tecla_1 == 4){
        tecla_1 = 0;
      }
    }
    if(codigo.value == 0xFF9867){ //TECLA 2
      LED = 1;            
      tecla = tecla_2;
      tecla_2 = tecla_2 + 1; 
      if(tecla_2 == 4){
        tecla_2 = 0;
      }
    }   
    if(codigo.value == 0xFFB04F){ //TECLA 3
      LED = 2;      
      tecla = tecla_3;
      tecla_3 = tecla_3 + 1;       
      if(tecla_3 == 4){
        tecla_3 = 0;
      }
    }
    if(codigo.value == 0xFF30CF){ //TECLA 4
      LED = 3;      
      tecla = tecla_4;
      tecla_4 = tecla_4 + 1;       
      if(tecla_4 == 4){
        tecla_4 = 0;
      }
    }

  if(tecla == 0){
    pixels.setPixelColor(LED, pixels.Color(255,0,0));
    pixels.show();
  }else if (tecla == 1){
    pixels.setPixelColor(LED, pixels.Color(0,255,0));
    pixels.show();        
  }else if(tecla == 2){
    pixels.setPixelColor(LED, pixels.Color(0,0,255));
    pixels.show();        
  }else{
    pixels.setPixelColor(LED, pixels.Color(0,0,0));
    pixels.show();        
  }
}

void pisca(){

  tecla_1 = 0;
  tecla_2 = 0;
  tecla_3 = 0;
  tecla_4 = 0;
  tecla = 0;

  pixels.setPixelColor(0, pixels.Color(0,0,0));
  pixels.setPixelColor(1, pixels.Color(0,0,0));
  pixels.setPixelColor(2, pixels.Color(0,0,0));
  pixels.setPixelColor(3, pixels.Color(0,0,0));  
  pixels.show();
  delay(1000);

for (int i = 0; i < 6; i++) {
    pixels.setPixelColor(0, pixels.Color(255,0,0));
    pixels.setPixelColor(1, pixels.Color(0,0,0));
    pixels.setPixelColor(2, pixels.Color(0,0,0));
    pixels.setPixelColor(3, pixels.Color(0,0,0));     
    pixels.show();
    delay(100);    
    pixels.setPixelColor(0, pixels.Color(0,255,0));
    pixels.setPixelColor(1, pixels.Color(255,0,0));
    pixels.setPixelColor(2, pixels.Color(0,0,0));
    pixels.setPixelColor(3, pixels.Color(0,0,0));     
    pixels.show(); 
    delay(100);    
    pixels.setPixelColor(0, pixels.Color(0,0,255));
    pixels.setPixelColor(1, pixels.Color(0,255,0));
    pixels.setPixelColor(2, pixels.Color(255,0,0));
    pixels.setPixelColor(3, pixels.Color(0,0,0));     
    pixels.show();
    delay(100);
    pixels.setPixelColor(0, pixels.Color(0,0,0));
    pixels.setPixelColor(1, pixels.Color(0,0,255));
    pixels.setPixelColor(2, pixels.Color(0,255,0));
    pixels.setPixelColor(3, pixels.Color(255,0,0));    
    pixels.show();
    delay(100);
    pixels.setPixelColor(0, pixels.Color(0,0,0));
    pixels.setPixelColor(1, pixels.Color(0,0,0));
    pixels.setPixelColor(2, pixels.Color(0,0,255));
    pixels.setPixelColor(3, pixels.Color(0,255,0));    
    pixels.show();
    delay(100);
    pixels.setPixelColor(0, pixels.Color(0,0,0));
    pixels.setPixelColor(1, pixels.Color(0,0,0));
    pixels.setPixelColor(2, pixels.Color(0,0,0));
    pixels.setPixelColor(3, pixels.Color(0,0,255));    
    pixels.show();
    delay(100);
}
    pixels.setPixelColor(0, pixels.Color(0,0,0));
    pixels.setPixelColor(1, pixels.Color(0,0,0));
    pixels.setPixelColor(2, pixels.Color(0,0,0));
    pixels.setPixelColor(3, pixels.Color(0,0,0));  
    pixels.show();

}

void aumBrilho(){
  if(brilho < 10){
    brilho = brilho + 1;
  }else if(brilho < 250){
    brilho = brilho + 10;
  }else if(brilho < 255){
    brilho = brilho + 1;
  }
  pixels.show();
}

void baiBrilho(){
  if(brilho > 250){
    brilho = brilho - 1;
  }else if(brilho > 10){
    brilho = brilho - 10;    
  }else if(brilho > 1){
    brilho = brilho - 1;    
  }
  pixels.show();
}

void loop() {

pixels.setBrightness(brilho);


if (irrecv.decode(&codigo)) {

   //##CHAMA O VOID PARA ACIONAR OS LEDS CONFORME CADA TECLA (TECLA DE 1 A 4)##//
   if((codigo.value == 0xFF6897)or(codigo.value == 0xFF9867)or(codigo.value == 0xFFB04F)or(codigo.value == 0xFF30CF)){
      teclasindividuais();
   }
   //##FIM##//

   //##CHAMA O VOID PARA ACIONAR UM PISCA-PISCA EM LOOP POR UM PERÍODO##//
   if(codigo.value == 0xFF02FD){
      pisca();
   }
   //##FIM##//

   //##CHAMA O VOID PARA AUMENTAR O BRILHO##//  
   if(codigo.value == 0xFF629D){
      aumBrilho();
   }

   //##CHAMA O VOID PARA DIMINUIR O BRILHO##//  
   if(codigo.value == 0xFFA857){
      baiBrilho();
   }   
   //##FIM##//
  
   irrecv.resume();
  
  }
}

Vídeo do exemplo:

 

Abraços e obrigado. Até a próxima.