Pessoal estou iniciando e com muitas duvidas...
Consegui fazer com que um led ascenda ao receber o comando do IR de um controle remoto ao pressionar um botão e desligar ao pressionar OUTRO botão, porém preciso que ele apague ao pressionar O MESMO BOTÃO, se alguem puder me ajudar agradeço...
segue regra:
if (results.value == 0xFFA956)//recebe o sinal do botao espessifico
digitalWrite(ledpin6, HIGH); //liga led 6 se botao pressionado
else if (results.value == 0xFF59A6)
digitalWrite (ledpin6,LOW); //desliga led 6 se outro botao pressionado
Tags:
Ismael,
sem conhecer o resto do código, vamos utilizar o contorno com uma variável de flag.
////////////////////
int meuFlag = 0; // 0 para desligada, 1 para ligada. Lado de fora do loop()
...
...
////////////////////////////////////////////
if ((results.value == 0xFFA956) && (meuFlag == 0))
// se recebeu o sinal do botao específico e o flag estiver ZERO
{
digitalWrite(ledpin6, HIGH); //liga led 6
meuFlag = 1; //para o programa nao "esquecer" que esta ligada.
delay(500); //aguardo meio segundo... (se não, vai ficar piscando)
}
else if ((results.value == 0xFF5956) && (meuFlag == 1))
// se o mesmo botao for pressionao e o Flag estiver em UM
{
digitalWrite (ledpin6,LOW); //desliga led 6
meuFlag = 0;
delay(500);
}
/////////////////////
Existem outras formas mais estéticas... mas estou sem compilador aqui...
Por favor, verifique o funcionamento, inclusive, se o "delay" está muito ou pouco.
Abraços.
Segue o codigo inteiro... agora ligou mas não desliga.
#include <IRremote.h>
int RECV_PIN = 11; //Leitor IR na IN 11
IRrecv irrecv(RECV_PIN);
int ledpin6=6;
int ledpin7=7;
int meuFlag = 0; // 0 para desligada, 1 para ligada. Lado de fora do loop()
decode_results results;
void setup()
{
pinMode(ledpin6,OUTPUT);
pinMode(ledpin7,OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // Inicia o receptor
}
void loop()
{
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume();
}
if ((results.value == 0xFFA956) && (meuFlag == 0))
// se recebeu o sinal do botao específico e o flag estiver ZERO
{
digitalWrite(ledpin6, HIGH); //liga led 6
meuFlag = 1; //para o programa nao "esquecer" que esta ligada.
delay(500); //aguardo meio segundo... (se não, vai ficar piscando)
}
else if ((results.value == 0xFF5956) && (meuFlag == 1))
// se o mesmo botao for pressionao e o Flag estiver em UM
{
digitalWrite (ledpin6,LOW); //desliga led 6
meuFlag = 0;
delay(500);
}
}
Ismael,
O erro foi meu:
ao invés disso:
else if ((results.value == 0xFF5956) && (meuFlag == 1))
seria isso:
else if ((results.value == 0xFFA956) && (meuFlag == 1))
Abraços.
funcionou :) era só o codigo do else IF que estava diferente
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por