Ola galera, tudo bem com vocês? 

Estou fazendo um micro projeto pra controlar alguns aparelhos no meu quarto. possuo um controle IR pequeno, aqueles que vem nesses kit de arduino. O basico seria, eu dar o comando via controle remoto, ai ele ligaria o pc, tv/monitor e o HT, cheguei nesse codigo.


#include <IRremote.h> //Funcoes de infra vermelho

IRsend irsend; // Para poder enviar o sinal infravermelhor, usa-se a porta 3

int RECV_PIN = 2 ; // Pino que esta recebendo o comando do controle
int rele_pin = 10;
IRrecv irrecv(RECV_PIN);
decode_results results;
int ligado =0 ;
unsigned int HT[68] ={ 4500, 4450, 550, 1650, 600, 1650, 600, 500, 550, 550, 550, 550, 600, 500, 600, 1650, 550, 550, 550, 1700, 550, 1700, 550, 550, 550, 550, 550, 1650, 600, 550, 550, 1650, 600, 500, 600, 1650, 550, 550, 550, 550, 550, 550, 600, 500, 600, 550, 550, 550, 550, 550, 550, 550, 550, 1650, 600, 1650, 550, 1700, 550, 1700, 550, 1650, 600, 1650, 550, 1700, 550 };
unsigned int TV [68] = {4500, 4400, 650, 1600, 600, 1600, 650, 1600, 600, 550, 550, 550, 550, 550, 550, 550, 600, 500, 600, 1650, 550, 1650, 600, 1650, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 550, 550, 1650, 600, 500, 600, 500, 600, 550, 550, 550, 550, 550, 550, 550, 600, 1600, 600, 550, 550, 1650, 600, 1650, 600, 1650, 550, 1650, 600, 1650, 600, 1650, 600};


void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); //Inicia o receptor infra vermelho
pinMode(rele_pin, OUTPUT);
digitalWrite(rele_pin,LOW);
}

void loop()
{
if (irrecv.decode(&results) ) {

long int hexCode = results.value;

switch(results.value)
{
case 16753245 :

if(ligado==0){
irsend.sendRaw(HT, 68, 32);
delay(200);
irsend.sendRaw(TV, 68, 32);
delay(200);
Serial.println("Ligar pc");
digitalWrite(rele_pin,HIGH);
ligado=1;
}

else if(ligado==1) {
digitalWrite(rele_pin,LOW);
irsend.sendRaw(HT, 68, 32);
delay(200);
irsend.sendRaw(TV, 68, 32);
delay(200);
Serial.println("Desligar pc");
ligado=0;
}
break;

}

irrecv.resume();
}
delay(500);
}

O problema é que eu dou o comando pelo controle ele executa o primeiro if, e faz as instruçoes, porem se eu clicar denovo ele nao responde, parece que depois que ele envia um IR ele nao consegue receber um novo comando pelo receptor Ir dele. Se eu colocar pra ele receber via serial, funciona perfeitamente. Pelo que me pareceu ele nao consegue trabalhar com receber e enviar sinal IR. Deixei algo faltando no codigo? Alguem ja teve alguma experiencia parecida? 

Obrigado pela atenção pessoal.

 

Exibições: 229

Responder esta

Respostas a este tópico

Apesar de nao ter recebido resposta, pesquisando mais encontrei o problema. Depois que vc envia um sinal IR, vc tem que ativar novamente o receptor IR.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço