Automation Help and M2tk.h Implementation on 16x2 LCD

Background: So I am doing an indoor veggie garden and I am building(attempting) an automated grow controller. I have done several arduino projects before, but never with a user interface.

Included:
-16x12 LCD Shield with 5 button input and reset (all 5 buttons go to A0, using different value resistors)
-Arduino Mega
-Relay Shield
-Temp/Humidity Sensor
-Soil Moisture Sensor

So I have part of the automation part set up:
Temperature Too High = Fan On (else do nothing)
Soil Moisture Too Low = Pump On (else do nothing)

What I need to implement on the automation:
Light Cycle: Trigger relay based on timer (Light on for x minutes, light off for x minutes)
--Is there a better way than blink without delay?
--If power is interrupted, is there anyway to continue a previous cycle(ie it knows the light was on for 8 hours and continues to shed light for 8 more hours) Is this possible without a battery backup? How would it know how long the power was out for?

Now for what I really can't wrap my head around.

  1. So the M2tk.h library examples use two buttons, next and select. These are both on two seperate pins. How can I use the Single analog pin from the LCD to navigate the menu system?

  2. I want to be able to change the following values from the LCD Screen using the buttons:
    ---Light Timer Durations
    ---Soil Moisture Start/Stop Levels
    ---Fan On/OFF Temp

For now, that should get me to a better place in the project.

I know I am trying to tackle a lot here, I would be ecstatic just to be able to navigate the menu options at this point. I also know that my code is nowhere near efficient. Baby steps, I know, baby steps.

Even if no one can help specifically, a point in the right direction would be greatly appreciated. Please let me know if I forgot to mention anything.

Attached is my code without any of the M2tk.h library stuff included.

#include <LiquidCrystal.h>
#include <dht11.h>

dht11 DHT11;

#define DHT11PIN 22

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
 int Relay1 = 31;
 int Relay2 = 39;
 
void setup()
{
 lcd.begin(16, 2);
 lcd.setCursor(0,0);
 lcd.print("Welcome to Your");
 lcd.setCursor(0,2);
 lcd.print("   Grow Room");
 delay(2000);
 lcd.clear();
 pinMode(Relay1, OUTPUT);
 pinMode(Relay2, OUTPUT);
 }

void loop()
{ int chk = DHT11.read(DHT11PIN);
  int sensor_input = analogRead(A10);
  int display_val;
  int sensor_output;
  
  if (sensor_input < 300)
      sensor_output = 300;
  else if (sensor_input > 1000)
      sensor_output = 1000;
  else
      sensor_output = sensor_input;      
      display_val = map(sensor_output, 300, 1000, 100, 0);

  if (display_val<50)
      digitalWrite(Relay1, LOW);  
  else 
      digitalWrite(Relay1, HIGH);
  
  
  if (Fahrenheit(DHT11.temperature) > 82)
      digitalWrite(Relay2, LOW);  
  else 
      digitalWrite(Relay2, HIGH);
  
lcd.setCursor(0,0);
  lcd.print("H:"); // print a simple message
  lcd.print((float)DHT11.humidity, 1);
  lcd.print("% "); // print a simple message

  lcd.print("T:"); // print a simple message
  lcd.print(Fahrenheit(DHT11.temperature), 1);
  lcd.print("F"); // print a simple message

lcd.setCursor(0,1);
  lcd.print("WL:"); // print a simple message
  lcd.print(display_val, DEC);
  lcd.print("%  "); // print a simple message
  delay(200);
  lcd.setCursor(8,1);
  lcd.print("         ");
}

//Celsius to Fahrenheit conversion
double Fahrenheit(double celsius)
{
	return 1.8 * celsius + 32;
}

Is there a better way than blink without delay?

No.

So the M2tk.h library examples use two buttons, next and select. These are both on two seperate pins. How can I use the Single analog pin from the LCD to navigate the menu system?

Depends on what you have connected to the analog pin, you know.