Um controle remoto infravermelho é um dispositivo que envia sinais de luz invisível (chamada infravermelho) para controlar outros aparelhos, como TV, ar-condicionado ou até mesmo projetos com Arduino. Essa luz não pode ser vista pelos nossos olhos, mas pode ser detectada por um receptor, como o VS1838B, que está conectado ao Arduino.
Cada vez que você aperta um botão no controle remoto, ele envia um código diferente (como se fosse uma senha ou número de identificação daquela tecla). Como o infravermelho é um tipo de luz, sua comunicação requer uma linha direta de visão do transmissor para o receptor, ou seja, não pode transmitir através de paredes ou outros obstáculos, como WiFi ou Bluetooth.
Antes de usarmos o controle para comandar algo (como ligar um LED, movimentar um robô ou tocar um som), o Arduino precisa saber qual código está associado a cada botão.
Por exemplo, o botão 1 pode enviar um código semelhante a 0xFFA25D o botão 2 pode enviar um outro código semelhante a 0xFFE21D e assim por diante. Esses códigos variam entre modelos de controle, então precisamos "ensinar" o Arduino a reconhecer os botões do controle que estamos usando.
Agora veremos como fazemos isso, primeiro montamos um circuito simples e básico apenas com um receptor VS1838B e dois resistores. Carregamos o código que mostraremos a seguir no Arduino e abrimos o Monitor Serial, na sequência apertamos cada botão do controle e anotamos o código hexadecimal que aparece.
LISTA DOS COMPONENTES
#include <IRremote.h> // Biblioteca IRemote const int RECEPTOR_PINO = 11; void setup() { Serial.begin(9600); IrReceiver.begin(RECEPTOR_PINO); Serial.println("Pronto para capturar códigos IR..."); } void loop() { if (IrReceiver.decode()) { Serial.print("Comando: 0x"); Serial.println(IrReceiver.decodedIRData.command, HEX); IrReceiver.resume(); delay(200); } }
Pressione uma tecla do controle remoto e observe o código que será exibido no Monitor Serial do Arduino. Em seguida, anote esse código na coluna "Código Hexadecimal Recebido" da tabela fornecida. Se preferir, você também pode escrever o nome do botão (como VOL+, PLAY, etc.) ou desenhar o símbolo correspondente que aparece no controle, facilitando a identificação posterior. Utilize ainda a coluna de observações para registrar qualquer informação adicional, como se algum botão repetiu o mesmo código de outro ou se algum botão não respondeu ao ser pressionado. Esse processo é essencial para que você possa programar o Arduino corretamente de acordo com os botões do seu controle remoto específico.
LISTA DOS COMPONENTES
#include <IRremote.h> // Biblioteca IRemote // Configuração dos pinos const int RECEPTOR_PINO = 11; const int LED_VERMELHO = 10; const int LED_AMARELO = 9; const int LED_AZUL = 8; // Variáveis para armazenar o estado dos LEDs bool ledVermelhoEstado = false; bool ledAmareloEstado = false; bool ledAzulEstado = false; void setup() { // Configura os pinos dos LEDs pinMode(LED_VERMELHO, OUTPUT); pinMode(LED_AMARELO, OUTPUT); pinMode(LED_AZUL, OUTPUT); // Inicializa o receptor IR IrReceiver.begin(RECEPTOR_PINO); } void loop() { if (IrReceiver.decode()) { // Verifica o comando recebido switch(IrReceiver.decodedIRData.command) { case 0x0C: // Botão 1 acende o led vermelho digitalWrite(LED_VERMELHO, HIGH); break; case 0x18: // Botão 2 acende o led amarelo digitalWrite(LED_AMARELO, HIGH); break; case 0x5E: // Botão 3 acende o led azul digitalWrite(LED_AZUL, HIGH); break; case 0x16: // Botão 0 apaga todos leds digitalWrite(LED_VERMELHO, LOW); digitalWrite(LED_AMARELO, LOW); digitalWrite(LED_AZUL, LOW); break; } IrReceiver.resume(); } }