aarg:
You can guess the luck someone other than the original author would have in trying to modify the sketch, just by looking at the global variables:
char* menu1[8] = { "set temp/humidity", "set time/date", "set turner",
"set hatch date", "alarm points", "hardware setup", "factory reset", "return"
};
char* menu10[9] = { "current set points", "current cal offset", "set point temp", "set point humidity", "calibrate temp",
"calibrate hum", "set temp swing", "set humidity swing", "return"
};
char* menu20[6] = { "set minute", "set hour", "set day",
"set month", "set year", "return"
};
char* menu30[3] = { "disable/enable", "return", " "
};
char* menu40[4] = { "set days to hatch", "start countdown", "alarm on/off",
"return"
};
char* menu50[5] = { "turner hardware", "temp in F or C",
"audio alarm", "hot spot probe", "return"
};
char* menu60[3] = { "reset now ", "return", " " };
char* menu80[8] = { "temp alarm", "humidity alarm", "display set points", "high temp sp",
"low temp sp", "high hum sp", "low hum alarm", "return"
};
char* menu100[5] = { "disable/enable", "time turner runs", "time between turns",
"test turner", "return"
};
char* menu110[5] = { "disable/enable", "time between turns",
"cam time", "test turner", "return"
};
char* menu120[6] = { "disable/enable", "time between turns", "turner manual",
"tuner alarm", "test turner", "return"
};
char* standardText[4] = { "use up and down", "press enter to apply", "set_point : ", "press enter to exit" };
int subsublevel = 0;
int menuNumber2 = 0;
float temp;
float humidity;
float humidity_setpoint = 0;
float temp_setpoint = 0;
int alarm_active = 0;
float tempC = 0;
float tempF = 0;
float highTempSetPoint = 0;
float lowTempAlarmPoint = 0;
float highHumidAlarmPoint = 0;
float lowHumidAlarmPoint = 0;
unsigned long secondTurnercounter = 0; // turner second timer rewite to 60 then reset
unsigned long previousMillis5 = 0;
unsigned long timeBetweenTurnsSeconds = 0;
long previousMillis = 0;//one second counter
long interval = 1000; //one second
float tempSwing = 0;
float humiditySwing = 0;
float cal_temp = 0;
float cal_humidity = 0;
float adj_temp;
float adj_humidity;
long turn_timer; // used on display
int display_stat_turn = 1;
int t1_hatch_days = 15;
int time_to_turn_mins;
int time_to_turn_hr;
int set_minute = 1; //used to set rtc
int set_hour = 1; //used to set rtc
int set_day = 7; //used to set rtc
int set_month = 9; //used to set rtc
long set_year = 2018; //used to set rtc
int tunerDisable = 0;
int clock_update = 0; //used to set rtc
byte reboot = 1;
int prev_clock_day = 0;
int hour_counter = 0;
int memory_update;
unsigned int temp_timer = 0; // stop sensor for one second on boot and slow reads
byte lightButton = 0;
byte editButton = 0;
byte plusButton = 0;
byte noSave = 0;
byte minusButton = 0;
int menuNumberLv1 = 0;
int menuNumber3 = 0;
int editMode = 0;
byte preveditButton = 0;
int menuNumber = 1;
int subMenu = 0;
byte prevplusButton = 0;
byte prevMinusButton = 0;
unsigned long prevMillis = 0;
byte prevlightButton = 0;
int prevmn = 0;
int screenmax = 7;
int menuLevel = 0;
int prevmn2 = 0;
int escape = 0;
int hatchDays = 0;
int hatchCountUp = 0;
int hatchAlarm = 0;
int turnerType = 1;
int TimeBetweenTurns = 1;
int TimeTurnerTurns = 1;
int turnerAlarm = 0;
unsigned long turnerRunCounter = 0;
int testTurner = 0;
unsigned long countdown = 0;
byte tilt = 0;
byte onetime = 0;
byte turnerstop = 0;
byte turnerEstop = 0;
byte prevturnerstop = 0;
byte audioalarm = 0;
byte tempalarm = 1;
byte humalarm = 1;
byte facReset = 0;
byte soundalarm = 0;
byte badsensor = 1; //bad reading go safe
byte setlightrelay = 1;
byte heaterdisplay = 0;
byte humidityfandisplay = 0;
byte tempinF = 0;
byte prevtempinF = 0;
byte temp_char[8] = { B01110, B01010, B01010, B01110, B01110, B11111, B11111, B01110 };
byte hum_char[8] = { B00100, B01110, B11111, B00100, B10001, B00100, B10001, B00100 };
byte bell_Char[8] = { B00100, B01110, B01110, B01110, B11111, B11111, B00100, B00000 };
byte arrow_Char[8] = { B00000, B00000, B10000, B10000, B10111, B10011, B10101, B01000 };
byte pointer[8] = { B10000, B01000, B00100, B00010, B00010, B00100, B01000, B10000 };
byte showC[8] = { B11000, B11000, B00000, B00111, B00100, B00100, B00100, B00111 };
byte showF[8] = { B11000, B11000, B00000, B00111, B00100, B00111, B00100, B00100 };
It's not for me to tell someone how to finish a project (although I may too often succumb to temptation), but I'm definitely done with helping... in all sincerity, I think the best solution is to throw this code in the garbage can and start from scratch.
I looked at that a bit when the OP first posted it, the menu structure in the code is quite cryptic, and I didn't really want to spend any time on it, since they had originally started with a completely different sketch that I'd already spent a considerable amount of time looking over. Incidentally, the byte arrays with the binary data at the end of the variables are definitions of custom characters for the LCD display.