Ola a todos
Estou tendo dificuldade em criar um código. Agradeço de puderem me dar uma luz.
Objetivo do código:
- Ao pressionar o botão, ele irá acender um LED
- O LED permanece aceso
- No mesmo instante, é enviado um comando de IRSEND para ligar um eletronico, uma unica vez
- O LED permanece aceso
- Ao pressionar o botão novamente, o LED será apagado
- No mesmo instante, é enviado um comando de IRSEND para desligar um eletronico, uma unica vez
- O LED permanece apagado até que seja pressionado novamente o botão
Meus problemas:
- Consigo acender e apagar o LED com o botão, permanecendo aceso ou desligado
- Quando coloco o comando de IR, ele fica repetindo enviando comando, isso faz meu eletronico ser ligado/desligado consecutivas vezes
Vejam o código:
#include <IRremote.h>
const int buttonPin = 1; // BOTAO POWER - PINO 1
const int ledPin = 8; // LIGAR FONTE PC/PROJETOR - PINO 4
int khz=38;
unsigned int Signal_0_0[] = {9000,4500,560,560,560,560,560,1690,560,560,560,560,560,560,560,560,560,560,560,1690,560,1690,560,560,560,1690,560,1690,560,1690,560,1690,560,1690,560,560,560,560,560,560,560,1690,560,560,560,560,560,560,560,560,560,1690,560,1690,560,1690,560,560,560,1690,560,1690,560,1690,560,1690,560};
int estado = 0;
int guarda_estado = LOW;
IRsend irsend; // IRLED - PINO 3
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop(){
estado = digitalRead(buttonPin);
if (estado == HIGH) {
guarda_estado = !guarda_estado;
delay(500);
}
if (guarda_estado == HIGH) {
digitalWrite(ledPin, HIGH);
irsend.sendRaw(Signal_0_0, sizeof(Signal_0_0)/sizeof(int), khz); //AnalysIR Batch Export (IRremote) - RAW
delay(500);
irsend.sendNEC(0x20DF10EF, 32); //AnalysIR Batch Export (IRremote) // AnalysIR IR Protocol: NEC,
delay(500);
}
else {
digitalWrite(ledPin, LOW);
irsend.sendRaw(Signal_0_0, sizeof(Signal_0_0)/sizeof(int), khz); //AnalysIR Batch Export (IRremote) - RAW
delay(500);
irsend.sendNEC(0x20DF10EF, 32); //AnalysIR Batch Export (IRremote) // AnalysIR IR Protocol: NEC,
delay(500);
}
}