Bom pessoal é uma simples ajuda mas não estou conseguindo , como eu faço para que o contador só incremente mais 1 visitante apenas quando eu solte o botão?, pois se eu segurar ele ficar contando sem parar , o problema teoricamente é simples mas não achei a solução, agradeço desde já a ajuda dos amigos, valeu.
#include <LiquidCrystal.h>
const int botaoIncrementa = 30;
const int botaoReset = 36;
int numeroVisitantes = 0; //Cria a variavel onde vamos armazenar o numero de visitantes
LiquidCrystal lcd(53, 51, 49, 47, 45, 43);
void setup()
{
pinMode(botaoIncrementa, INPUT);//Definindo o pino do botao como entrada
pinMode(botaoReset, INPUT); //Definindo o pino do botao como entrada
digitalWrite(botaoIncrementa, HIGH);
digitalWrite(botaoReset , HIGH);
Serial.begin(9600); // Inicia a comunicaçao serial
lcd.begin(16,2);
lcd.setCursor(3,0);
lcd.print("VISITANTES");
lcd.setCursor(0,1);
lcd.print("CONTADOR= ");
}
void loop()
{
if (digitalRead (botaoIncrementa) == LOW)
{
numeroVisitantes++; //Esse comando incrementa o numero de visitantes em 1
Serial.print("Numero de Visitantes = ");
Serial.println(numeroVisitantes);//Imprime na serial o valor da variavel
lcd.clear();
lcd.setCursor(3,0);
lcd.print("VISITANTES ");
lcd.setCursor(0,1);
lcd.print("CONTADOR= ");
lcd.print(numeroVisitantes);
delay(500);
}
if (digitalRead(botaoReset) == LOW)
{
numeroVisitantes = 0; //Reseta o numero de visitantes para zero
Serial.print("Numero de Visitantes = ");
Serial.println(numeroVisitantes);//Imprime na serial o valor da variavel
lcd.clear();
lcd.setCursor(3,0);
lcd.print("VISITANTES ");
lcd.setCursor(0,1);
lcd.print("CONTADOR= ");
lcd.print(numeroVisitantes);
delay(500);
}
}
Vinicius1000:
Bom pessoal é uma simples ajuda mas não estou conseguindo , como eu faço para que o contador só incremente mais 1 visitante apenas quando eu solte o botão?, pois se eu segurar ele ficar contando sem parar , o problema teoricamente é simples mas não achei a solução, agradeço desde já a ajuda dos amigos, valeu.
Você guarda no Status o valor atual, e no Status_Antes o anterior, se ele estiver em HIGH e antes estava em LOW, ai vc acrescenta 1.
#include <LiquidCrystal.h>
int Status_Antes;
int Status;
const int botaoIncrementa = 30;
const int botaoReset = 36;
int numeroVisitantes = 0; //Cria a variavel onde vamos armazenar o numero de visitantes
LiquidCrystal lcd(53, 51, 49, 47, 45, 43);
void setup()
{
pinMode(botaoIncrementa, INPUT);//Definindo o pino do botao como entrada
pinMode(botaoReset, INPUT); //Definindo o pino do botao como entrada
digitalWrite(botaoIncrementa, HIGH);
digitalWrite(botaoReset , HIGH);
Serial.begin(9600); // Inicia a comunicaçao serial
lcd.begin(16,2);
lcd.setCursor(3,0);
lcd.print("VISITANTES");
lcd.setCursor(0,1);
lcd.print("CONTADOR= ");
}
void loop()
{
Status = digitalRead (botaoIncrementa);
if (Status == LOW)
{
Status_Antes = LOW;
}
if (Status_Antes == LOW & Status == HIGH)
{
Status_Antes = HIGH;
numeroVisitantes++; //Esse comando incrementa o numero de visitantes em 1
Serial.print("Numero de Visitantes = ");
Serial.println(numeroVisitantes);//Imprime na serial o valor da variavel
lcd.clear();
lcd.setCursor(3,0);
lcd.print("VISITANTES ");
lcd.setCursor(0,1);
lcd.print("CONTADOR= ");
lcd.print(numeroVisitantes);
delay(500);
}
if (digitalRead(botaoReset) == LOW)
{
numeroVisitantes = 0; //Reseta o numero de visitantes para zero
Serial.print("Numero de Visitantes = ");
Serial.println(numeroVisitantes);//Imprime na serial o valor da variavel
lcd.clear();
lcd.setCursor(3,0);
lcd.print("VISITANTES ");
lcd.setCursor(0,1);
lcd.print("CONTADOR= ");
lcd.print(numeroVisitantes);
delay(500);
}
}