#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
unsigned int but_menos = 2;
unsigned int but_mais = 3;
bool menos = LOW;
bool mais = LOW;
bool menos_seguro = LOW;
bool mais_seguro = LOW;
unsigned long ultimo_menos;
unsigned long ultimo_mais;
unsigned int cont = 0;
void setup(){
lcd.init();
pinMode(but_menos, INPUT);
pinMode(but_mais, INPUT);
lcd.setCursor(0, 0);
lcd.print("Contagem:0");
}
void lendo_botoes(){
const unsigned int tempo_bounce = 150;
menos = digitalRead(but_menos);
mais = digitalRead(but_mais);
if (!menos){
menos_seguro = false;
}
if (menos && ((millis() - ultimo_menos) > tempo_bounce) && menos_seguro)
{
menos_seguro = true;
ultimo_menos = millis();
}else{
menos = LOW;
}
if (mais && ((millis() - ultimo_mais) > tempo_bounce) && !mais_seguro)
{
mais_seguro = true;
ultimo_mais = millis();
}else{
mais_seguro = mais;
mais = LOW;
}
}
void contagem(){
if (mais ){
cont ++;
att_disp();
return;
} else if (menos){
if (cont > 1){
cont--;
att_disp();
return;
} else {
cont = 0;
att_disp();
}
}
}
void att_disp(){
lcd.setCursor(9, 0);
lcd.print(" ");
lcd.setCursor(9, 0);
lcd.print(cont);
}
void loop(){
lendo_botoes();
contagem();
}