06 setembro 2013

Controle remoto IR no Arduino

Já vimos aqui no Arduino e Cia como controlar remotamente o Arduino usando bluetooth (ainda não viu ? então veja o artigo Acionando portas do Arduino usando Android e bluetooth).

Hoje vou apresentar um outro método para controle remoto das portas do Arduino Uno R3, desta vez usando um Kit Controle Remoto IR, mostrado na foto abaixo, que chegou hoje da FILIPEFLOP :

Kit Controle Remoto IR

O kit é composto por 1 módulo receptor IR, 1 led infravermelho, 1 cabo de conexão e 1 controle remoto (com bateria CR2025).

No exemplo de hoje, vou focar na recepção do sinal do controle remoto, acendendo e apagando leds, conforme a sequência abaixo :

Tecla 1 : Acende led vermelho
Tecla 2 : Apaga led vermelho

Tecla 4 : Acende led verde
Tecla 5 : Apaga led verde

Tecla 9 : Apaga os 2 leds

Entendendo o principio de funcionamento do receptor IR, fica fácil controlar qualquer porta do Arduino e partir para o acionamento de relés, motores e outros dispositivos.

Atualizado : Veja também neste outro artigo  como utilizar o controle remoto IR para controlar um módulo relé 4 canais.

Circuito Arduino e módulo IR infravermelho


A ligação do módulo receptor IR segue o esquema mostrado na imagem abaixo, à esquerda, que consiste na ligação dos pinos do módulo à porta 11 do Arduino (sinal),  5v e GND. Na imagem da direita, podemos ver o módulo em funcionamento, com um led que pisca quando o módulo está recebendo sinais infravermelhos :

Pinagem receptor IR e receptor em funcionamento

Para o circuito, vamos utilizar 2 leds, 2 resistores de 330 ohms e o receptor IR, tomando o cuidado de observar a ligação correta dos pinos do módulo, evitando a queima do componente :

Circuito controle remoto IR
Criei um programa que faz a leitura do sinal IR recebido, e com base no valor lido, aciona as portas 5 e 7, onde estão ligados os leds. Esse programa também apresenta no monitor serial os valores lidos pelo receptor IR :

Monitor serial - Receptor IR

Desta forma consigo descobrir os valores, em hexadecimal, do sinal recebido por todas as teclas do controle remoto. No programa, usei os valores FF30CF (Tecla 1), FF18E7 (tecla 2), FF10EF (tecla 4), FF38C7 (tecla 5), e FF52AD (tecla 9).

Finalmente, no loop, eu testo o valor recebido pelo receptor IR, e com alguns comandos IF eu verifico qual tecla foi acionada, acendendo e apagando o led correspondente. Usei a tecla 9 para apagar os 2 leds de uma só vez.

Para este programa, vamos utilizar a biblioteca IRremote, que voce pode baixar clicando aqui :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Programa : Teste Controle Remoto IR  
// Autor : Arduino e Cia  
  
#include <IRremote.h>  
  
int RECV_PIN = 11;  
float armazenavalor;  
int pinoledvermelho = 5;  
int pinoledverde = 7;  
  
IRrecv irrecv(RECV_PIN);  
decode_results results;  
  
void setup()  
{  
  pinMode(pinoledvermelho, OUTPUT);   
  pinMode(pinoledverde, OUTPUT);  
  Serial.begin(9600);  
  irrecv.enableIRIn(); // Inicializa o receptor IR  
}  
   
void loop()  
{  
  if (irrecv.decode(&results))  
  {  
    Serial.print("Valor lido : ");  
    Serial.println(results.value, HEX);  
    armazenavalor = (results.value);  
    if (armazenavalor == 0xFF30CF) //Verifica se a tecla 1 foi acionada  
    {  
      digitalWrite(pinoledvermelho, HIGH);  //Acende o led vermelho  
    }  
    if (armazenavalor == 0xFF18E7) //Verifica se a tecla 2 foi acionada  
    {  
      digitalWrite(pinoledvermelho, LOW); //Apaga o led vermelho  
    }  
    if (armazenavalor == 0xFF10EF) //Verifica se a tecla 4 foi acionada  
    {  
      digitalWrite(pinoledverde, HIGH); //Acende o led verde  
    }  
    if (armazenavalor == 0xFF38C7) //Verifica se a tecla 5 foi acionada  
    {  
      digitalWrite(pinoledverde, LOW); //Apaga o led verde  
    }  
    if (armazenavalor == 0xFF52AD) //Verifica se a tecla 9 foi acionada  
    {  
      digitalWrite(pinoledvermelho, LOW); //Apaga todos os leds  
      digitalWrite(pinoledverde, LOW);  
    }  
  irrecv.resume(); //Le o próximo valor  
  }  
}  

