Como hacer un menu para modificar valores

Buenos días,

Estoy haciendo un proyecto para controlar mi terrario, hasta ahora he conseguido que funcione, pero necesitaría hacer un menú para modificar las temperaturas:
int tempcernoche = 22;
int tempcerdia = 25;
int tempvent=31;
y las horas de encendido y apagado de una lampara
int horaInicio = 8;
int minutoInicio = 30;
int horaFin = 20;
int minutoFin = 30;

He montado 4 pulsadores para poder hacerlo, alguien me puede guiar de como poder hacer el menú, realmente tengo muy poca idea (es el primer proyecto que hago).

Muchas gracias de antemano.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <DHT.h>
#include <DallasTemperature.h>
#define DHTPIN 11 //Conectamos el Sensor al pin digital 11
#define DHTTYPE DHT22 
#define Botonatras     4
#define Botonarriba    5
#define Botonabajo     6
#define Botonselec     7

const byte pinDatosDQ=8;
const int BOTON = 2;
const int encendidoceramica = 3;
const int encendidovent = 9;
const int encendidoHID= 12;
int tempcernoche = 22;
int tempcerdia = 25;
int tempvent=31;
int val = 0; //val se emplea para almacenar el estado del boton
int state = 0; // 0 LED apagado, mientras que 1 encendido
int old_val = 0; // almacena el antiguo valor de val
  boolean  (EncHID) ;
  //Defino horas Inicio a las 08:30 y termina a las 20:30
  int horaInicio = 8;
  int minutoInicio = 30;
  int horaFin = 20;
  int minutoFin = 30;
  int momentoInicio = (horaInicio * 60) + minutoInicio;
  int momentoFin = (horaFin * 60) + minutoFin;

  int botselec = 0;
  int estadoselec = 0;
  int estadoantselc = 0;
  int const numeroElementosMenu=7;
  

DHT dht(DHTPIN, DHTTYPE);
/* Initialise the LiquidCrystal library. The default address is 0x27 
   and this is a 20 x 4 line display */
OneWire oneWireObjeto(pinDatosDQ);
DallasTemperature sensorDS18B20(&oneWireObjeto);

byte simbolo_temp[8] = {
  0b00000100,
  0b00001010,
  0b00001010,
  0b00001110,
  0b00011111,
  0b00011111,
  0b00001110,
  0b00000000,
};
LiquidCrystal_I2C lcd(0x3F,20,4); 
RTC_DS3231 RTC;


void setup() {
  /* Initialise the LCD */
  Serial.begin(115200);
  Wire.begin();
  lcd.begin(20,4);
  dht.begin();
  sensorDS18B20.begin();
   //RTC.begin();
  //RTC.adjust(DateTime(__DATE__, __TIME__));
  if (RTC.lostPower()) {
      RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));
   }
  lcd.createChar(0,simbolo_temp);
  pinMode(encendidoceramica,OUTPUT);//Enciende Ceramica
  pinMode(encendidovent,OUTPUT);//Arranca ventilador
  pinMode(encendidoHID,OUTPUT);//Control Lampara HID
  pinMode(BOTON, INPUT);//boton encendido lcd
  pinMode(Botonatras, INPUT);
  pinMode(Botonarriba, INPUT);
  pinMode(Botonabajo, INPUT);
  pinMode(Botonselec, INPUT);
  lcd.clear();
 
  }



  
/* Main program loop */
void loop() {
  int hum = dht.readHumidity();    // Lee la humedad
  int temp= dht.readTemperature(); //lee Temp
  sensorDS18B20.requestTemperatures();//lee Temp
  DateTime now = RTC.now(); //obtiene datos del modulo RTC
  int momentoAhora = (now.hour()* 60) + now.minute();
  val= digitalRead(BOTON); // lee el estado del Boton
  if ((val == HIGH) && (old_val == LOW)){
    state=1-state;
      delay(10);
      }
      old_val = val; // valor del antiguo estado
    if (state==1){
     lcd.backlight(); // enciende el LED
    }
        else{
          lcd.noBacklight(); // apagar el LED
        }
   lcd.setCursor(0, 3);
    if (now.hour()<=9)
   {
    lcd.print("0");
   }
  lcd.print(now.hour(), DEC); //imprime hora
  lcd.print(':');
    if (now.minute()<=9){
    lcd.print("0");
  }
  lcd.print(now.minute(), DEC); //imprime minutos
  lcd.setCursor(9, 2);
  lcd.print("CER: ");
    if ((temp<tempcernoche)||((temp<tempcerdia)&& ((momentoInicio <= momentoAhora) && (momentoAhora < momentoFin)))) {   //Enciende ceramica
                digitalWrite(encendidoceramica, HIGH);//Enciende ceramica
                lcd.print("ON ");         
    } else {   
                digitalWrite(encendidoceramica, LOW);
                lcd.print("OFF ");         
                       }
  lcd.setCursor(0, 3);
  lcd.setCursor(0, 0);
  lcd.print("T1:");
  lcd.print((char)0);
  lcd.print(temp);// temperatura DHT22
  lcd.print((char)223);
  lcd.print("C");
  lcd.setCursor(9, 0);
  lcd.print("T2:");
  lcd.print((char)0);
  lcd.print(sensorDS18B20.getTempCByIndex(0));
  lcd.print((char)223);
  lcd.print("C");
  lcd.setCursor(0, 1);
  lcd.print("H: ");
  lcd.print(hum);//humedad DHT11
  lcd.print("%");
  lcd.setCursor(9, 1);
  lcd.print("VENT: ");
    if (temp>=tempvent){   //Arranca ventilador
                
                digitalWrite(encendidovent, HIGH);
                lcd.print("ON ");
                
                }      
        else{
                digitalWrite(encendidovent, LOW);
                lcd.print("OFF");
               
                }
  lcd.setCursor(0, 2);
  lcd.print("HID: ");

   //Esto es que si hemos pasado o estamos en el momento de inicio , pero antes del momento del fin…
    if ((momentoInicio <= momentoAhora) && (momentoAhora < momentoFin)) {
    //devolver "Cierto" en esta función "esHora"
                digitalWrite(encendidoHID, HIGH);
                lcd.print("ON ");
                
          } 
    else {
       //devolver "Falso" en esta función "esHora"
       digitalWrite(encendidoHID, LOW);
       lcd.print("OFF ");
       return false;
     }   
    
   }