quarta-feira, 9 de março de 2016

Ligando uma lampada pelo controle remoto com arduino

Saudações povo de terras tupiniquins, na postagem de hoje irei mostrar como se liga e desliga uma lampada pelo controle remoto utilizando o arduino. Para isso é imprescindível que você tenha uma biblioteca nova no programa do arduino, a biblioteca IR remote, que pode ser baixada aqui:
https://docs.google.com/uc?id=0BzBxRWTYqN3HbVhqMGdUMklwclE&export=download

Depois de baixa-la verás que é um arquivo zipado, que teráde ser descompactado e instalado na pasta do arduino, não sabe como fazer isso é simples:

- Primeiro salve o destino
-Depois descompacte,clique com o direito e escolha a opção extrair aqui
Depois de extraido virara uma pasta, clique na pasta com o direito novamente e escolha a opção copiar

Agora clique com o direito no icone do programa do arduino e escolha a opção abrir local do arquivo
 Na pasta que se abriu abra libraryes e depois selecione o direito no *nada* e clique em colar

Pronto, instalou essa bagaça com sucesso no programa :). O que nos leva a segunda etapa.

Monte na protoboard conforme está descrito na imagem:


No meu caso usei como sinal a porta digital 2, aquela que vem logo apos o tx0 e o tx1, o gnd no gnd do arduino e o 5 volts no 5 volts do arduino. E agora vamos ao código
-------------------------------
#include <IRremote.h>
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() 

  Serial.begin(9600); 
  irrecv.enableIRIn(); // Inicializa o receptor IR 

void loop() 

  if (irrecv.decode(&results)) 
  { 
    long int decCode =results.value;
    Serial.println(decCode);
    //Recebe o proximo valor
    irrecv.resume();
    }
    //delay para diminuir numero de erros de leitura
    delay(500);
    }

Este código é pra você manusear o controle remoto? A resposta é não, pra voce conseguir esta proeza, deveras seguir uma etapa que também é fundamental. Um pouco de teoria, todo botao de controle remoto gera um sinal hexadecimal que pe interceptado pelo receptor infravermelho seja do radio, da televisao, do computador, enfim. O que temos que fazer é descobrir primeiro o código hexadecimal que o controle em questão está gerando para depois compila-lo no programa. É por isso que podemos usar qualquer controle remoto para isso, por que não importa qual controle remoto use,iremos sempre depurar o código sacas?

Então, depois de compilar aquela bagaça, abra o monitor serial e aperte os botões do controle que você quer usar para ligar e desligar. Veras que cada botão que você aperta o monitor serial gerara uma sequencia de letras e números, é o código hexadecimal, escolha qualquer botão, mas o botão que você escolher irá ficar.

No meu caso escolhi os botões 5 e 6 da minha televisão. Agora sim vamos para a etapa mais divertida.

Escolhi o pino 13 para gerar a saída do pulso, uma por que nele o arduino ja tem um led embutido, sendo assim dispensa montagem, mas se quiser montar, alem do receptor*logico*, coloque a saída do pino 13 a um resistor de 220 ohms,do resistor ao positivo do led* a perninha mais alta* e por fim ao gnd do arduino fechando o circuito.

E agora meus amigos, o código
------------------
#include <IRremote.h>
int RECV_PIN = 2;
int led = 13;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
 Serial.begin(9600);
 irrecv.enableIRIn();
 pinMode(led,OUTPUT);
}
void loop()
{
  if (irrecv.decode(&results))
  {
long int decCODE = results.value;
switch (results.value)
{
  case 16621663://Aqui coloca o codigo que achou na etapa anterior ligar
  Serial.println("ligando led");
  digitalWrite(led,HIGH);
  break;
  case 16605343://Aqui coloca o código que achou na etapa anterior desligar
  Serial.println("Desligando Led");
  digitalWrite(led,LOW);
  break;
}
irrecv.resume();
  }
  delay(500);
}

E é isso ahe pessoal, como prometi, tá aí o vídeo do projeto funcionando:
Espero que tenham gostado!
       





Nenhum comentário: