SENSOR LM35 con pulsadores y visualizacion en pantalla LCD

Hola, actualmente tengo problemas con un ejercicio de arduino que me han propuesto y se trata de un control de temperatura con el LM35. aqui abajo les dejare el funcionamiento pero el verdadero problema no es el leer los datos del sensor, en realidad no se porque no me deja incrementar o decrementar la variable de la temperatura e imprimir con seguimiento las indicaciones en la LCD

En verdad es algo urgente y si alguien puede ayudar se lo agradeceria muchisimo, tambien les adjunto codigo que he desarrollado bajo el funcionamiento

FUNCIONAMIENTO;
Utilizando el sensor de temperatura LM35 y la una pantalla LCD
implemente un control configurable donde deberá establecer una
temperatura mínima y una temperatura máxima, por medio de un led y un
mensaje en la pantalla LCD indicara si la temperatura sobrepasa el
rango máximo establecido en el sistema, el led se mantendrá encendido
hasta que la temperatura baje o sea igual a la temperatura minima
establecida; el sistema se configura de la siguiente manera.
o Se tienen 3 pulsadores P1, P2 y P3, P2 será utilizado para
ingresar al modo de configuración del sistema, P1 y P3 serán
utilizados para incremento o decremento de los parámetros de
temperatura.
o Al presionar P2 una vez, en la pantalla LCD debe aparecer un
mensaje que indique que debe establecer la temperatura mínima
del sistema por medio de los pulsadores P1 y P3.
o Al presionar de nuevo P2 debe aparecer un mensaje de
confirmación para indicar que se estableció la temperatura
mínima del sistema.
o Si presiona una vez más P2 debe aparecer un mensaje que indique
que debe establecer la temperatura máxima del sistema, de la
misma forma que la temperatura mínima, al presionar otra vez P2
se confirma el valor de la temperatura máxima.
o Presiona una vez más P2 y se inicia el trabajo del sistema.

#include <LiquidCrystal.h> // importa libreria LiquidCrystal
#define P2 8
#define P1 9
#define P3 10
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
float TEMPMAX;


void setup() {
Serial.begin(9600);
pinMode(P2,INPUT_PULLUP);
pinMode(P1,INPUT_PULLUP);
pinMode(P3,INPUT_PULLUP);
pinMode(13, OUTPUT);
}

float medicion_temperaturaMIN(){
if(digitalRead(P2)==LOW && digitalRead(P3) == HIGH && digitalRead(P3) == HIGH){
lcd.setCursor(0, 0);        // cursor en primer fila y primer columna
lcd.print("Ingrese TEMP.MIN");// escribe Temp:
delay(3000);
lcd.clear();
float lectura = analogRead(A0);
float constante = 5000/1023;
float voltaje = constante*lectura;
float temperatura = voltaje/10;

    if(digitalRead(P1)==LOW){
    temperatura=temperatura+1;
    }
    if(digitalRead(P3)==LOW){
    temperatura=temperatura-1;
    }
    
if(digitalRead(P2)==LOW){
lcd.setCursor(0, 0);         // cursor en primer fila y primer columna
lcd.print("TEMP.MIN leida");
} 
  
Serial.println(temperatura);
  return temperatura;
}
}





float SM_temperatura(float TEMPMIN){
  if(digitalRead(P1)==LOW){
  TEMPMAX++;
    
  }else{
 if(digitalRead(P3)==LOW){
  TEMPMAX--;
  }
  }

}

void loop(){
float TEMPMIN = medicion_temperaturaMIN();
float TEMPMAX = SM_temperatura(TEMPMAX);   


    if(TEMPMAX > 100){
    digitalWrite(13, HIGH);
    }
    if(TEMPMAX < 10){
    digitalWrite(13, LOW);
    }
}

Porque defines variables locales y esperas que dichas variables funcionen en el resto de las funciones implementadas.
Ejemplo
En el loop defines TEMPMIN pero luego envias a SM_temperatura(TEMMAX)

float SM_temperatura(float tempMin){

Prueba con esto

void loop(){
    float tempMin = medicion_temperaturaMIN();
    float tempMax = SM_temperatura(tempMin);   

    if (tempMax > 100){
        digitalWrite(13, HIGH);
    }
    if (tempMax < 10){
        digitalWrite(13, LOW);
    }
}

Yo he cambiado TEMPMAX x tempMax y TEMPMIN x tempMin