Apagar led pressionando 4 teclas, controle IR, Arduino.

Opá, Bom dia ^^,  sou novo por aqui,estou utilizando o controle IR para ligar e desliga leds com o arduino, consegui fazer o comando pressionando apenas uma tecla. Porem tentei fazer um código no qual eu conseguisse desligar o led apos ser pressionada 4 teclas, mas não consegui, alguém tem alguma ideia de como posso fazer isso. Obrigado

Aqui segue código para ligar e desligar o led pressionando uma tecla.


void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);

if(results.value==0xFD08F7) { // quando pressionada a tecla 1

apagaled=!apagaled; // troca o valor da variável de 0 para 1
digitalWrite(led,apagaled);// variável led assume o valor 1, led acende
}

Gostaria de agora por exemplo,desliga o led, Se somente for pressionada as teclas 1,2,3 e 4. Alguém teria alguma ideia do código?

Tentei fazer outro código utilizando uma atribuição, na qual,se fosse pressionado por exemplo 2 teclas ,desligasse o led, porem não deu certo, assim que pressiono a 1 tecla ele já desliga .

if(results.value==0xFD08F7&&0xFD0548){// se for pressionada as teclas 1 e 2 desliga led

digitalWrite(led,HIGH);

}

Espero que minha dúvida tenha ficado clara e que possam me ajudar valeu  :D 

Exibições: 2089

Responder esta

Respostas a este tópico

Companheiro acho que intendi mais acho que nao seria possivel ele ler os 4 de uma vez... creio que poderia fazer assim...

 

 

aperta o 1 e acende,

 Ai apertaria 1 ,depois o 2 ,depois o 3 e depois o 4 ai sim acho que da pra fazer , juntos acho meio dificil, mais o pessoal que tem mais experiencia do que eu talvez saiba !

Opá, mas não é tudo de uma vez que quero aperta as teclas Bruno, e sim em uma sequencia de teclas,que desligue somente quando eu aperta essa sequencia.

testa ai

 

 

//
//
// CONTROLE DE LAMPADA ATRAVES DE SENHA
//
// Bruno Gonçalves
// 17/07/2014
// 10:16
// Técnico em Eletrônica


#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int lampada,senha;

 

void setup()
{
 
    Serial.begin(9600);
    irrecv.enableIRIn();
    lampada = 0;
    senha = 0;
    pinMode(13,OUTPUT);
    digitalWrite(13,0);

}

void loop()
{
 
     if (irrecv.decode(&results))
     {
     Serial.println(results.value, HEX);
     irrecv.resume();
     }
     
     // VERIFICA O ESTADO DA LAMPADA, SE LAMPADA ==1 > LIGA A LAMPADA      E SE    LAMPADA==0 > DESLIGA A LAMPADA
    
     if (lampada==1);
     {
     digitalWrite(13,1);
     Serial.println("Lampada Acesa!");
     delay(1500);
     Serial.println("Para apagar a lampada,digite a seguencia correta!");
     }
    
     if (lampada==0)
     {
     digitalWrite(13,0); // força a manter desligado a lampada
     }
   
    //...............................................................................................................................
   
   
   
   
    // RECEBE COMANDO PARA LIGAR A LAMPADA
   
    if(results.value==(botao1)&&lampada==0&&senha==0) // NO LUGAR DO (BOTAO 1) COLOQUE O CODIDO RECEBIDO REFERENTE AO BOTAO 1
    {
     lampada = 1;delay(100); // Quando pressionado o botao 1 no controle, a lampada=1 e verifica no primeiro if fazendo a lampada ligar!
    }
   
   
   
   
    //...............................................................................................................................
   
   
   
    // VERIFICANDO A SENHA DE ACORDO COM O BOTAO APERTADO
   
    if(results.value==(botao1)&&lampada==1&&senha==0) // NO LUGAR DO (BOTAO 1) COLOQUE O CODIDO RECEBIDO REFERENTE AO BOTAO 1
    {
     senha = 1;
     Serial.println("Botao 1 pressionado!");
    }
   
    if(results.value==(botao2)&&lampada==1&&senha==1) // NO LUGAR DO (BOTAO 2) COLOQUE O CODIDO RECEBIDO REFERENTE AO BOTAO 2
    {
     senha = 2;
     Serial.println("Botao 2 pressionado!");
    }
   
    if(results.value==(botao3)&&lampada==1&&senha==2) // NO LUGAR DO (BOTAO 3) COLOQUE O CODIDO RECEBIDO REFERENTE AO BOTAO 3
    {
     senha = 3;
     Serial.println("Botao 3 pressionado!");
    }
     
    if(results.value==(botao4)&&lampada==1&&senha==3) // NO LUGAR DO (BOTAO 4) COLOQUE O CODIDO RECEBIDO REFERENTE AO BOTAO 4
    {
     senha = 4;
     Serial.println("Botao 4 pressionado!");
     delay(500);
    } 
     
    if(senha==4) // Sequencia ou senha correta, entao permite que a lampada desligue!
    {
    digitalWrite(13,0);
    delay(50);
    Serial.println("Lampada Apagada!");
    senha = 0;
    lampada = 0;
    delay(200);
    }

} //fecha o loop

 

 

Opá valeo ae mano, vou testar o código e aviso se funcionou ;D

ok , eu nao testei tambem nao, apenas criei ele aqui pois estava no serviço, talvez precise de algum ajuste minimo, mais acho bem provavel funcionar!

abs

Cara, vocÊ já tentou o comando:

if( digitalRead(pino1)==HIGH && digitalRead(pino2)==HIGH && digitalRead(pino)==HIGH && digitalRead(pino1)==HIGH){

  digitalWrite(pinodoLed,LOW);

}

Tenta ai e fala se deu certo ok!

Weider Não conseguir entender o Seu código.No caso o arduino não está lendo o valor de (results.value) ?

if(results.value==(Código Hexadecimal)&&(Código Hexadecimal)&& etc...

digitalWrite(led,LOW);

}

Não entendi o  porquê iria fazer ele ler os valores  dos pinos digitais =\

Desculpa cara,

    Eu não li direito e falei merda,  pensei que você queria saber como criar uma função em uma montagem que quando pressionado 4 botões ligados cada botão em uma porta digital do arduino, ele faria algo programado pro você, no caso apagar leds.

    Pensei que fosse tipo, se precionar o botão 1 que esta ligado ao pino digital 1 ele acende o led 1,  e assim sucessivamente com outros botões, pinos e leds,  dai pra apagar tudo de uma só vez utilizaria o codigo que coloquei.

  Essa parte de comunicação IR eu ainda não tive necessidade de aprender.

Há tranquilo pow UHEUHE Mas valeo Ae =D

Putz Luis Farias,

    PARABENS PELAS PALAVRAS !!!

     Muita gente acha que porque todo mundo que tá no mundo arduino vive repetindo: é facil!  é facil!   a coisa realmente é facil.

     Um amigo comprou o kit master do arduino, comprou raspbery só porque queria montar um analisador sismico,  detalhe ele é geologo,  resultado:  é facil,  mas tem que estudar.

    Consequencia foi que acabou ele me dando todo o material e eu montando pra ele o analisador sismico que ele queria.

    Como tenho a filosofia de compartilhar,  imediatamente cedi o rapberry pra outros amigos que estão querendo aprender ele, já que não tenho esse foco, vei de graça, cedi de graça e fico feliz.

    Pessoalmente estou tentanto aprender sobre comunicação entre arduino e Xbee em modo API a mais de 4 meses e estou com enormes dificuldades.

    Resumindo:  É facil!  mas somente se estudar.

testa aews....

/*
* IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

unsigned long senha_acende[4] = {botao1, botao2, botao3, botao4};
unsigned long senha_apaga[4] = {botao2, botao3, botao4, botao1};
byte certo = 0;
byte ligado = LOW;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode(8, OUTPUT);
  digitalWrite(8, LOW);
}

void loop() {

  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);

    if(ligado) {

      if(results.value == senha_apaga[certo]) {
        certo++;
      } else {
        certo = 0;
      }


      Serial.println(certo);

        if(certo == 4) {
          ligado = LOW;
          digitalWrite(8, ligado);
          certo = 0;
        }

      } else {

        if(results.value == senha_acende[certo]) {
          certo++;
        } else {
          certo = 0;
        }
       

        Serial.println(certo);

        if(certo == 4) {
          ligado = HIGH;
          digitalWrite(8, ligado);
          certo = 0;
        }

      }

    irrecv.resume(); // Receive the next value
  }

}

Opá Boa pessoal, enfim conseguir criar um código no qual apagasse o led quando apertasse as 4 teclas simultaneamente, agradeço de coração a todos que tentaram ajudar com o código Valeo mesmo :DD

Aqui segue o código, Apenas atribui uma variável e fui criando algumas condições


void loop()
{
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);


if(results.value==0xFD00FF){//TECLA Liga


digitalWrite(led,HIGH);//Led liga
}

if(results.value==0xFD48B7){//Se pressionada a TECLA 3 estado=1
estado1=1;
Serial.println(estado1);
}

if(results.value==0xFD8877){//  Se pressionada a TECLA 2 e se  O estado1==1 estado1=2
if(estado1==1){
estado1=2;
Serial.println(estado1);
}
}

else{ (led,HIGH);
}



if(results.value==0xFD28D7){// Se pressionada a TECLA 4 e o estado1==2 estado1=3
if(estado1==2){
estado1=3;
Serial.println(estado1);
}
}

else{ (led,HIGH);
}



if(results.value==0xFD08F7){// Se pressionada a TECLA 1 e estado1==3 estado1=4
if(estado1==3){
estado1=4;
Serial.println(estado1);
}
}

else{ (led,HIGH);
}










if(estado1==4){
digitalWrite(led,LOW);//Se estado1==4 desliga led, 
delay(1000);
}

if(estado1==4){// Apos o estadi1==4 estado1=0 para que o led possa ser acesso novamente
estado1=0;
delay(1000);
}




irrecv.resume(); // Receive the next value
}
}

 

Eu apenas fui guardando as informações nas variáveis até que fosse verdadeiro o estado após ser pressionada as 4 teclas, acho que deu para entender, valeo ae a todos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço