Ola garagistas 

Sou novo aqui e com arduino, e gostaria de uma  qualquer ajuda ou sugestão no programa que estou tentando desenvolver..

Estou tentando fazer um temporizador com delay que funciona da seguinte forma:

Aperto um Botão e o led liga fica 5 segundos ligado, depois desliga fica mais 5 segundos desligado, liga de novo por mais 5 segundos e desliga, depois disso eu só vou poder acionar esse led e a contagem depois de 10 segundos ..

Segue o programa.

Meu problema esta em "quebrar" esse looping de contagem , Não consigo faze- lo parar de "piscar"

Agradeço desde ja !

#define BT1 52
#define LED 53

int estadBut1 = 0; //verifica se o botao esta pressionada


boolean ligar1 = false; // variavel para armazenar o acionamento do botão


int anterior = 0; // variavel que evitara o bouncing

void setup() {
pinMode (BT1, INPUT);
pinMode (LED, OUTPUT);
digitalWrite (LED,LOW);

}

void loop() {


estadBut1 = digitalRead (BT1);

if((estadBut1 == HIGH) && (anterior == LOW)){
if (ligar1 == false){
ligar1 = true;
}
else
ligar1 = false;
}

anterior = estadBut1;

if (ligar1 == true)
{
digitalWrite(LED, HIGH);
delay(5000);
digitalWrite(LED, LOW);
delay(5000);
digitalWrite(LED, HIGH);
delay(5000);
digitalWrite(LED, LOW);
delay(10000);


/*o problema esta aqui! nao consigo fazer o programa parar de contar o tempo! */


anterior =!anterior;   /* aqui tentei reverte o estado da variavel "anterior" para que parasse a contagem mas nao tive sucesso */


}
else digitalWrite(LED, LOW);

}

Exibições: 319

Responder esta

Respostas a este tópico

Olá Rafael agradeço a atenção Então gostaria que led ligasse a principio pelo menos s ve

Oi meu amigo, bem vindo. Acho que vc reverteu o estado da varável errada.

Se vc colocar "ligar1 = false" ao invés de "anterior =!anterior" vai funcionar do jeito que vc quer. E também não há necessidade desde else depois do if também, na minha opinião.

Espero ter ajudado.

Obrigado pela dica e sugestão vou testar, e posto o resultado depois vlw

Olá Rafael sua sugestão deu certíssimo!!

Muito Obrigado! 

amigo nao testei mas veja se funciona assim



#define BT1 52
#define LED 53

int estadBut1 = 0; //verifica se o botao esta pressionada
boolean ligar1 = false; // variavel para armazenar o acionamento do botão

void setup() {
pinMode (BT1, INPUT);
pinMode (LED, OUTPUT);
digitalWrite (LED,LOW);

}

void loop() {


estadBut1 = digitalRead (BT1);

if(estadBut1 == HIGH)
{
ligar1 = true;
}else{
ligar1 = false;
}


if (ligar1 == true)
{
  for(int i=0; i<3; i++)
{
digitalWrite(LED, HIGH);
delay(5000);
digitalWrite(LED, LOW);

delay(5000);
}
if (ligar1 ==false)
{
  digitalWrite(LED,LOW);
}


}
}

Obrigado!!  jose vou verificar o codigo .. e depois trago a novidades VLW!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço