Como usar o botão liga e desliga do controle remoto (IR) para acender e apagar um led no arduino

Olá, amantes de robótica!
Com o infravermelho você poder receber o código do controle remoto da tv, dvd e outros.
Neste post, irei falar como ligar e desligar um led usando apenas o botão liga/desliga do controle remoto.



Veja o vídeo do liga/desliga do controle em funcionamento:





Vamos ao material que precisamos: 



Qtd     Itens:
1      -  Arduino UNO ou qualquer outra versão;
1      -  LED;
1      -  Receptor de infravermelho;
1      -  Resistor 20 ohms (para usar no receptor);
1      -  Resistor 20o ohms (para usar no led);
1      -  Controle remoto pode ser de tv, dvd, mp3;
5      -  Jumpers (Fios).

Não sabe onde comprar as peças, confira esse post:  onde comprar arduino e componentes

Vamos à montagem:



Basta fazer as mesmas conexões da imagem abaixo:
(clique na imagem pra ampliá-la)


Veja as fotos do projeto:











O mais importante, o código fonte:



Não sabe programar? Então acesse: Como programar em Arduíno, fazer robôs e projetos diversos
Se você é iniciante veja:Como enviar (upload) o programa pronto para a placa do arduino uno, mega entre outros

Atenção:
Para o código fonte funcionar é necessário baixar as bibliotecas: Baixar Library.

 /*   
  >>>>> Criando Robô Com Arduino <<<<<   
  ##### Robôs, Projetos e Tutoriais! #####  
  .:: Site principal: http://www.CriandoRoboComArduino.com/     
  .:: Site secundário: http://www.TestCriandoRoboComArduino.com/  
  ========== IMPORTANTE ==========   
  O código está livre para usar, citar, alterar e compartilhar,  
  desde que mantenha o site como referência.   
  Obrigado.  
  --------------------------------------------------------------------------------------------------  
  Projeto: Como usar o botão liga e desliga do controle remoto (IR) para acender e apagar um led no arduino   
  ---------------------------------------------------------------------------------------------------  
 */   
  #include <IRremote.h>// incluindo a biblioteca do infravermelho    
  const int RECEBE_PINO = 11; // pino 11 no arduino    
  int led = 7;// led no pino 7    
  int liga_desliga = 0; //variável para saber se o led está ligado ou desligado    
  int resultado = 0; //resultado do módulo (%) da divisão, se restar ele é 1, se não restar é 0    
  IRrecv ir_recebe(RECEBE_PINO); // declarando a variável do sensor    
  decode_results codigo_recebido; // resultado    
  void setup()    
  {    
  Serial.begin(9600); //mostra o resultado no computador    
  ir_recebe.enableIRIn(); // inicia a recepção    
  pinMode(led, OUTPUT); //defini o led como saída    
  }    
  void loop() {    
  if (ir_recebe.decode(&codigo_recebido)) {//verifica se um código foi recebido    
   if (codigo_recebido.value != 0 ){   
   Serial.println(codigo_recebido.value, HEX); //mostra no serial o resultado    
   }   
   //tem que colocar o 0x antes do número hexadecimal, pois só assim pode comparar no if    
   //comparação do código do ir    
   if (codigo_recebido.value == 0xFFA25D){// verifica se foi pressionado o liga/desliga do controle    
   resultado = liga_desliga % 2;//vê o resultado do módulo (resto da divisão)    
   if (resultado == 0) {//se da divisão não restar nada, ele ligará o led    
    digitalWrite(led, HIGH);   
    delay(500);     
   }else{    
    digitalWrite(led, LOW);    
    delay(500);     
   }    
   liga_desliga++;    
   }    
   ir_recebe.resume(); // recebe o próximo código    
   delay(200);    
  }    
  }    
 /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  
   >>>>> Acesse os sites: <<<<<  
   .:: Robôs, Projetos e Tutoriais  
     http://www.CriandoRoboComArduino.com/     
   .:: Testes dos robôs, noticias sobre robótica e muito mais  
     http://www.TestCriandoRoboComArduino.com/  
   >>>>> Inscreva-se nos canais no Youtube: <<<<<  
   .:: Vídeos dos robôs, projetos e tutoriais  
     Criando Robô Com Arduino  
     https://www.youtube.com/CriandoRoboComArduin  
   .:: Mostrando os testes dos robôs e projetos  
     Test Criando Robô Com Arduino  
     https://www.youtube.com/TestCriandoRoboComAr  
   :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/   
Código Atualizado!


Pronto, qualquer duvida é só deixar nos comentários ou entrar em Contato 

Quer ajuda ou quer ajudar? Clique em Ajuda e veja como você pode ajudar ou ser ajudado.



8 comentários:

  1. quero ligar/desligar com outro controle , sei o código do botão (3977428800) mas não liga , o Arduíno recebe o sinal ,porém o led de comunicação pisca mas não acontece nada com o led, fiquei em dúvida no que você falou sobre '' 0x depois multiplicava ...''

    ResponderExcluir
    Respostas
    1. olá, você tem que colocar o 0x pois a comparação e feita com números hexadecimais. esse código que você pegou ele é decimal, sugiro você ver esse post: http://www.criandorobocomarduino.com/2013/10/como-receber-sinal-de-um-controle.html
      siga o tutorial e veja qual o código do controle no serial do arduino.
      despois você faça esse tutorial.
      qualquer duvida e só perguntar!

      Excluir
  2. Olá, Obrigado por compartilhar!
    Eu fiz só algumas alterações: coloquei um delay de 500ms depois que ele liga ou desliga o led e adicionei uma linha:
    if (codigo_recebido.value != 0 )
    antes do serial print, pq ele ficava mostrando 0 quando não estava recebendo nada

    ResponderExcluir
    Respostas
    1. Por nada, obrigado por colaborar para melhorar!

      Excluir
  3. meu codiga da erro nessas duas frases IRrecv irrecv(RECV_PIN);
    para
    decode_results results; pois presiso ler o controle e nao dá

    ResponderExcluir
    Respostas
    1. Olá, Danilohv.
      Se você já instalou a biblioteca, exclua ela e instale novamente, qualquer coisa me pergunte, veja como instalar: http://www.criandorobocomarduino.com/p/bibliotecas-do-arduino.html

      Excluir
  4. gostaria de saber como colocar varios botoes.

    ResponderExcluir
  5. Dentro dessa ideia como eu faço para cada botão ligar e desligar alguma coisa? exemplo:

    botão 1: liga/desliga as luzes da sala
    botão 2: liga/desliga o portão automático
    botão 3: liga/desliga as luzes do quintal
    e por ai vai.
    Pois eu verifiquei que void loop ja esta configurado automático sem condição, pois ele so acenderá um led mas se por um acaso eu quisesse ligar e desligou outro leds como no exemplo que postei, como eu faria?

    ResponderExcluir

O seu comentário estará aguardando aprovação.