Go Down

Topic: Ajuda , Controle de Acesso (Read 761 times) previous topic - next topic

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.

Code: [Select]

#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);
  }
}

mmoscz


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.
Code: [Select]

#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);
  }
}
4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

   Obg mmoscz pela atenção, é vivendo e aprendendo , valeu cara.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy