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
Tags:
As respostas para este tópico estão encerradas.
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.
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por