quarta-feira, 27 de março de 2019

Controlar 3 LEDs com controle remoto no Arduino

    Neste projeto vamos utilizar um controle remoto e o receptor de infravermelho (IR) para controlar 3 LEDs com um controle remoto. Vamos LIGAR e DESLIGAR os LEDs pressionando alguns dos botões do controle remoto. 
Nota: Você pode utilizar controles que já tem, como o da TV. Mas utilize controles de infravermelho.

Lista de componentes:


1 - Arduino Uno;
1 - Controle remoto;
1 - Receptor IR;
1 - Protobord;
3 - LED's;
3 - Resistores de 220 ohms;
Alguns jumpers;

Circuito a ser montado:


    Para que a placa Arduino leia os códigos do controle remoto pela placa Arduino, precisamos de uma biblioteca externa, a biblioteca IRremote, você pode obter a biblioteca IRremote aqui.    ( como inserir nova biblioteca no arduino IDE )

    Neste projeto, primeiro executamos o programa de exemplo IRrecvDemo a partir do exemplo da biblioteca IR do arduino, para identicar o código dos botões do controle.

(Nota: Se você tiver algum erro ao executar esta biblioteca, remova “IRremoteTools.cpp” das bibliotecas \ RobotIRremote \ IRremoteTools.cpp)

Código Arduino para receber IR como código hexadecimal


#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Inicia o receptor
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Recebe o próximo valor
  }
}

     Em seguida, usamos os dados decodificados como condição de comutação no programa para ligar e desligar os três LEDs.

Código Arduino Para Controle Remoto IR

#include <IRremote.h>
 
int RECV_PIN = 11; // 
int output1 = 2;
int output2 = 4;
int output3 = 6;
int itsONled[] = {0,0,0,0};

#define code1  0xFF807F // 
#define code2  0xFFA05F // 
#define code3  0xFF906F // 
 
IRrecv irrecv(RECV_PIN);
 
decode_results results;
 
void setup()
{
  Serial.begin(9600);   // 
  irrecv.enableIRIn();  // 
  pinMode(output1, OUTPUT);
  pinMode(output2, OUTPUT);
  pinMode(output3, OUTPUT);
}
 
void loop() {
  if (irrecv.decode(&results)) {
    unsigned int value = results.value;
    switch(value) {
       case code1:
         if(itsONled[1] == 1) {        // 
            digitalWrite(output1, LOW);   // 
            itsONled[1] = 0;           // 
         } else {                      // 
             digitalWrite(output1, HIGH); // 
             itsONled[1] = 1;          // 
         }
          break; 
       case code2:
         if(itsONled[2] == 1) {
            digitalWrite(output2, LOW);
            itsONled[2] = 0;
         } else {
             digitalWrite(output2, HIGH);
             itsONled[2] = 1;
         }
          break;
       case code3:
         if(itsONled[3] == 1) {
            digitalWrite(output3, LOW);
            itsONled[3] = 0;
         } else {
             digitalWrite(output3, HIGH);
             itsONled[3] = 1;
         }
          break;          
    }
    Serial.println(value); // Você pode comentar esta linha
    irrecv.resume(); // Receber o próximo valor
  }
}
Neste programa nós usamos



code1 como  0xFF807F

code2 como  0xFFA05F
code3 como  0xFF906F

     Você pode alterar estes códigos de acordo com o código recebido no Monitor serial e a partir do primeiro  programa do arduino. 

Os componentes deste tutorial pode ser comprados AQUI!


Nenhum comentário:

Postar um comentário