Podemos utilizar um controle remoto infravermelho a partir do uso de um módulo ou um sensor capaz de receber e decodificar os sinais enviados pelo controle. Qualquer controle infravermelho pode ser utilizado (alguns módulos são universais, outros possuem limitações).

Quando for utiliza o módulo de controle de motores, ficará assim (ajuste o código):

Um código que pode ser utilizado é o que segue:
#include "IRremote.h"
int pinoControle = 6;
//define pinoControle A0 //para quando for utilizar com o módulo de motores
IRrecv receptor(pinoControle);
decode_results resultados;
void setup()
{
Serial.begin(9600);
receptor.enableIRIn();
}
void loop() {
if (receptor.decode(&resultados)) {
Serial.println(resultados.value, HEX);
receptor.resume(); // próximo valor
}
}
Note que no código foi utilizado o pino 6, em correspondência à ligação de hardware apresentada; se você usou outra porta, ajuste o código.
Você pode usar este código para testar o controle e verificar os códigos gerados.
Você terá uma saÃda mostrando os códigos para cada tecla (do controle que em geral vem com o sensor) – de um controle para outro varia (em alguns casos a biblioteca não consegue decodificar e você não verá nada):
/* Códigos Controle Senhorinha:
Repetição FFFFFFFF
Seta_para_Cima FF18E7
Seta_paraEsquerda FF10EF
Seta_paraDireita FF5AA5
Seta_para_Baixo FF4AB5
OK FF38C7
Tecla * FF6897
Tecla # FFB04F
Tecla 0 FFFFFFFF
Tecla 1 FFA25D
Tecla 2 FF629D
Tecla 3 FFE21D
Tecla 4 FF22DD
Tecla 5 FF02FD
Tecla 6 FFC23D
Tecla 7 FFE01F
Tecla 8 FFA857
Tecla 9 FF906F
*/
Para ler e mostrar a tecla:
/*
Códigos utilizados - verifique se seu controle é igual
Repetição FFFFFFFF
Liga/Desliga 1FE48B7
A 1FE807F
B 1FE40BF
C 1FEC03F
D 1FE20DF
E 1FE609F
Seta_para_Cima 1FEA05F
Seta_paraEsquerda 1FEE01F
Seta_paraDireita 1FE906F
Seta_para_Baixo 1FED827
OK 1FE10EF
Voltar 1FE50AF
Volume+ 1FEF807
Volume- 1FE708F
Tocar/pausa 1FE30CF
SemSom 1FEB04F
*/
#include "IRremote.h"
int pinoControle = 6;
IRrecv receptor(pinoControle);
decode_results resultados;
void setup()
{
Serial.begin(9600);
receptor.enableIRIn();
}
void loop() {
if (receptor.decode(&resultados)) {
switch (resultados.value){
case 0x1FE48B7:
Serial.println("Tecla Liga/ desliga");
break;
case 0x1FE807F:
Serial.println("Tecla A");
break;
case 0x1FE40BF:
Serial.println("Tecla B");
break;
case 0x1FEC03F:
Serial.println("Tecla C");
break;
case 0x1FE20DF:
Serial.println("Tecla D");
break;
case 0x1FE609F:
Serial.println("Tecla E");
break;
case 0x1FEA05F:
Serial.println("Tecla Seta para cima");
break;
case 0x1FEE01F:
Serial.println("Tecla Seta para esquerda");
break;
case 0x1FE906F:
Serial.println("Tecla Seta para direita");
break;
case 0x1FED827:
Serial.println("Tecla Seta para baixo");
break;
case 0x1FE10EF:
Serial.println("Tecla OK");
break;
case 0x1FE50AF:
Serial.println("Tecla Voltar");
break;
case 0x1FEF807:
Serial.println("Tecla Volume +");
break;
case 0x1FE708F:
Serial.println("Tecla Volume -");
break;
case 0x1FE30CF:
Serial.println("Tecla Tocar/ pausa");
break;
case 0x1FEB04F:
Serial.println("Tecla Desligar o som");
break;
}
receptor.resume(); // próximo valor
}
}
Para ler controlando a repetição:
#include "IRremote.h"
int pinoControle = 6;
IRrecv receptor(pinoControle);
decode_results resultados;
byte tecla;
void setup()
{
Serial.begin(9600);
receptor.enableIRIn();
}
void loop() {
if (receptor.decode(&resultados)) {
if(resultados.value != 0xFFFFFFFF){
tecla = resultados.value;
}
switch (tecla){
case 0x1FE48B7:
Serial.println("Tecla Liga/ desliga");
break;
case 0x1FE807F:
Serial.println("Tecla A");
break;
case 0x1FE40BF:
Serial.println("Tecla B");
break;
case 0x1FEC03F:
Serial.println("Tecla C");
break;
case 0x1FE20DF:
Serial.println("Tecla D");
break;
case 0x1FE609F:
Serial.println("Tecla E");
break;
case 0x1FEA05F:
Serial.println("Tecla Seta para cima");
break;
case 0x1FEE01F:
Serial.println("Tecla Seta para esquerda");
break;
case 0x1FE906F:
Serial.println("Tecla Seta para direita");
break;
case 0x1FED827:
Serial.println("Tecla Seta para baixo");
break;
case 0x1FE10EF:
Serial.println("Tecla OK");
break;
case 0x1FE50AF:
Serial.println("Tecla Voltar");
break;
case 0x1FEF807:
Serial.println("Tecla Volume +");
break;
case 0x1FE708F:
Serial.println("Tecla Volume -");
break;
case 0x1FE30CF:
Serial.println("Tecla Tocar/ pausa");
break;
case 0x1FEB04F:
Serial.println("Tecla Desligar o som");
break;
}
receptor.resume(); // próximo valor
}
}
Baixe aqui ( controleRemoto ) os códigos para você usar.