#include<Wire.h>
#include<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int ledState=0;
int redPin=6;
int buttonRst=11;
int buttonZro;
int Zro=0;
int buttonUp=12;
int buttonDn=10;
int buttonDNew;
int buttonNew;
int buttonPress;
int buttonOld=1;
int delayT=100;
int delayT1=150;
int cntUp;
int cntDn=256;
unsigned long lastDebounceTime = 0; // the last time the output pin was toggled
unsigned long debounceDelay = 50; // the debounce time; increase if the output flickers
void setup() {
Serial.begin(9600);
pinMode(redPin,OUTPUT);
pinMode(buttonRst, INPUT);
pinMode(buttonUp, INPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(5,0);
lcd.print("Hi AJ");
delay(1000);
lcd.clear();
}
void Zero()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(Zro);
cntUp=0;
}
void CountUp()
{
if(buttonOld==0 && buttonNew==1){
if(ledState==0){
digitalWrite(redPin,HIGH);
ledState=1;
while(ledState==1){
cntUp++;
lcd.setCursor(0,0);
lcd.print(cntUp);
delay(delayT1);
buttonPress=digitalRead(buttonUp);
if(buttonPress==1){
digitalWrite(redPin, LOW);
lcd.setCursor(0,1);
lcd.print("Counting Paused");
ledState=0;
delay(1000);
lcd.setCursor(0,1);
lcd.print(" ");
}
}
}
}
else{
digitalWrite(redPin,LOW);
ledState=0;
}
}
void CountDn()
{
if(buttonOld==0 && buttonDNew==1){
if(ledState==0){
digitalWrite(redPin,HIGH);
ledState=1;
while(ledState==1){
cntDn--;
lcd.setCursor(0,0);
lcd.print(cntDn);
delay(delayT1);
buttonPress=digitalRead(buttonDn);
if(buttonPress==1){
digitalWrite(redPin, LOW);
lcd.setCursor(0,1);
lcd.print("Counting Paused");
ledState=0;
delay(1000);
lcd.setCursor(0,1);
lcd.print(" ");
}
}
}
}
else{
digitalWrite(redPin,LOW);
ledState=0;
}
}
void Binary()
{
}
void loop() {
buttonNew=digitalRead(buttonUp);
if(buttonNew==1){
CountUp();
}
buttonZro=digitalRead(buttonRst);
if(buttonZro==1){
Zero();
}
buttonDNew=digitalRead(buttonDn);
if(buttonDNew==1){
CountDn();
}
buttonOld=buttonNew;
delay(delayT);
}