(RESOLVIDO) rduino como guarda valores de pushbutton (contador)

Bom dia galera, estou com um problema, meu objetivo é utilizar um pushbutton para acionar um led mas só depois que se apertar o pushbutton 10 vezes, só que não estou conseguindo fazer o circuito funcionar corretamente, queria saber como armazena os valores lidos pelo pushbutton quando aperto e mando um sinal HIGH para o Arduino e só na decima vez que apertar o push button, é que o led aciona, já fiz várias tentativas e nada, será que tenho que guarda os valores na EEPROM do Arduino.

literalmente quero fazer um contador que ligue o LED, depois que apertar o  pushbutton 10 vezes, e depois ele retorne a situação inicial.

aqui está algumas tentativas mal sucedidas, quem puder me ajudar agradeço.

const int botao = 2;       // pino digital 2 conectado ao  pushbutton 

const int led = 7;          // pini digital 7 conectado ao led

int estado = 0;            // variável que recebe o valor lido do pushbutton 

int contador = 0;          // variável que conta quantas vezes o pushbutton foi pressionado 

void setup()
{
pinMode(botao, INPUT);      // configura o pino conectado no pushbutton como entrada

pinMode(led, OUTPUT);      // configura o pino conectado ao led como saída

Serial.begin(9600);          // inicializa o serial monitor

}

void loop()
{
estado = digitalRead(botao);  // armazena a variável lida pelo pushbutton


if( estado == HIGH)             //    se pushbutton  pressionado 
{
contador = contador++;       //  contador acrescentar mais um exmp : contador + 1
 
if(contador == 10)               // se o pushbutton for pressionado 10 vezes
{
digitalWrite(led, HIGH);        //  habilita saída conectada ao led
delay(5000);                       // com tempo de 5s
digitalWrite(led, LOW);        // depois desabilita o led

Serial.print("Valor: ");            // mostra no serial monitor a contagem cada vez que pushbutton é 
Serial.println(contador);        // pressionado
delay(500);

}

}



}

2 esse aqui foi o que cheguei mais perto, aperto o pushbutton ele começa a contar de 0 ate 10 e aciona o led, mas eu quero que ele conte de um em um somente quando aperta o pushbutton de cada vez no caso aperta 10vezes.

const int botao = 2;           // pino digital 2 conectado ao  pushbutton 

const int led = 7;              // pini digital 7 conectado ao led

int estado = 0;                // variável que recebe o valor lido do pushbutton 

int contador = 0;                // variável que conta quantas vezes o pushbutton foi pressionado 

void setup()
{
pinMode(botao, INPUT);           // configura o pino conectado no pushbutton como entrada

pinMode(led, OUTPUT);            // configura o pino conectado ao led como saída

Serial.begin(9600);                  // inicializa o serial monitor

}

void loop()
{
estado = digitalRead(botao);            // armazena a variável lida pelo pushbutton

if( estado == HIGH)                         //    se pushbutton  pressionado 
{
                             

 /* cada vez que o pushbutton for pressionado o contador incrementa mais um na contagem ate   chega a 10 */


for(contador = 0; contador < 11; contador++)   

{
if(contador == 10)                // se contador chegar ate 10
{

digitalWrite(led, HIGH);         // habilita led
delay(5000);                        // por 5s
digitalWrite(led, LOW);         // depois desabilita o led


} // end if2


Serial.print("Valor: ");            //  mostra a contagem no serial monitor
Serial.println(contador);
delay(500);

} // end for

}// end if 1



} // end void loop

Exibições: 8349

As respostas para este tópico estão encerradas.

Respostas a este tópico

Olá amigo. Aconselho a seguir as regras da comunidade para que fique mais fácil de ajudar.

http://labdegaragem.com/forum/topics/sugest-o-de-como-postar

Vou te ajudar agora mas com a condicional de arrumar seu tópico conforme as regras.

" mas eu quero que ele conte de um em um somente quando aperta o pushbutton de cada vez no caso aperta 10vezes."

Esse problema é conhecido como Deboucing. Na verdade não é um problema, é uma característica. Não sou a pessoa mais indicada para lhe explicar sobre isso mas achei um texto bem explicativo na internet. Aconselho dar uma olhada.

https://imasters.com.br/desenvolvimento/software-livre/debouncing-v...

Desenhei um code que resolve esse problema de deboucing com um delay. Não é o mais indicado(nesse artigo que postei explica o porque) mas para o que se propos a fazer, ele funciona.

https://pastebin.com/R09wTiw6

Não testei, apenas fiz uma verificação e não teve erros. Qualquer coisa avisa ae. Espero ter ajudado.

Muito obrigado, funcionou certo, o led só acende depois que eu pressiono 10 vezes o  pushbutton

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço