Problemas com menu de configuração

Aqui esta o resto do programa, se me poder ajudar agradecia.

//---------------------------------------------------------void temperatura-----------------------------------------------------------//

void temperatura(){
  
  File logFile = SD.open("LOG5.csv", FILE_WRITE);
      DateTime now = rtc.now(); //Mostra a data e hora no LCD
      botao = analogRead (0); //Leitura do valor da porta analógica A0 é guardada na variavel botao

      delay(2000);
      float h = dht.readHumidity(); // Cria a variavel que vai ler a Humidade
      float t = dht.readTemperature(); // Cria a variavel que vai ler a Temperatura
      lcd.clear();
      lcd.createChar(0, grau); // Cria o caracter com o simbolo do grau
      lcd.setCursor(0, 0);
      lcd.print("Temp  : ");
      lcd.setCursor(13, 0);
      lcd.print(t);
      lcd.write(byte(0)); // Mostra o simbolo do grau
      lcd.print("C");
      lcd.setCursor(0, 1);
      lcd.print("Humid : ");
      lcd.setCursor(14, 1);
      lcd.print(h);
      lcd.print("%");
      lcd.print(" ");

      if (t > cont || (hora_atual + tempo) == now.hour()) { //Se "t" for maior que cont quer dizer a temperatura desejada foi atingida

        digitalWrite(rele, LOW); //O rele passa a estar inativo
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Aquecedor");
        lcd.setCursor(0, 1);
        lcd.print("Desligado "); //Mensagem que aparece no LCD quando a temperatura ou as horas forem atingidas

        logFile.print(daysOfTheWeek[now.dayOfTheWeek()]);
        logFile.print(" ");
        logFile.print(now.day(), DEC);
        logFile.print("/");
        logFile.print(now.month(), DEC);
        logFile.print("/");
        logFile.print(now.year(), DEC);
        logFile.print(" ");
        logFile.print(now.hour(), DEC);
        logFile.print(':');
        logFile.print(now.minute(), DEC);
        logFile.println();
        Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
        Serial.print(" ");
        Serial.print(now.day(), DEC);
        Serial.print("/");
        Serial.print(now.month(), DEC);
        Serial.print("/");
        Serial.print(now.year(), DEC);
        Serial.print(" ");
        Serial.print(now.hour(), DEC);
        Serial.print(':');
        Serial.println(now.minute(), DEC);

        logFile.print("Aquecedor Desligado ");
        Serial.print("Aquecedor Desligado ");

      } else { //Se "t" nao for maior que cont quer dizer que a temperatura desejada ainda nao foi atingida

        digitalWrite(rele, HIGH); //O rele passa a estar ativo
        lcd.clear();
        lcd.begin(16, 2);
        lcd.clear();

        lcd.createChar(0, grau); // Cria o caracter com o simbolo do grau
        lcd.setCursor(0, 0);
        lcd.print("Temp  : ");
        lcd.setCursor(13, 0);
        lcd.write(byte(0));  // Mostra o simbolo do grau
        lcd.print("C");
        lcd.setCursor(0, 1);
        lcd.print("Humid : ");
        lcd.setCursor(14, 1);
        lcd.print("%");

        lcd.setCursor(8, 0);
        lcd.print(t); //Apresenta a temperatura no LCD
        lcd.write(byte(0));
        lcd.setCursor(8, 1);
        lcd.print(h); //Apresenta a humidade no LCD

        delay(3000);
        lcd.clear();
        lcd.setCursor(0, 1);
        lcd.print(now.day(), DEC);
        lcd.print('/');
        lcd.print(now.month(), DEC);
        lcd.print('/');
        lcd.print(now.year(), DEC);
        lcd.print("  ");
        lcd.setCursor(0, 0);
        lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
        lcd.setCursor(11, 0);
        lcd.print(now.hour(), DEC);
        lcd.print(':');
        lcd.print(now.minute(), DEC);

        logFile.print(daysOfTheWeek[now.dayOfTheWeek()]);
        logFile.print(" ");
        logFile.print(now.day(), DEC);
        logFile.print("/");
        logFile.print(now.month(), DEC);
        logFile.print("/");
        logFile.print(now.year(), DEC);
        logFile.print(" ");
        logFile.print(now.hour(), DEC);
        logFile.print(':');
        logFile.print(now.minute(), DEC);
        logFile.println();
        Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
        Serial.print(" ");
        Serial.print(now.day(), DEC);
        Serial.print("/");
        Serial.print(now.month(), DEC);
        Serial.print("/");
        Serial.print(now.year(), DEC);
        Serial.print(" ");
        Serial.print(now.hour(), DEC);
        Serial.print(':');
        Serial.println(now.minute(), DEC);

        logFile.print("Temperatura: ");
        logFile.print(t);
        logFile.println(" *C");
        Serial.print("Temperatura: ");
        Serial.print(t);
        Serial.print(" *C  ");

        logFile.print("Humidade: ");
        logFile.print(h);
        logFile.println(" %");
        logFile.println();
        logFile.close();
        Serial.print("Humidade: ");
        Serial.print(h);
        Serial.println(" %");
        Serial.println();

      } //Fim do else
      
} //fim do temperatura




