Problemas con sensor DHT11? Y controlador temperatura

Este es tu problema?

while(!digitalRead(btn1));

porque no usas el flanco? Cuando pasa de 1 a 0 o sea de HIGH a LOW estas en tu cambio de menú.
Asi no tienes que mantener el pulsador.
para ello solo almacena el estado anterior y compara el actual con el anterior.
El anterior debe estar en HIGH y el actual tal como lo has indicado en LOW
entonces algo asi, defiendo dos nuevas variables estado y estadoAnt del tipo int.

// en globales
int estado, estadoAnt = true;

Mira los cambios y consulta.

void menus() {
    estado = digitalRead(btn1);
    if (!estado && estadoAnt) { // entra a cada menu solo cuando es presionado.
        if (menu >= 3) menu = 0;  
        menu++; 
        switch(menu){ 
            case 1: lcd.setCursor(8,0);
                    lcd.print("BA");

                    if (lectura1 == 0){ 
                        if (menu==1){ 
                            analogWrite(A2,LOW);
                            analogWrite(A3,HIGH);
                            analogWrite(A4,HIGH);
                        }
                    }  
                    break; 
            
            case 2: lcd.setCursor(8,0);
                    lcd.print("ME");
                    if ( menu==2) {
                        analogWrite(A2,LOW);
                        analogWrite(A3,LOW);
                        analogWrite(A4,HIGH);
                    } 
                    break;  
            
            case 3: lcd.setCursor(8,0);
                    lcd.print("AL");

                    if(menu== 3){ 

                    digitalWrite(A2,LOW);
                    analogWrite(A3,LOW);
                    analogWrite(A4,LOW);
                    } 
                    break; 
        } 
    }
    estadoAnt = estado;
}