Pages: [1]   Go Down
Author Topic: Ajuda , Controle de Acesso  (Read 622 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP


Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1]   Go Up
Jump to: