Pessoal, estou tentando montar um botão, e o botão mostra no LCD a quantidade de vezes que foi pressionado. Um contador!
O problema é que o botão nao conta por cada pressionada, mas sim por tempo que ele ta pressionado. Se eu fico segurando o botão, ele fica subindo o valor. Tem alguma forma mais facil de fazer isso sem ser com o código abaixo?
Outra coisa, quando solto o botão, ele nao da low, por isso coloquei ele como low la em cima, isso é normal?
#include <LiquidCrystal.h>
// Inicializa o LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// Configura o ATMEGA
void setup()
{
// Configura a porta
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);// Configura o LCD
lcd.begin(16, 2);// Mostra um OK
lcd.print(“Inicializacao ok”);
}// Looping principal
void loop()
{
// Declaracoes
int botao01;
int displayes = 0;
bool pressioned = false;
char buffer[33];// Verifica o botão 1
botao01 = LOW;
botao01 = digitalRead(8);// Para o looping principal enquanto o botão está pressionado (aparentemente nao da LOW quando largo o botão)
while(botao01 == HIGH)
{
// Verifica se ja executou o código uma vez (aqui sem o IF fica subindo o valor)
if(pressioned == false)
{
// Mostra a quantidade de vezes que ja foi pressionado
displayes++;
sprintf(buffer,“Botao 1: %d”, displayes);lcd.setCursor(0, 1);
lcd.print(buffer);// Marca como executado
pressioned = true;
}
}// Marca com esperando botão
pressioned = false;delay(500);
}
Valeu =)