Bom dia Glr;
Estou tentando criar um modulo para automação residencial, e estou meio empacado na recepção e envio de sinais IR.
Consegui utilizando alguns tutoriais, realizar a leitura e a transmissão de sinal de vários controles, pelo RAW DATA, pois assim não fico preso à relação de modelos existente na biblioteca.
Estou tentando agora colocar os dois códigos no mesmo programa: já consegui fazer ele ler e transmitir ao receber o código no monitor serial.
porém após a transmissão não consigo realizar nova leitura.
parece que ele desativa alguma rotina da biblioteca e a leitura para de funcionar.
PS:
1) antes de realizar a transmissão posso fazer diversas leituras. mas basta realizar uma transmissão e o recebimento para.
2) O Arduíno não está travado pois ainda consigo realizar novas transmissões.
Tags:
#include <IRremote.h>
int RECV_PIN = 9;
int Btn_PIN = 10;
int Btn = 1;
int Tmr = 501;
IRsend irsend;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned int c_recv[68];
void dump(decode_results *results) {
if (Tmr < 500 && Tmr >10){
int count = results->rawlen;
Serial.print("Raw (");
Serial.print(count, DEC);
Serial.print("): ");
for (int i = 0; i < count; i++) {
int i1 = i-1;
if ((i % 2) == 1) {
// Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
if (i1 >= 0){
c_recv[i1] = (results->rawbuf[i]*USECPERTICK);
// Serial.print("c_recv:");
// Serial.println(c_recv[i1]);
}
}
else {
// Serial.print((int)results->rawbuf[i]*USECPERTICK, DEC);
if (i1 >= 0){
c_recv[i1] = (results->rawbuf[i]*USECPERTICK);
// Serial.print("cc_recv:");
// Serial.println(c_recv[i1]);
}
}
// Serial.print(" ");
}
// Serial.println();
Serial.println("codigo recebido com sucesso!");
Tmr = 501;
}
}
void setup(){
pinMode(Btn_PIN, INPUT);
digitalWrite(Btn_PIN, HIGH);
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
Btn = digitalRead(Btn_PIN);
if (Btn == 0){
Tmr = 0;
}
if (Tmr < 500){
if (irrecv.decode(&results)) {
dump(&results);
irrecv.resume();
// Serial.println(results.value, HEX);
}
Tmr++;
Serial.println(Tmr);
}
char c = Serial.read();
if (c == 'a') {
for (int i = 0; i < 3; i++) {
irsend.sendRaw(c_recv, 68, 38);
delay(100);
}
irrecv.resume();
Serial.println("codigo a enviado");
}
if (c == 'b') {
for (int i = 0; i < 1; i++) {
irsend.sendNEC(0xB748B7, 32); // Sony TV power code
delay(500);
}
irrecv.resume();
Serial.println("codigo b enviado");
}
delay(10);
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por