Vamos começar com algo bastante simples: acender um LED conforme a tecla pressionada no controle remoto. Para facilitar as coisas, vou usar a biblioteca que vimos no post anterior.
O primeiro passo é levantar quais os comandos gerados pelas teclas. Para isto basta conectar um módulo receptor IR no pino 11 de um Arduino e rodar o sketch IRrecvDemo. Para o controle remoto do meu tocador MP3 eu obtive os seguintes comandos:
O código é bastante simples:
/* * Exemplo de comando do Arduino via IR */ #include <IRremote.h> // variaveis para recepção dos comandos IR const int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); // comandos typedef unsigned long dword; const dword addr = 0; const dword cmdPlay = 0x22; const dword cmdNext = 0xC2; const dword cmdPrev = 0x02; #define CMD_IR(cmd) ((addr << 24) | \ ((~addr & 0xFF) << 16) | \ (cmd << 8) | \ (~cmd & 0xFF) ) // pinos dos LEDs const int LED_R = 4; const int LED_Y = 3; const int LED_G = 2; void setup() { // Configura conexões dos LEDS pinMode (LED_G, OUTPUT); pinMode (LED_Y, OUTPUT); pinMode (LED_R, OUTPUT); // Inicia recepção IR irrecv.enableIRIn(); } void loop() { decode_results results; if (irrecv.decode(&results) && results.decode_type==NEC) { // recebeu um comando NEC switch (results.value) { case CMD_IR(cmdPlay): digitalWrite(LED_G, HIGH); digitalWrite(LED_Y, LOW); digitalWrite(LED_R, LOW); break; case CMD_IR(cmdPrev): digitalWrite(LED_G, LOW); digitalWrite(LED_Y, HIGH); digitalWrite(LED_R, LOW); break; case CMD_IR(cmdNext): digitalWrite(LED_G, LOW); digitalWrite(LED_Y, LOW); digitalWrite(LED_R, HIGH); break; } // decodificar o próximo comando irrecv.resume(); } }
O único detalhe significativo é a macro CMD_IR, que monta o valor correspondente a cada comando, acrescentando o endereço e os complementos do endereço e comando, como vimos na parte 2.
O vídeo abaixo mostra o funcionamento:
No próximo post vamos fazer algo um pouco mais emocionante que acender LEDs.
3 comentários:
Esta biblioteca é muito legal!
Usei ela no https://garoa.net.br/wiki/TV-B-Garoa
Bom dia, tem com fazer esse codigo alem de receber ele tbem enviar ir no mesmo sketch
obrigado
Fernando: sim dá para enviar. O post anterior descreve o hardware (basicamente um LED IR em série com um resistor de 100 ohms ligado ao pino 3). A biblioteca possui funções para envio, veja os exemplos IRsendDemo e IRrecord.
Postar um comentário