Bom dia, colegas do fórum! Algum fera podia me ajudar?

Coloquei um rele numa porta do arduino, um refletor de led, e fiz uma luz estroboscópica com o código do led blink:

void loop() {
digitalWrite(rele, HIGH);
delay(100);
digitalWrite(rele, LOW);}

Até aí, perfeito! Mas resolvi colocar um controle remoto para ligar e desligar. O problema está na parte vermelha do código abaixo. Eu preciso que ele seja repetido até eu pressionar a outra tecla, e do jeito está ele só liga e desliga o refletor uma vez.

#include <IRremote.h>// incluindo a biblioteca do infravermelho
const int RECEBE_PINO = 7; // IR no pino 7 no arduino
int rele = 10;// rele no pino 10
IRrecv ir_recebe(RECEBE_PINO); // declarando a variável do sensor
decode_results codigo_recebido; // resultado

void setup()
{
Serial.begin(9600); //mostra o resultado no computador
ir_recebe.enableIRIn(); // inicia a recepção
pinMode(rele, OUTPUT); //defini led como saída
}

void loop() {
if (ir_recebe.decode(&codigo_recebido)) {//verifica se um codigo foi recebido
if (codigo_recebido.value != 0 ){
Serial.println(codigo_recebido.value, HEX); //mostra no serial o resultado
}

if ((codigo_recebido.value == 0x39C618E7) {// verifica se foi pressionado o numero 1 do controle
digitalWrite(rele, HIGH);
delay(100);
digitalWrite(rele, LOW);
}

if ((codigo_recebido.value == 0x39C658A7) {// verifica se foi pressionado o numero 2 do controle
digitalWrite(rele, LOW);
}

ir_recebe.resume(); // recebe o próximo código
delay(200);
}
}

Como sou iniciante, não sei como resolver. Já tentei com while, mas não deu certo. Peço ajuda!
Obrigado"

Exibições: 324

Responder esta

Respostas a este tópico

deixa eu ver se entendi. você quer ligar a strobo com um botão e desligar a strobo com o outro botão?

pelo que vi no seu código a strobo so funciona quando o botão fica pressionado. e isto mesmo que acontece?

#include <IRremote.h>// incluindo a biblioteca do infravermelho
const int RECEBE_PINO = 7; // IR no pino 7 no arduino
int rele = 10;// rele no pino 10
IRrecv ir_recebe(RECEBE_PINO); // declarando a variável do sensor
decode_results codigo_recebido; // resultado
boolean teste=1;
void setup()
{
Serial.begin(9600); //mostra o resultado no computador
ir_recebe.enableIRIn(); // inicia a recepção
pinMode(rele, OUTPUT); //defini led como saída
}

void loop() {
if (ir_recebe.decode(&codigo_recebido)) {//verifica se um codigo foi recebido
if (codigo_recebido.value != 0 ){
Serial.println(codigo_recebido.value, HEX); //mostra no serial o resultado
}

if (codigo_recebido.value == 0x39C618E7) {// verifica se foi pressionado o numero 1 do controle
teste=1;
}

if (codigo_recebido.value == 0x39C658A7) {// verifica se foi pressionado o numero 2 do controle
teste =0;
}

if (teste==1){
digitalWrite(rele, HIGH);
delay(100);
digitalWrite(rele, LOW);}
else{digitalWrite(rele, LOW);}


ir_recebe.resume(); // recebe o próximo código
delay(200);
}
}

Assim funcionou. Obrigado Napster!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço