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);
}
Tags:
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!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por