Problema ao enviar e receber sinal Infra Vermelho (IR)

Pessoal estou com problemas ao receber o sinal (codigo) de um controle IR e retransmitir outro codigo IR. "Controle Universal".
O Arduino recebe normalmente o codigo relacionado ao controle 1 mas não envia o outro codigo relacionado ao controle 2.

Ficando assim:

0
Could not decode message
Raw (66): -7650 900 -1000 950 -950 950 -950 950 -950 950 -2700 950 -950 950 -2700 950 -950 950 -2750 900 -2700 950 -2700 1000 -2700 950 -950 900 -2750 950 -950 950 -2700 1000 -900 1000 -900 950 -1000 900 -2750 900 -2750 950 -950 950 -950 950 -950 950 -2700 1000 -2650 950 -2750 900 -1000 900 -1000 950 -2700 900 -2750 950 -2700 950

Se eu retirar do void Setup o comando irrecv.enableIRIn(); ele funciona transmitindo o codigo correto (controle 2). Mas ele não recebe mais os sinais (controle 1)

AF518E7
Decoded NEC: AF518E7 (32 bits)
Raw (68): 20768 8950 -4450 550 -550 550 -550 600 -550 550 -550 550 -1650 600 -500 600 -1650 550 -550 550 -1700 550 -1650 550 -1650 600 -1650 550 -550 600 -1650 550 -550 550 -1650 600 -500 600 -550 550 -550 550 -1700 550 -1650 600 -500 600 -550 550 -550 550 -1650 600 -1650 550 -1650 600 -550 550 -550 550 -1650 600 -1650 550 -1650 550

A parte eletronica esta correto. É algo no codigo que nao esta desabilitando o receptor na hora de transmitir.


Segue o codigo abaixo. Alguem pode me ajudar? TKS

‪#‎include‬ <IRremote.h>

int RECV_PIN = 12;

IRrecv irrecv(RECV_PIN);
decode_results results;

IRsend irsend;

void setup()
{
irrecv.enableIRIn(); -------SE RETIRAR FUNCIONA A TRANSMISSAO CORRETAMENTE MAS NAO RECEBE MAIS.

Serial.begin(9600);

}

void loop() {

while(irrecv.decode(&results))
{
long int decCode = results.value;
Serial.println(results.value);
irrecv.resume();

if (results.value == 16736925) {
for (int i = 0; i < 4; i++) {
irsend.sendNEC(0xAF518E7, 32);
delay(400);
irrecv.enableIRIn();

}
}
}
}

Exibições: 1329

Responder esta

Respostas a este tópico

up!!

Tá, o irRecev tá declarado o pino que é o pino 12, mas e qual pino ele uza pra enviar? faz um if se ele receber ele ativa o irsend e envia, nao entendi muito bem esse codigo nao mas sei que tá facil de achar o erro. :D

Para enviar ele usa o Pin D3 que ja vem configurado na biblioteca. Entao aparentemente ele nao precisa ser configurado. Como seria este If, nao entendi.

É um projeto para controlar o aparelho de TV que possuo.
Eu estou querendo fazer com que o arduino receba os sinais de um controle remoto qualquer  e envie para a TV os códigos originais para controla-la.
Por exemplo: Quero trocar o canal da TV. Eu vou usar o outro controle remoto (qualquer), apertando a tecla na qual eu esta configurando no Sketch para enviar o código referente à troca de canal da TV

if (results.value == 16736925) se receber esse codigo do controle qualquer

{
for (int i = 0; i < 4; i++) {
irsend.sendNEC(0xAF518E7, 32); o arduino envia este codigo referente ao da TV
delay(400);
irrecv.enableIRIn();

}

up!!

tira a rotina de dentro do laço while...

void loop() {

  if(irrecv.decode(&results)) {
    long int decCode = results.value;
    Serial.println(results.value);    if (results.value == 16736925) {

      for (int i = 0; i < 4; i++) {
        irsend.sendNEC(0xAF518E7, 32);
        delay(400);

      }
      irrecv.enableIRIn();

    }
  }

  irrecv.resume();

}

Ola Flavio, ja tirei e nada. Não funciona do mesmo jeito!

up!

testa aew...

#include <IRremote.h>

int RECV_PIN = 12;
IRrecv irrecv(RECV_PIN);
decode_results results;
IRsend irsend;
void setup()
{

irrecv.enableIRIn();
Serial.begin(9600);
}
long int decCode = 0;

void
loop() {

if(irrecv.decode(&results)) {
decCode = results.value;
Serial.println(decCode);
irrecv.resume();
}
if (decCode == 16736925) {
for (int i = 0; i < 4; i++) {
irsend.sendNEC(0xAF518E7, 32);
delay(400);
}
irrecv.enableIRIn();
decCode = 0;
}
}

Nada  Flavio, esta do mesmo jeito!

Olha como o codigo fica:

Este é o codigo que o Arduino esta transmitindo


0
Could not decode message
Raw (66): -7650 900 -1000 950 -900 1000 -950 950 -900 1000 -2700 950 -950 950 -2700 950 -950 950 -2750 900 -2750 900 -2750 950 -2700 950 -950 950 -2700 950 -950 950 -2700 1000 -950 900 -950 1000 -950 950 -2700 950 -2700 950 -950 950 -950 950 -950 950 -2700 950 -2700 950 -2700 950 -1000 950 -950 950 -2700 950 -2700 950 -2700 950


Teria que transmitir este codigo:

AF518E7
Decoded NEC: AF518E7 (32 bits)
Raw (68): 20768 8950 -4450 550 -550 550 -550 600 -550 550 -550 550 -1650 600 -500 600 -1650 550 -550 550 -1700 550 -1650 550 -1650 600 -1650 550 -550 600 -1650 550 -550 550 -1650 600 -500 600 -550 550 -550 550 -1700 550 -1650 600 -500 600 -550 550 -550 550 -1650 600 -1650 550 -1650 600 -550 550 -550 550 -1650 600 -1650 550 -1650 550

vc esta recebendo estes valores aonde?

Tenho um outro arduino aqui ligado e coloquei ele para receber, naquele exemplo IRrecvDump da biblioteca IRremot.

qnd tira o primeiro   irrecv.enableIRIn(); , funciona ?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço