/*********
Nestor de la Paz
based on:
https://randomnerdtutorials.com/esp32-esp8266-i2c-lcd-arduino-ide/
https://forum.arduino.cc/t/format-a-single-integer-into-a-string/923995
*********/
#include <LiquidCrystal_I2C.h>
// set the LCD number of columns and rows
int lcdColumns = 16;
int lcdRows = 2;
int delayTime = 400;
int homeInt = 0;
int visitInt = 0;
int inningInt = 0;
int homeUpButtonState;
int homeDownButtonState;
#define homeUpButton 2
#define homeDownButton 15
int inningUpButtonState;
int inningDownButtonState;
#define inningUpButton 18
#define inningDownButton 5
int visitUpButtonState;
int visitDownButtonState;
#define visitUpButton 23
#define visitDownButton 19
// set LCD address, number of columns and rows
// if you don't know your display address, run an I2C scanner sketch
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
void setup(){
// initialize LCD
lcd.init();
// turn on LCD backlight
lcd.backlight();
printHome();
printVisit();
printInning();
pinMode(homeUpButton,INPUT_PULLUP);
pinMode(homeDownButton,INPUT_PULLUP);
pinMode(inningUpButton,INPUT_PULLUP);
pinMode(inningDownButton,INPUT_PULLUP);
pinMode(visitUpButton,INPUT_PULLUP);
pinMode(visitDownButton,INPUT_PULLUP);
}
void loop(){
homeUpButtonState=digitalRead(homeUpButton);
if (homeUpButtonState==LOW){
homeInt++;
homeInt = limitNumber(homeInt);
printHome();
delay(delayTime);
}
homeDownButtonState=digitalRead(homeDownButton);
if (homeDownButtonState==LOW){
homeInt--;
homeInt = limitNumber(homeInt);
printHome();
delay(delayTime);
}
inningUpButtonState=digitalRead(inningUpButton);
if (inningUpButtonState==LOW){
inningInt++;
inningInt = limitNumber(inningInt);
printInning();
delay(delayTime);
}
inningDownButtonState=digitalRead(inningDownButton);
if (inningDownButtonState==LOW){
inningInt--;
inningInt = limitNumber(inningInt);
printInning();
delay(delayTime);
}
visitUpButtonState=digitalRead(visitUpButton);
if (visitUpButtonState==LOW){
visitInt++;
visitInt = limitNumber(visitInt);
printVisit();
delay(delayTime);
}
visitDownButtonState=digitalRead(visitDownButton);
if (visitDownButtonState==LOW){
visitInt--;
visitInt = limitNumber(visitInt);
printVisit();
delay(delayTime);
}
}
void printHome(){
lcd.setCursor(2, 0);
char homeString[3];
sprintf(homeString, "C%02d", homeInt);
lcd.print(homeString);
}
void printVisit(){
lcd.setCursor(11, 0);
char visitString[3];
sprintf(visitString, "V%02d", visitInt);
lcd.print(visitString);
}
void printInning(){
lcd.setCursor(7, 1);
char inningString[3];
sprintf(inningString, "%02d", inningInt);
lcd.print(inningString);
}
int limitNumber(int number){
if (number < 0){
number = 0;
}
if (number > 99){
number = 99;
}
return number;
}