If you want to see the actual code I am trying to debounce, here ya go.
int menu = 1;
int subMenu = 1;
int subMenuPrev = 0;
int menuPrev = 0;
int varNumb=0;
int pumpMins=30;
unsigned long pumpDelay = pumpMins*60*1000UL;
int soilMoistureSetpoint = 430;
int soilMoisture = 500;
int rh = 60;
int mornHours = 2;
int dayCount = 0;
int hoursOff;
int hoursOn;
boolean morning = false;
boolean day = true;
int uvOnSecs = 3;
int increase = 23;
int decrease = 24;
int left = 25;
int right = 26;
int up = 27;
int down = 28;
float temp_f;
long co2ppm = 1100;
long co2Low;
long co2High;
int fanMins = 15;
unsigned long fanDelay = fanMins * 60 * 1000UL;
float tempLow;
float tempHigh;
long dayCO2Low = 1000;
long dayCO2High = 1200;
long nightCO2Low = 500;
long nightCO2High = 600;
float dayTempLow = 90;
float dayTempHigh = 100;
float mornTempLow = 65;
float mornTempHigh = 75;
float nightTempLow = 75;
float nightTempHigh = 85;
// include the library code:
#include "Wire.h"
#include "Adafruit_LiquidCrystal.h"
// Connect via i2c, default address #0 (A0-A2 not jumpered)
Adafruit_LiquidCrystal lcd(0);
void setup() {
pinMode(A1, INPUT);
pinMode(A2, INPUT);
// set up the LCD's number of rows and columns:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}
void loop()
{
unsigned long uvDelay = uvOnSecs * 1000UL;
userInt();
assignSetpoints();
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 0);
lcd.setBacklight(HIGH);
}
//#######################################################
void userInt()
{
if(digitalRead(up)==HIGH)
{
subMenu++;
updateLCD();
}
if(digitalRead(down)==HIGH)
{
subMenu--;
updateLCD();
}
if(digitalRead(right)==HIGH)
{
menu++;
updateLCD();
}
if(digitalRead(left)==HIGH)
{
menu--;
updateLCD();
}
if(digitalRead(increase)==HIGH)
{
}
}
void assignSetpoints()
{
if (day)
{
co2Low = 1000;
co2High = 1200;
tempLow = 90;
tempHigh = 100;
}
if (morning)
{
tempLow = 65;
tempHigh = 75;
}
if (!day)
{
co2Low = 500;
co2High = 600;
tempLow = 75;
tempHigh = 85;
}
}
void updateLCD()
{
if (menu == 1 && subMenu == 1)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("co2");
lcd.setCursor(0, 1);
lcd.print(co2ppm );
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=0;
}
if (menu == 1 && subMenu == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("dayCO2Low");
lcd.setCursor(0, 1);
lcd.print(dayCO2Low);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=1;
}
if (menu == 1 && subMenu == 3)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("dayCO2High");
lcd.setCursor(0, 1);
lcd.print(dayCO2High);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=2;
}
if (menu == 1 && subMenu == 4)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("nightCO2Low");
lcd.setCursor(0, 1);
lcd.print(nightCO2Low);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=3;
}
if (menu == 1 && subMenu == 5)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("nightCO2High");
lcd.setCursor(0, 1);
lcd.print(nightCO2High);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=4;
}
if (menu == 1 && subMenu > 5)
{
subMenu = 1;
}
if (menu == 1 && subMenu < 1)
{
subMenu = 5;
}
//_________________________________________________________
if (menu == 2 && subMenu == 1)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperature");
lcd.setCursor(0, 1);
lcd.print(temp_f);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=0;
}
if (menu == 2 && subMenu == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("dayTempLow");
lcd.setCursor(0, 1);
lcd.print(dayTempLow);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=5;
}
if (menu == 2 && subMenu == 3)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("dayTempHigh");
lcd.setCursor(0, 1);
lcd.print(dayTempHigh);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=6;
}
if (menu == 2 && subMenu == 4)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("mornTempLow");
lcd.setCursor(0, 1);
lcd.print(mornTempLow);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=7;
}
if (menu == 2 && subMenu == 5)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("mornTempHigh");
lcd.setCursor(0, 1);
lcd.print(mornTempHigh);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=8;
}
if (menu == 2 && subMenu == 6)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("nightTempLow");
lcd.setCursor(0, 1);
lcd.print(nightTempLow);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=9;
}
if (menu == 2 && subMenu == 7)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("nightTempHigh");
lcd.setCursor(0, 1);
lcd.print(nightTempHigh);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=10;
}
if (menu == 2 && subMenu > 7)
{
subMenu = 1;
}
if (menu == 2 && subMenu < 1)
{
subMenu = 7;
}
//_______________________________________________________
if (menu == 3 && subMenu == 1)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("RH");
lcd.setCursor(0, 1);
lcd.print(rh);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=0;
}
if (menu == 3 && subMenu > 7)
{
subMenu = 1;
}
if (menu == 3 && subMenu < 1)
{
subMenu = 7;
}
//___________________________________________________________
if (menu == 4 && subMenu == 1)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Soil Moisture");
lcd.setCursor(0, 1);
lcd.print(soilMoisture);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=0;
}
if (menu == 4 && subMenu == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("soilMoisture");
lcd.setCursor(0, 1);
lcd.print(soilMoistureSetpoint);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=11;
}
if (menu == 4 && subMenu == 3)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("pumpMins");
lcd.setCursor(0, 1);
lcd.print(pumpMins);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=12;
}
if (menu == 4 && subMenu > 3)
{
subMenu = 1;
}
if (menu == 4 && subMenu < 1)
{
subMenu = 3;
}
if (menu == 5 && subMenu == 1)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Lighting");
lcd.setCursor(0, 1);
if (day)
{
lcd.print("on");
}
else
{
lcd.print("off");
}
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=0;
}
if (menu == 5 && subMenu == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("hoursOn");
lcd.setCursor(0, 1);
lcd.print(hoursOn);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=13;
}
if (menu == 5 && subMenu == 3)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("hoursOff");
lcd.setCursor(0, 1);
lcd.print(hoursOff);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=14;
}
if (menu == 5 && subMenu == 4)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("mornHours");
lcd.setCursor(0, 1);
lcd.print(mornHours);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=15;
}
if (menu == 5 && subMenu == 5)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("fanMins");
lcd.setCursor(0, 1);
lcd.print(fanMins);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=16;
}
if (menu == 5 && subMenu == 6)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("uvOnSecs");
lcd.setCursor(0, 1);
lcd.print(uvOnSecs);
menuPrev = menu;
subMenuPrev = subMenu;
varNumb=17;
}
if (menu == 5 && subMenu < 1)
{
subMenu = 6;
}
if (menu == 5 && subMenu > 6)
{
subMenu = 1;
}
}