O Arduino é uma plataforma de hardware livre, projectado com um micro-controlador Atmel AVR. É uma placa de código aberto baseado num circuito de entradas/saídas simples, micro-controlada e desenvolvida sobre uma biblioteca que simplifica a escrita da programação em C/C++.
Hoje vamos explicar como podem ler, via infravermelhos, os “sinais” dos comandos dos nossos electrodomésticos (ex. TV, DVD, etc).
O objectivo deste tutorial é ler os “sinais” enviados por um comando quando o utilizador pressiona uma tecla. Para tal, vamos recorrer a um Arduino e a um modulo de infravermelhos. Depois de conseguimos obter os “sinais” emitidos pelo comando, podemos accionar um conjunto de acções, como por exemplo motores, ligar relés, LEDs entre outras acções.
Material necessário
- Arduino UNO ou qualquer outra versão;
- Receptor de infravermelho IR (como nas fotos acima);
- Comando (Pode ser de TV,DVD ou MP3);
- LED vermelho;
- LED verde;
- LED Amarelo;
- 4 Resistências 200 ohms;
- Vários jumpers (condutores para interligações)
Montagem
Deverão realizar a montagem dos componentes conforme o esquema seguinte:
Nota: Muito cuidado a ligar o infravermelho porque, se for ligado de forma incorrecta, pode ficar danificado sem reparação.
Após realizarmos as ligações deveremos ter algo semelhante ao apresentado na imagem seguinte:
Código fonte
Agora vamos ao mais importante , o código fonte responsável de realizar a leitura:
#include <irremote.h> // 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; 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); //declarado led como saída pinMode(ledamarelo, OUTPUT); pinMode(ledvermelho, OUTPUT); } void loop() { //////////////////////////////////////////////////////// // comando para ler o codigo de cada tecla e enviar para o Terminal do arduino 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 == 0x39C618E7){// verifica se foi pressionado o numero 1 dos comandos digitalWrite(ledverde, HIGH); delay(500); } //desliga led verde if (codigo_recebido.value == 0x39C658A7) {// verifica se foi pressionado o numero 4 dos comandos digitalWrite(ledverde, LOW); delay(500); } //liga led amarelo if (codigo_recebido.value == 0x39C69867) {// verifica se foi pressionado o numero 2 dos comandos digitalWrite(ledamarelo, HIGH); delay(500); } //desliga led amarelo if (codigo_recebido.value == 0x39C628D7) {// verifica se foi pressionado o numero 5 dos comandos digitalWrite(ledamarelo, LOW); delay(500); } //liga led vermelho if (codigo_recebido.value == 0x39C6D02F) {// verifica se foi pressionado o numero 3 do comando digitalWrite(ledvermelho, HIGH); delay(500); } //desliga led vermelho if (codigo_recebido.value == 0x39C6E01F) {// verifica se foi pressionado o numero 6 do comando digitalWrite(ledvermelho, LOW); delay(500); } ir_recebe.resume(); // recebe o próximo código delay(200); } }
E está feito! Desta forma, conseguimos ler os “sinais” de qualquer comando que seja infravermelho, usando um Arduino com o respectivo módulo. Esperamos que seja útil este artigo e se gostaram partilhem com os amigos! Alguma dúvida ou questão deixem em comentário.
————————-
Todos os produtos utilizados neste artigo podem ser encontrados na Loja de Eletrónica e Robótica – ElectroFun.
Gostaram deste artigo? Deixem o vosso comentário no formulário a baixo e partilhem com os vossos amigos.
Não se esqueçam de fazer like na nossa Página no Facebook.
Podem ainda colocar as vossas dúvidas no nosso Forum da Comunidade Arduino em Portugal ou no nosso Grupo no Facebook Arduino Portugal – Qual o teu projeto?