104 comentários:

  1. Respostas
    1. Bom dia. Consegui testar até uns 6 metros, mas as condições vão depender de luminosidade, do próprio controle remoto, das baterias, etc.

      Excluir
    2. como conpro esse kit ?

      Excluir
    3. Boa tarde ! Tem na FilipeFlop, não só esse kit, como também relés, shields, motores e outros sensores que eu menciono aqui no site : www.filipeflop.com

      Abraço !

      Excluir
    4. Caro colega busquei esse kit no site que você propôs www.filipeflop.com, mas não consegui encontra-lo você poderia me mandar o link exato por favor, estou tentando trabalhar com mecanismos que tenham essa abordagem.

      Excluir
    5. Bom dia,

      Já está disponível no site, nesse link :

      http://www.filipeflop.com/pd-6b86d-kit-controle-remoto-ir.html

      Abraço e obrigado !

      Excluir
  2. IRrecv irrecv(RECV_PIN); ta dando erro alguem sabe pq? meu arduino uno ja testei algumas versão sempre da esse erro.

    ResponderExcluir
    Respostas
    1. Bom dia Josias, qual biblioteca você usou ?

      Excluir
    2. o Meu tambem deu erro como faço para adicionar a biblioteca?

      Excluir
    3. Boa noite Ricardo, baixe a biblioteca, descompacte e coloque a pasta da biblioteca dentro da pasta LIBRARIES da IDE do Arduino. Abraço !

      Excluir
    4. Verifique se voce não tem uma pasta de BIBLIOTECA SECUNDARIA como exemplo: c:\Arquivos de Programas\Arduino\libraries e uma outra em c:\Usuários\Seulogin\Documentos\Arduino\libraries <- CASO TIVER, ATUALIZE AS DUAS!

      Excluir
  3. Excelente tutorial. Tentei varias vezes executar o meu no Arduíno Mega mais simplesmente não funcionou, quando troquei por um Arduíno Uno funcionou perfeitamente.

    ResponderExcluir
    Respostas
    1. Boa noite Alex ! Muito obrigado pelo retorno. Vou testar aqui com o meu Arduino Mega e verificar por que não funciona. Grande abraço !

      Excluir
  4. poderia disponibilizar o codigo que usou para fazer a leitura do sinal IR recebido e que depois apresenta no monitor serial os valores lidos pelo receptor IR.
    Otimo projeto !!!!

    ResponderExcluir
    Respostas
    1. Boa noite Ricardo ! Você pode usar o programa deste artigo mesmo. Carregue o programa no Arduino, abra o Serial Monitor e acione o controle remoto para ver os códigos que estão sendo recebidos pelo Arduino. Qualquer outra dúvida, é só falar. Abraço e obrigado !

      Excluir
  5. Como faço para ligar e desligar uma lampada de 220V usando esta biblioteca, eu tentei fazer com a biblioteca NECIRrcv, mas esta dando varios erros.

    ResponderExcluir
  6. Boa tarde Alex. Você está usando algum tipo de módulo relé ? Por favor dê uma olhada neste artigo :

    http://www.arduinoecia.com.br/2013/10/modulo-rele-4-canais-e-controle-remoto.html

    Talvez te ajude. Se a configuração que você está usando for diferente, volte aqui que eu tento te ajudar. Abraço !

    ResponderExcluir
  7. Respostas
    1. Boa noite Ricardo, baixe a biblioteca, descompacte e coloque a pasta da biblioteca dentro da pasta LIBRARIES da IDE do Arduino. Abraço !

      Excluir
  8. sua biblioteca esta em arquivo rar entao nao consigo adiciona-la no arduino como faço?

    ResponderExcluir
    Respostas
    1. Boa tarde Ricardo, você vai precisar de um programa que leia arquivo no formato RAR, como o Winrar, que você pode baixar aqui :

      http://www.baixaki.com.br/download/winrar.htm

      Excluir
  9. Ola,

    Estou com problema no meu codigo, Voces poderiam me ajudar? Comprei o Controle Remoto IR.

    Para testar, li os numeros que correspondiam a cada botao, como vcs descreveram acima.

    Peguei o valor de uma tecla, no caso o botao "2".

    Se o usuario apertasse o botao 2, o robo comecaria a andar, conforme a minha programacao. Mas isso nao ocorre, o Monitor mostra "FFFFFFF" infinitas vezes, sendo que eu apertei so uma.

    #include

    int RECV_PIN = 11;
    float armazenavalor;
    IRrecv irrecv(RECV_PIN);
    decode_results results;
    int ENA=5;//connected to Arduino's port 5(output pwm)
    int IN1=2;//connected to Arduino's port 2
    int IN2=3;//connected to Arduino's port 3
    int ENB=6;//connected to Arduino's port 6(output pwm)
    int IN3=4;//connected to Arduino's port 4
    int IN4=7;//connected to Arduino's port 7
    void setup()
    {
    pinMode(ENA,OUTPUT);//output
    pinMode(ENB,OUTPUT);
    pinMode(IN1,OUTPUT);
    pinMode(IN2,OUTPUT);
    pinMode(IN3,OUTPUT);
    pinMode(IN4,OUTPUT);
    digitalWrite(ENA,LOW);
    digitalWrite(ENB,LOW);
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,HIGH);
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,HIGH);
    //Serial.begin(9600);
    //irrecv.enableIRIn(); // Inicializa o receptor IR
    }
    void loop()
    {
    if(irrecv.decode(&results))
    {
    Serial.print("Valor lido : ");
    Serial.println(results.value, HEX);
    armazenavalor = (results.value);
    }
    if( armazenavalor == 'FF18E7'){
    analogWrite(ENA, 255);
    analogWrite(ENB, 255);
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,HIGH);
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,HIGH);
    delay(3000);
    analogWrite(ENA, 255);
    analogWrite(ENB, 255);
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,LOW);
    delay(3000);
    analogWrite(ENA, 255);
    analogWrite(ENB, 0);
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,HIGH);
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,HIGH);
    delay(3000);
    analogWrite(ENA, 0);
    analogWrite(ENB, 255);
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,HIGH);
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,HIGH);
    delay(4000);
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,LOW);
    delay(2000);
    }

    ResponderExcluir
    Respostas
    1. Boa tarde. Você tentou com o código deste artigo ? Está normal ?

      Excluir
  10. Segui esse tutorial, os leds acenderam e tudo mais, porem ele nao printar os valores lidos não. Copiei e montei exatamento como descrito. Alguem sabe o que poderia fazer isso?

    ResponderExcluir
    Respostas
    1. Boa tarde Samuel.

      Ele não está apresentando nada no serial monitor ? Ou apenas os valores lidos do controle remoto não aparecem ?

      Abraço.

      Excluir
  11. qria saber o pq do 0x no " if (armazenavalor == 0xFF30CF)"??? tipo o codigo da tecla 1 do meu controle eh FE01BF40 entaum no meu codigo dve ficar :if (armazenavalor == 0xFE01BF40) ???

    ResponderExcluir
    Respostas
    1. Boa tarde,

      O "0x" é usado na representação hexadecimal. O seu código fica exatamente como você mostrou : if (armazenavalor == 0xFE01BF40)

      Abraço !

      Excluir
    2. vlw vou testar ake , so q inves d ligar led vou ligar 2 reles .

      Excluir
    3. Legal !

      Eu tenho um artigo falando sobre o controle remoto IR com reles :

      http://www.arduinoecia.com.br/2013/10/modulo-rele-4-canais-e-controle-remoto.html

      E também outros artigos sobre relés, se você não estiver usando módulo. Faça uma procura no meu site, por favor, creio que vá encontrar material para o que precisa.

      Abraço !

      Excluir
    4. haha eu ja tinha lido esse axei mto massa

      Excluir
    5. meu codigo ta dando erro estou tentando fazer um buzer apitar qndo um rele acende so q n esta compilando olha ake meu codigo
      #include

      int RECV_PIN = 11;
      float armazenavalor;
      int RELE1 = 5;
      int RELE2 = 7;
      const int buzzer = 9;

      IRrecv irrecv(RECV_PIN);
      decode_results results;

      void setup()
      {
      pinMode(RELE1, OUTPUT);
      pinMode(RELE2, OUTPUT);
      pinMode(buzzer,OUTPUT);
      Serial.begin(9600);
      irrecv.enableIRIn(); // Inicializa o receptor IR
      }

      void loop()
      {
      if (irrecv.decode(&results))
      {
      Serial.print("Valor lido : ");
      Serial.println(results.value, HEX);
      armazenavalor = (results.value);
      if (armazenavalor == 0x2FD807F) //Verifica se a tecla 1 foi pressionada
      {
      digitalWrite(RELE1, HIGH); //liga rele1
      tone(buzzer,1500);
      noTone(buzzer);

      }
      if (armazenavalor == 0x2FD40BF) //Verifica se a tecla 2 foi pressionada
      {
      digitalWrite(RELE1, LOW); //desliga rele1
      }
      if (armazenavalor == 0x2FD20DF) //Verifica se a tecla 4 foi pressionada
      {
      digitalWrite(RELE2, HIGH); //Liga rele2
      tone(buzzer,1500);
      noTone(buzzer);
      }
      if (armazenavalor == 0x2FDA05F) // Verifica se a tecla 5 foi pressionada
      {

      digitalWrite(RELE2, LOW); //desliga rele2
      }
      if (armazenavalor == 0x2FD48B7) // Verifica se a tecla 9 foi pressionada
      {
      digitalWrite(RELE1, LOW); //desliga tdos reles
      digitalWrite(RELE2, LOW);
      }

      irrecv.resume(); //Le o próximo valor
      }
      }

      Excluir
    6. Bom dia,

      Eu tentei compilar aqui e também deu erro. Aparentemente é algum conflito entre a biblioteca do IR e a Tone, que estão usando uma mesma interrupção.

      Provavelmente será necessário mexer na biblioteca, se for só um parâmetro, ou então trocar para uma biblioteca como a bassdll :

      http://github.com/drewcrawford/bassdll/

      Ainda não tive oportunidade de mexer com essa biblioteca, mas vou fazer alguns testes, porque eu também tentei usar o Tone com alguns outros componentes e tive o mesmo erro.

      Abraço !

      Excluir
    7. Boa tarde Gvt !

      Fiz os testes com uma biblioteca nova, a NewTone, e não tive problemas de conflito. Basta incluir a biblioteca no programa, e trocar as instruções Tone por NewTone, e notone por noNewTone. Aqui compilou direitinho. A biblioteca pode ser baixada nesse link :

      https://code.google.com/p/arduino-new-tone/downloads/list

      Depois me avise se funcionou, por favor.

      #include
      #include

      int RECV_PIN = 11;
      float armazenavalor;
      int RELE1 = 5;
      int RELE2 = 7;
      const int buzzer = 2;

      IRrecv irrecv(RECV_PIN);
      decode_results results;

      void setup()
      {
      pinMode(RELE1, OUTPUT);
      pinMode(RELE2, OUTPUT);
      pinMode(buzzer,OUTPUT);
      Serial.begin(9600);
      irrecv.enableIRIn(); // Inicializa o receptor IR
      }

      void loop()
      {
      if (irrecv.decode(&results))
      {
      Serial.print("Valor lido : ");
      Serial.println(results.value, HEX);
      armazenavalor = (results.value);
      if (armazenavalor == 0x2FD807F) //Verifica se a tecla 1 foi pressionada
      {
      digitalWrite(RELE1, HIGH); //liga rele1
      NewTone(buzzer,1500);
      noNewTone(buzzer);

      }
      if (armazenavalor == 0x2FD40BF) //Verifica se a tecla 2 foi pressionada
      {
      digitalWrite(RELE1, LOW); //desliga rele1
      }
      if (armazenavalor == 0x2FD20DF) //Verifica se a tecla 4 foi pressionada
      {
      digitalWrite(RELE2, HIGH); //Liga rele2
      NewTone(buzzer,1500);
      noNewTone(buzzer);
      }
      if (armazenavalor == 0x2FDA05F) // Verifica se a tecla 5 foi pressionada
      {

      digitalWrite(RELE2, LOW); //desliga rele2
      }
      if (armazenavalor == 0x2FD48B7) // Verifica se a tecla 9 foi pressionada
      {
      digitalWrite(RELE1, LOW); //desliga tdos reles
      digitalWrite(RELE2, LOW);
      }

      irrecv.resume(); //Le o próximo valor
      }
      }

      Excluir
  12. deu erro tb deu isso ake " 'NewTone' was not declared in this scope
    'noNewTone' was not declared in this scope "

    ResponderExcluir
  13. mas se n ta d boa soh qria dar uma enfeitada no meu projeto rsrsrs

    ResponderExcluir
    Respostas
    1. Oi gtv !

      Olha, eu acho que na hora de copiar e colar uma parte do codigo "sumiu". rs. Esse erro é provavelmente falta da biblioteca, você a instalou ?

      E os dois includes no começo do programa ficam assim (sem os espaço entre as chaves) :

      #include < IRremote.h >
      #include < NewTone.h >

      Abraço !

      Excluir
  14. car meu IDE travou...fui mexer nele hj e n consigo digitar ou editar nenhum codigo.a tela de ediçao fica cinza =(((( ja reinstalei o IDE mas nd mudou

    ResponderExcluir
  15. Voces sao d+ ! obrigado por compartilhar.

    ResponderExcluir
  16. Oi pessoal...
    estou com problemas ao programar um trabalho que efectuei com arduino uno..
    Portanto, ele funciona, com este que menciono mais em baixo.. pressiono o botão 1.ele liga e desliga no 4...
    Mas a minha dificuldade é desligar o sinal automaticamente..
    Se alguém puder ajudar, sff.,obrg


    #include // aqui estou chamando a biblioteca do sensor IR

    int RECV_PIN = 2; // Diz que o receptor IR esta conectado no pino 2




    IRrecv irrecv(RECV_PIN);




    decode_results results;




    void setup()

    {

    Serial.begin(9600); // Abre a porta serial.

    pinMode(13, OUTPUT); // define a porta 3 que vai enviar o sinal de on/off para o rele

    irrecv.enableIRIn(); // Inicia o receptor IR.







    }

    void loop(){

    if (irrecv.decode(&results)) {

    Serial.println(results.value, DEC); // Envia o codigo do botão pressionado para a porta serial.

    irrecv.resume();

    }

    if (results.value == 16724175){ digitalWrite(13,HIGH);} // Se o receptor IR receber o codigo "16724175" ira Acionar o rele do pino 3.




    if (results.value == 16716015){ digitalWrite(13,LOW);} // Se o receptor IR receber o codigo "16716015" ira Desligar o rele do pino 3.

    }

    ResponderExcluir
    Respostas
    1. Oi Sérgio,

      Em que momento você precisa que ele desligue automaticamente ? E depois de quanto tempo ?

      Abraço !

      Excluir
    2. oi !!
      Em milésimos de segundo....
      Este projeto serve para abrir uma porta de entrada do prédio com o telecomando..
      É só para dar o sinal...
      Agradecia , obg..
      Abraço

      Excluir
    3. Boas..
      O momento que preciso que ele desligue, é logo a seguir ao pressionar o botão 16724175...em milésimos de segundo..Abraço

      Excluir
  17. Ufa. .Já consegui .
    Obrig na mesma..
    Foi com esta programação...


    #include // aqui estou chamando a biblioteca do sensor IR

    int RECV_PIN = 2; // Diz que o receptor IR esta conectado no pino 2




    IRrecv irrecv(RECV_PIN);




    decode_results results;




    void setup()

    {

    Serial.begin(9600); // Abre a porta serial.

    pinMode(13, OUTPUT); // define a porta 3 que vai enviar o sinal de on/off para o rele

    irrecv.enableIRIn(); // Inicia o receptor IR.







    }

    void loop(){

    if (irrecv.decode(&results)) {

    Serial.println(results.value, DEC); // Envia o codigo do botão pressionado para a porta serial.

    irrecv.resume();

    }

    if (results.value == 16724175){ digitalWrite(13,HIGH);} // Se o receptor IR receber o codigo "16724175" ira Acionar o rele do pino 3.


    delay(2);

    digitalWrite(13,LOW); // Se o receptor IR receber o codigo "16716015" ira Desligar o rele do pino 3.

    }

    ResponderExcluir
  18. Bons dias , estou com um problema.
    Depois de ter inserido a programação ficou funcionando perfeitamente, só ficou faltando um promenor..
    Então quando aciono o botão tenho que estar ai a uns 60 centímetros para que de o sinal...
    E eu queria que o sinal fosse efetuado a uma distancia de 3 metros, do telecomando ao recetor de infravermelho..
    Será possível ???

    ResponderExcluir
    Respostas
    1. Boa noite Sergio,

      Realmente o alcance desse tipo de controle não é muito grande. Aqui nos meus testes eu consegui acionar o sensor à uma distância máxima de 2 metros, e ainda assim com algumas falhas.

      Talvez seja necessária a montagem de algum outro tipo de circuito, mas eu ainda não tenho esse esquema disponível aqui no site.

      Abraço !

      Excluir
  19. Funciona com qualquer controle remoto?

    ResponderExcluir
    Respostas
    1. Boa noite Daniel,

      Com alguns controles mais simples, sim. Com o Arduino você pode montar circuitos para "aprender" os códigos de algum controle remoto, e depois usar esses códigos para acionar as portas do Arduino.

      Abraço !

      Excluir
  20. ola,
    eu queria accionar um relé carregando na tecla 1 do comando, (por exemplo), e desligar o mesmo relé se carregar novamente na mesma tecla, (basicamente a cada toque na tecla corresponde a uma mudança de estado do relé). Aqui têm exemplos em que liga numa tecla, e desliga noutra:

    if (armazenavalor == 0x2FD807F) //Verifica se a tecla 1 foi pressionada
    {
    digitalWrite(RELE1, HIGH); //liga rele1
    }
    if (armazenavalor == 0x2FD40BF) //Verifica se a tecla 2 foi pressionada
    {
    digitalWrite(RELE1, LOW); //desliga rele1
    }

    no entanto não vejo com ligar e desligar na mesma tecla!

    Alguém pode ajudar?

    ResponderExcluir
    Respostas
    1. Bom dia,

      Nesse artigo eu falo sobre acionamento de relés utilizando apenas um push-button para ligar e desligar uma lâmpada. Você pode usar o mesmo princípio para montar o seu projeto :

      http://www.arduinoecia.com.br/2013/08/ligando-uma-lampada-com-rele-e-push.html

      Abraço !

      Excluir
  21. Olá amigo, excelente artigo, parabéns.
    Recentemente adquiri um kit iniciante e pretendo usar seus exemplos em meus estudo, por isso, desde já, quero agradecer sua ajuda.
    Mas adiantando um pouco, gostaria de saber se você tem algum exemplo que use o led infravermelho para ENVIO do sinal. Quero montar um circuito que "aprenda" alguns sinais de meus controles remotos e assim montar um "controle universal".
    Mais uma vez, agradeço pela ajuda.

    ResponderExcluir
    Respostas
    1. Boa tarde Magrão !

      Muito obrigado. Fique à vontade para entrar em contato se precisar de algo.

      Eu não tenho esse exemplo, mas já vi alguma coisa parecida. O único problema de montar alguma coisa assim é que não são todos os controles que funcionam com esses módulos do Arduino. Alguns controles, pelo que eu pesquisei, enviam dados numa frequência bem mais alta ou bem mais baixa do que o módulo consegue reconhecer, e isso causa alguns problemas. Tem também algumas questões de codificação.

      Mas é um projeto interessante. Pretendo escrever sobre isso.

      Abraço !

      Excluir
  22. Estou com 2 pequenos problemas...
    Usei como base o código disponibilizado por vocês, porém, eu resolvi testar outras aplicações, tentei por enquanto fazer só um led piscar, para isso utilizei um laço while para criar a repetição, logo depois do if, mas o while só repete determinadas vezes, por maior que seja o número, uma hora ele vai se interromper... Queria saber qual laço eu teria que usar e qual a condição para ele se tornar, digamos, "infinito". Meu outro problema é que, após dar o comando para o led piscar, não consigo fazer com que ele pare de piscar, ou seja, depois que eu aperto o botão ele não para mais, mesmo eu tendo colocado um botão especifico para isso (assim como ligar e desligar o led), percebi que isso não funciona. vocês poderiam me ajudar quanto a esses 2 pequenos problemas, sei que não é nada complicado, porém, não estou conseguindo raciocinar como isso deveria ser feito, eu tenho em mente que eu teria que criar um laço, e dentro desse laço estabelecer a condição para cada comando, mas não estou conseguindo fazer :/. Abaixo está o código que eu alterei, vocês poderiam mandar um código? se possivel, claro, ou então dizer qual laço devo usar e quais as condições para isto? preciso ao menos de uma luz kkkkk
    Desde já, agradeço.
    E parabéns pelo site, vocês conseguem passar o conteúdo de forma bem didática, de modo que, quem está começando, assim como eu, consegue aumentar o conhecimento mais facilmente, com uma forma muito didática.
    O código está abaixo:

    #include // incluindo a biblioteca do infravermelho
    const int RECEBE_PINO = 2; // pino 6 no arduino
    int ledverde = 7;// led no pino 10
    int ledamarelo = 6;
    int ledvermelho = 5;
    int i= 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(ledverde, OUTPUT); //defini led como saída
    pinMode(ledamarelo, OUTPUT);
    pinMode(ledvermelho, OUTPUT);
    }
    void loop() {
    if (ir_recebe.decode(&codigo_recebido)) {//verifica se um codigo 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 numero hexadecimal, pois só assim para poder comparar no if
    //liga led verde

    if ((codigo_recebido.value == 0x61F418E7) || (codigo_recebido.value == 0x213C4CB3)){
    while (i<999999999){
    digitalWrite(ledverde, HIGH);
    delay(100);
    digitalWrite (ledverde, LOW);
    delay(100);


    i++;

    }
    }
    }
    ir_recebe.resume(); // recebe o próximo código
    delay(200);
    }

    ResponderExcluir
    Respostas
    1. Boa noite,

      Você consegue um esquema do circuito que você montou ? Gostaria de tentar reproduzir aqui, aí já faço um teste com o seu programa.

      Se puder me mandar, utilize o formulário de contato do lado direito da página, e eu respondo logo em seguida com o meu email.

      Abraço !

      Excluir
  23. amigo não funcionou nada :/ nem aparece nada no serial monitor sabe oque pode ser?

    ResponderExcluir
    Respostas
    1. Boa tarde Paulo,

      Sabe me dizer se o controle remoto IR está emitindo sinal ? Você consegue ver isso usando a câmera fotográfica do celular, por exemplo.

      Abraço !

      Excluir
  24. estou com problema na hora do codigo me ajudem por favor
    IRrecvDump:14: error: variable or field 'dump' declared void
    IRrecvDump:14: error: 'decode_results' was not declared in this scope
    IRrecvDump:14: error: 'results' was not declared in this scope
    IRrecvDump:17: error: variable or field 'dump' declared void
    IRrecvDump:17: error: 'decode_results' was not declared in this scope
    IRrecvDump:17: error: 'results' was not declared in this scope
    IRrecvDump:14: error: 'IRrecv' does not name a type
    IRrecvDump:16: error: 'decode_results' does not name a type
    IRrecvDump.ino: In function 'void setup()':
    IRrecvDump:21: error: 'irrecv' was not declared in this scope
    IRrecvDump.ino: At global scope:
    IRrecvDump:29: error: variable or field 'dump' declared void
    IRrecvDump:29: error: 'decode_results' was not declared in this scope
    IRrecvDump:29: error: 'results' was not declared in this scope

    ResponderExcluir
    Respostas
    1. Bom dia,

      Isso está parecendo falta de biblioteca. Você instalou ?

      Abraço.

      Excluir
  25. Boa noite,. Tenho um arduino Mega e estou usando a versão 1.0.5 do arduino. Baixei a biblioteca, extrai ela na pasta libraries da IDE, consigo compilar normalmente, mas quando abro a serial para ver os valores encontrados, não importa que tecla eu aperte ou controle que eu use, o valor lido é sempre 0. Vc sabe me dizer o que pode estar acontecendo?

    ResponderExcluir
    Respostas
    1. Boa noite Jony,

      Você está usando o mesmo controle remoto que eu usei no post ? Eu testei com um controle remoto de TV e ele também dá uns valores estranhos, deve ser algum tipo de codificação, frequencia, etc.

      Abraço.

      Excluir
  26. Olá amigo, você tem que ver quais são os códigos que seu controle dá e mudar no programa. Para mim funcionou uma beleza. Parabéns autor. Eu usei um IR Receiver de uma TV antiga.

    ResponderExcluir
    Respostas
    1. Boa noite Renato,

      Excelente informação. :)

      Valeu. Abraço !

      Excluir
  27. Boa noite, ótimo tutorial !!! Será que vocês podem me ajudar ? Estou com o seguinte problema: eu tento compilar o código de exemplo que vem junto com a biblioteca e sempre dá erro, já instalei versões mais antigas da IDE do Arduino mas não resolve, aparece sempre esse erro: This report would have more information with
    "Show verbose output during compilation"
    enabled in File > Preferences.
    Arduino: 1.0.6 (Windows 7), Board: "Arduino Uno"
    C:\Users\Avell\Documents\Arduino\Arduino IDE\Arduino\libraries\RobotIRremote\IRremoteTools.cpp:5: error: 'TKD2' was not declared in this scope

    E o código seria esse:
    #include

    int RECV_PIN = 11;

    IRrecv irrecv(RECV_PIN);

    decode_results results;

    void setup()
    {
    Serial.begin(9600);
    irrecv.enableIRIn(); // Start the receiver
    }

    void loop() {
    if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
    }
    }

    A biblioteca está na pasta correta e mesmo assim dá esse erro !

    Obrigado desde já.

    ResponderExcluir
    Respostas
    1. Boa noite Marcus,

      Aqui compilou normal... Isso tá muito com cara de erro na biblioteca ou na IDE, apesar de você já ter conferido isso.

      Dê uma olhada nesse link, quem sabe te ajude.

      https://github.com/shirriff/Arduino-IRremote/issues/53

      Abraço !

      Excluir
    2. tenta isso.
      Abra o software do arduino vai sketch -> import library-> add library e acha onde está a sua biblioteca (mesmo que já esteja na pasta correta).
      Funcionou aqui.

      Excluir
  28. o meu deu esse erro

    C:\Program Files (x86)\Arduino\libraries\RobotIRremote\IRremoteTools.cpp:5: error: 'TKD2' was not declared in this scope

    ResponderExcluir
    Respostas
    1. Boa noite,

      Que biblioteca você está usando ?

      Abraço !

      Excluir
    2. tenta isso.
      Abra o software do arduino vai sketch -> import library-> add library e acha onde está a sua biblioteca (mesmo que já esteja na pasta correta).
      Funcionou aqui.

      Excluir
  29. boa tarde, partindo deste principio seria possivel emular as teclas do teclado no controle remoto tipo programar o arduino para ao receber o codigo de uma determinada tecla no controle remoto ele manda essa informação para o pc emulando o teclado, para que o pc entenda como se fosse pressionada uma determinada tecla do teclado? pois estou vendo a possibilidade de substituir os botoes de uma junkbox por um controle remoto. seria possivel fazer esta façanha com o arduino?

    ResponderExcluir
    Respostas
    1. Boa noite Jardel,

      Seria possível sim. No Arduino Uno eu sei que é possível emular um teclado, mas ainda não tive a oportunidade de testar.

      Já com o Arduino Leonardo, eu tenho um post falando sobre isso, dê uma olhada, pois acho que tem o que você precisa :

      http://www.arduinoecia.com.br/2014/05/arduino-leonardo-teclado-mouse.html

      Abraço !

      Excluir
    2. /*
      UTILIZAÇÃO DE UM CONTROLE IR PARA, ATRAVES DAS TECLAS, EMULAR AS FUNÇOES DO TECLADO
      NO PC USANDO A PORTA SERIAL.

      jardel Sousa Gomes 09/12/2014
      ======================================================
      */
      #include // incluindo a biblioteca do infravermelho
      const int Rec_Pin = 11; // pino 6 no arduino receptor IR
      int led = 13;// led no pino 13

      IRrecv ir_recebe(Rec_Pin); // declarando a variável do sensor IR
      decode_results codigo_recebido; // decodifica resultado


      void setup(){

      Serial.begin(9600); //inicia comunicação serial
      ir_recebe.enableIRIn(); // inicia a recepção
      pinMode(led, OUTPUT); //defini led como saída

      }

      void loop() {

      if (ir_recebe.decode(&codigo_recebido)) {//verifica se um codigo foi recebido
      if (codigo_recebido.value != 0 ){

      digitalWrite(led,true);//acende led para indicar decodificação

      switch (codigo_recebido.value) {//verifica qual tecla do controle IR foi pressionada e envia
      //a seuquencia de codigo relacionada a tecla a ser emulada no PC.

      case 0xff629d:// tecla "cima"
      tecla(0);
      break;

      case 0xffa857: // tecla "baixo"
      tecla(1);
      break;

      case 0xff22dd: // tecla "esquerda" [esc]left.
      tecla(2);
      break;

      case 0xffc23d:// tecla "direita" [esc]right.
      tecla(3);
      break;

      case 0xff02fd: // tecla "ok" [esc]enter.
      tecla(4);
      break;
      }

      delay(50);
      }
      digitalWrite(led,false);//apaga led

      ir_recebe.resume(); // recebe o próximo código

      }
      }

      void tecla(int n){//funcão envia sequencia de caracteres
      char* mstring[]={
      "up","down","left","right","enter" };
      Serial.write(27);
      Serial.write(mstring[n]);
      Serial.write(46);


      }






















      Excluir
  30. Amigo, gostei muito do seu tutorial porém estou tentando fazê-lo funcionar e quando aciono qualquer tecla do controle remoto só aparece a mensagem "Valor lido : 0", já tentei de tudo mas nada dá certo, meu arduino é o Uno e estou utilizando o Tsop2380 ( as ligações do mesmo seria : out, 5v e gnd ), poderia me dar alguma idéia onde posso estar errando?

    ResponderExcluir
    Respostas
    1. Bom dia,

      Não estou encontrando informações sobre o TSOP2380. Você pode me passar algum link desse módulo, ou onde você adquiriu ?

      Abraço !

      Excluir
  31. Boa Noite,
    Preciso fazer a leitura de alguns sinais infravermelhos, todavia nao acho em site algum algo de como fazer. O que eu quero é basicamente o codigo hexadecimal emitido por um controle qualquer.
    Numa outra pergunta acima, o sr.(a) respondeu que seria apenas copiar o programa no arduino e clicar em "Serial Monitor". Qual programa é esse? É a programação ora descrita para acender e apagar os leds?

    Aguardo ansiosamente pela resposta
    Grato

    ResponderExcluir
    Respostas
    1. Boa noite,

      Você quer fazer a leitura de outros tipos de controle remoto, certo ?

      Não são todos que vão funcionar com esse módulo do Arduino, já que muitos controles tem códigos "proprietários" que você não conseguirá ler. Um exemplo de controle muito difícil de ler são esses de ar condicionado, por exemplo.

      Com relação ao programa, é esse do post, sobre acender e apagar leds com o Arduino. O Serial monitor é um recurso presente dentro da IDE (ambiente de programação) do Arduino que permite que a placa envie dados para o computador e você consiga ler isso de uma forma bem simples.

      Abraço !

      Excluir
  32. Galera como faço acender e apagar as luzes pelo mesmo botão do controle remoto?

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Tente as informações deste post, tem o que você precisa: http://www.arduinoecia.com.br/2013/10/modulo-rele-4-canais-e-controle-remoto.html

      Abraço !

      Excluir
  33. Boa tarde. Recentemente ao incluir a biblioteca IRremote e usá-la, aconteceu que o código não compilou. Pelo erro que aconteceu, acredito que alguma função ou até mesmo a biblioteca entra em conflito com alguma outra biblioteca padrão das versões atuais do Arduino por possuir o mesmo nome. Em versões antigas do IDE o código compila normalmente, mas quando atualizei para a versão atual, a biblioteca mostra-se como "dupla" na janela de erros. Alguém sabe como corrigir este erro?
    Obrigado, Ricardo.

    ResponderExcluir
    Respostas
    1. Boa noite Ricardo,

      Grandes chances de ser isso mesmo. Dentro da IDE 1.6.4, por exemplo, tem uma biblioteca chamada RobotIRremote, e dentro dela um IRremote.h, igualzinho ao da biblioteca IRremote que eu mostro neste post.

      Retire a biblioteca RobotIRremote da pasta libraries e faça um teste.

      Abraço!

      Excluir
  34. Estou com um problema! Qualquer tecla pressionada ele só lê FFFFFFFFFF

    Alguem pode ajudar???

    ResponderExcluir
    Respostas
    1. Boa noite,

      Quando você mantém a tecla pressionada, ele realmente mostra o FFFF.... Mas se ele só reconhece esse valor, pode ser sinal de que o receptor está com problemas, já peguei defeitos assim.

      Abraço!

      Excluir
  35. Amigo copiei seu program // Programa : Relé 4 Canais com controle IR
    Atendeu minha necessidade, mas eu queria usar 4 saidas do Arduino só funcionou duas as saidas do pino 2 e do pino 3, as saidas dos pinos 4 e 5 não funcionaram, dai realizei um teste nas saidas 4 e 5, removi toda a programação que havia do pino 2 e 3 dai funcionou, Mas gostaria de usar as 4 saidas vc sabe me informar o que acontece. Desde ja´agradeço a atenção OTIMO ESSE CANAL INFORMAÇÃO SEU.

    Segue meu e-mail gilvanlopes2@hotmail.com

    ResponderExcluir
    Respostas
    1. Oi Gilvan,

      Obrigado, eu precisaria dar uma olhada no código para ver o que acontece. Nesse post do Relé 4 canais, você montou igual e não funcionou ?

      Abraço!

      Excluir
  36. boa tarde, o valor hexadecimal varia de controle para controle? Se sim voce poderia mandar o código que usou para descobrir?Grata.

    ResponderExcluir
    Respostas
    1. Boa noite,

      Varia sim. Você pode usar o próprio programa desse post, que vai te mostrar no serial monitor o código Hexa da tecla que vc pressionou. :)

      Abraço!

      Excluir
  37. Eu gostaria de controlar somente um relê, mas não somente por controle remoto. Gostaria de usar um botao(com funcionamento similar a um pushbutton) para acender e apagar a luz, mas quando eu quisesse pudesse utilizar um controle remoto. Vocês poderiam ao menos me dizer como seria mais ou menos a programação?

    Obrigado e parabéns pelo site completíssimo.

    ResponderExcluir
    Respostas
    1. Oi Dani,

      Não é complicado não. Vamos pegar como exemplo essa linha do programa:

      if (armazenavalor == 0xFF30CF) //Verifica se a tecla 1 foi acionada

      O que vc vai fazer é acrescentar o teste do estado do botão, fica mais ou menos assim:

      estado = digitalRead(pino_botao)
      if (armazenavalor == 0xFF30CF) && (estado = 1)
      //Comando para acionar o relé

      Abraço!

      Excluir
  38. Pq no Serial Monitor aparece somente 'Valor lido: 0' e não aparece em HEXA?

    ResponderExcluir
    Respostas
    1. Bom dia,

      Você está utilizando o controle remoto que acompanha o módulo ou algum outro ?

      Abraço!

      Excluir
    2. Na verdade estou usando um módulo que retirei de um DVD, e o controle é de uma TV.

      Excluir
  39. olá mais uma vez estou com um pequena duvida

    como faço para que o arduino reconheca a tecla do controle pressionada e enviar sempre o codigo da tecla. pois quando aperto a tecla ele envia o codigo corretamente, mas quando aperto e mantenho pressionada ele envia o codigo da tecla e depois fica enviando ffffff e eu queria que ele repetisse o codigo correto.

    ResponderExcluir
    Respostas
    1. Oi Jardel,

      Nesse caso você vai ter que armazenar o valor da tecla que foi lida, e caso o valor seguinte seja fffff, você repete o valor dessa primeira tecla que foi armazenada.

      Não testei isso em um código, mas a ideia é mais ou menos essa. :)

      Abraço!

      Excluir
  40. obrigado, deu certo.

    /*
    UTILIZAÇÃO DE UM CONTROLE IR PARA, ATRAVES DAS TECLAS, EMULAR AS FUNÇOES DO TECLADO
    NO PC USANDO A FUNÇÃO KEYBOAD.

    jardel Sousa Gomes 07/03/2016
    ======================================================
    */
    #include // incluindo a biblioteca do infravermelho
    const char* nome;
    const int Rec_Pin = 11; // pino 6 no arduino receptor IR
    int led = 13;// led no pino 13
    IRrecv ir_recebe(Rec_Pin); // declarando a variável do sensor IR
    decode_results codigo_recebido; // decodifica resultado
    decode_results memory; // memoria de reultado


    //===================================================
    void setup(){
    Keyboard.begin();//inicia emulação de teclado
    Serial.begin(9600); //inicia comunicação serial
    ir_recebe.enableIRIn(); // inicia a recepção
    ir_recebe.blink13(true);
    pinMode(led, OUTPUT); //defini led como saída
    }
    //===================================================
    void loop() {
    if (ir_recebe.decode(&codigo_recebido)) {//verifica se um codigo foi recebido
    digitalWrite(led,true);//acende led para indicar decodificação

    if (codigo_recebido.value !=0){

    if(codigo_recebido.value !=0xffffffff){
    memory.value=codigo_recebido.value;
    }
    else{
    memory.value=memory.value;
    }

    switch(memory.value){//analisa qual tecla foi pressionada e execulta o comando

    case 0xff28d7://tecla [cima]
    nome="cima";
    tecla(218);
    break;

    case 0xff30cf://tecla [baixo]
    nome="baixo";
    tecla(217);
    break;

    case 0xff48b7://tecla [esquerda]
    nome="esquerda";
    tecla(216);
    break;

    case 0xff8877://tecla [direita]
    nome="direita";
    tecla(215);
    break;

    case 0xff08f7://tecla [ok]
    nome="ok";
    tecla(176);
    break;

    case 0xff9867://tecla [mute]
    nome="mute";
    break;

    case 0xffb04f://tecla [play]
    nome="play";
    break;

    case 0xff906f://tecla [osd]
    nome="osd";
    break;

    case 0xff50af://tecla [vol +]
    nome="vol +";
    break;

    case 0xff609f://tecla [vol -]
    nome="vol -";
    break;

    case 0xff00ff://tecla [setup]
    nome="setup";
    break;

    case 0xff697://tecla [menu]
    nome="menu";
    break;

    case 0xffa857://tecla [rotate]
    nome="rotate";
    break;

    case 0xff10ef://tecla [av]
    nome="av";
    break;

    case 0xff20df://tecla [hdmi]
    nome="hdmi";
    break;

    case 0xff708f://tecla [return]
    nome="return";
    break;

    default:
    nome="não especificada!";
    break;

    }

    Serial.print(memory.value,HEX);
    Serial.print(" - ");
    Serial.println(nome);

    }
    digitalWrite(led,false);//apaga led
    delay(100);
    ir_recebe.resume(); // recebe o próximo código

    }

    }

    void tecla(int key){// funçao tecla
    Keyboard.press(key);
    Keyboard.releaseAll();
    digitalWrite(led,HIGH);
    delay(250);
    digitalWrite(led,LOW);
    }

    ResponderExcluir
  41. Olá,
    Como posso arrumar este erro:
    Arduino: 1.6.8 (Windows 7), Placa:"Arduino/Genuino Uno"

    C:\Program Files\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope

    int RECV_PIN = TKD2; // the pin the IR receiver is connected to

    ^

    Foram encontradas múltiplas bibliotecas para "IRremote.h"
    Usado: C:\Program Files\Arduino\libraries\RobotIRremote
    Não usado: C:\Program Files\Arduino\libraries\Arduino-IRremote-master
    exit status 1
    Error compiling for board Arduino/Genuino Uno.

    This report would have more information with
    "Show verbose output during compilation"
    option enabled in File -> Preferences.

    ResponderExcluir
    Respostas
    1. Boa noite,

      A sua IDE está com conflito de bibliotecas. Tente remover a biblioteca da pasta RobotIRremote e usar apenas a que está indicada no post.

      Abraço!

      Excluir
  42. Ola, qnd configuro o valor hex do controle ele nem sempre da o mesmo valor,com isso faz com que para acionar o led tenho que apertar o botao umas 3 vezes, as vezes de primeira , pq sera?

    ResponderExcluir
  43. Estou tendo um problema com o sensor e o controle. Fiz uma variação do código postado pra fazer acionamento de relés mas quando aperto os botões no controle nada aparece no monitor serial. Existe algum conflito com essa biblioteca?

    fica o código que usei:

    #include

    float OneButton = 0xFF6897;
    float TwoButton = 0xFF9867;

    int RECV_PIN = 11;
    int LED_PIN = 10;
    float armazenavalor;
    int PORTA_RELE1 = 5;
    int PORTA_RELE2 = 7;
    int stateRele1 = -1;
    int stateRele2 = -1;

    IRrecv irrecv(RECV_PIN);
    decode_results results;

    void setup() {
    pinMode(PORTA_RELE1, OUTPUT);
    pinMode(PORTA_RELE2, OUTPUT);
    irrecv.enableIRIn();
    Serial.begin(9600);
    digitalWrite(PORTA_RELE1, HIGH);
    delay(1000);
    digitalWrite(PORTA_RELE1, LOW);
    delay(1000);
    digitalWrite(PORTA_RELE2, HIGH);
    delay(1000);
    digitalWrite(PORTA_RELE2, LOW);
    delay(1000);
    }

    void loop() {
    if(irrecv.decode(&results))
    {
    Serial.print("valor lido:");
    Serial.println(results.value, HEX);
    armazenavalor = (results.value);
    if(armazenavalor == OneButton)
    {
    stateRele1 = -stateRele1;
    if(stateRele1 == 1){
    digitalWrite(PORTA_RELE1, HIGH);
    } else{digitalWrite(PORTA_RELE1, LOW);}
    }
    if(armazenavalor == TwoButton)
    {
    stateRele2 = -stateRele2;
    if(stateRele1 == 1){
    digitalWrite(PORTA_RELE2, HIGH);
    } else{digitalWrite(PORTA_RELE2, LOW);}
    }

    }
    delay(200);
    irrecv.resume();
    }

    ResponderExcluir
  44. No meu aparece o seguinte erro na hora de compilar ?

    Arduino: 1.6.8 (Windows 7), Placa:"Arduino Nano, ATmega328"

    Opções de compilação alteradas, recompilando tudo
    C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope

    int RECV_PIN = TKD2; // the pin the IR receiver is connected to

    ^

    Foram encontradas múltiplas bibliotecas para "IRremote.h"
    Usado: C:\Program Files (x86)\Arduino\libraries\RobotIRremote
    Não usado: C:\Program Files (x86)\Arduino\libraries\IPREMOTE
    exit status 1
    Error compiling for board Arduino Nano.

    This report would have more information with
    "Show verbose output during compilation"
    option enabled in File -> Preferences.

    ResponderExcluir
  45. Olá, meu teste também apresentou o mesmo problem, e o que fiz para resolver, seguindo uma orientação deste site que relatou a possibilidade de conflitos de biblioteca, foi remover a biblioteca RobotIRremote do diretório onde o software(ide)do Arduido foi instalado.
    No meu caso, retirei do local C:\Program Files (x86)\Arduino\libraries.
    Abraço

    ResponderExcluir
  46. ola tb estou como um problema com os codigos posso cololacar qualauer um dos botoes mas ele le tdos qualquer um ke aperte alguem pode me ajudar

    ResponderExcluir
  47. É possível utilizar dois módulos Infravermelho, para controlar diferentes placares, na mesma placa arduino?

    ResponderExcluir