//---------------------------------------------------------void alterar-----------------------------------------------------------//

void alterar() {

  lcd.clear();
  lcd.print("Temperatura");
  lcd.setCursor(0, 1);
  lcd.print("Horas func");

  do {

    botao = analogRead(0); //Leitura do valor da porta analógica A0 é guardada na variavel botao

    if (botao < 100) { //Verifica qual botao foi clicado ("RIGHT")
    }

    else if (botao < 200) { //Botao "UP": diminui a temperatura desejada
      delay(300);
      menu--;
      lcd.clear();
      lcd.print(">Temperatura");
      lcd.setCursor(0, 1);
      lcd.print(" Horas func");
      delay(100);
      if (menu == 0 || menu == 3)
        menu = 1;
    }

    else if (botao < 400) { //Botao "DOWN": diminui a temperatura desejada
      delay(300);
      menu++;
      delay(100);
      lcd.clear();
      lcd.print(" Temperatura");
      lcd.setCursor(0, 1);
      lcd.print(">Horas func");
      if (menu == 0 || menu == 3)
        menu = 1;
    }

    else if (botao < 600) { //Botao "LEFT": neste caso não faz nada
    }

    else if (botao < 800) { //Botao "SELECT": inicia o menu
      if (menu == 1) {
        temp_alterar();
      } else if (menu == 2) {
        horas_alterar();
      }
      return;
    }

  } while (botao != 800);

} //Fim do alterar




//---------------------------------------------------------void cartaoSD-----------------------------------------------------------//

void cartaoSD(){
  
  Serial.begin(9600); //Inicia comunicação serial com 9600 de baud rate
  Serial.println("Iniciando SD Card"); //Apresenta a frase no COM

  pinMode(CS_pin, OUTPUT); //Configura o pino CS como saída

  if (!SD.begin(CS_pin)) //Verifica se cartão SD está pronto
  {
    Serial.println("Falha ao abrir cartao SD");
    return;
  }

  Serial.println("Cartao SD iniciado com sucesso!");

  File logFile = SD.open("LOG5.csv", FILE_WRITE); //Cria e escreve num arquivo CSV
  if (logFile)
  {
    Serial.println("O arquivo foi aberto");
    Serial.println("\n");
  }
  else
  {
    Serial.println("Erro ao abrir arquivo");
  }
  
} //fim do CartaoSD




//-----------------------------------------------------void temp_alterar----------------------------------------------------------//

void temp_alterar() {

  lcd.clear();
  lcd.print("Inserir temp:"); //Função que vai ser chamada para o menu
  delay(300);

} //Fim do temp_alterar




//----------------------------------------------------void horas_alterar----------------------------------------------------------//

void horas_alterar() {

  lcd.clear();
  lcd.print("Inserir horas:"); //Função que vai ser chamada para o menu
  delay(300);

} //Fim do horas_alterar