incubatrice per uova  aiutoooo

ciao, come ormai mi succede un po' troppo di frequente ho ragionato troppo poco. Il codice per l'utilizzo del pulsante che ho pubblicato questa mattina conteneva un errore di funzionalità: non andava messa la riga con isteresi -= 0.1
Ho guardato il tuo codice e secondo me questo dovrebbe funzionare correttamente

#include <EEPROM.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

float tempC;
int TempC_Decimal = 0;
int tempPin = 0;
int DigitalPin =  13;
int TemperaturaMinima = 22;
int value = 0;
int isteresi = 1;
int buttonPin_inc = 6;
int buttonPin_dec = 7;
char stato_pulsanti = 0;
int lettura_pulsante = 0;

void setup() {
  lcd.begin(4,20);
  value = EEPROM.read(0);
  if (value == 1)
  {
    TemperaturaMinima =  EEPROM.read(1);
  }
  pinMode(DigitalPin, OUTPUT);
  pinMode(buttonPin_inc, INPUT);
  pinMode(buttonPin_dec, INPUT);
}

void loop() {
  //valutazione di dati disponibili da seriale
  if (Serial.available() > 0)
  {
    TemperaturaMinima = Serial.read();
    EEPROM.write(0, 1);
    EEPROM.write(1, TemperaturaMinima);
  }
  
  //gestione della pressione del pulsante collegato al pin 6 per incrementare l'isteresi
  lettura_pulsante = digitalRead(buttonPin_inc);
  if((lettura_pulsante == HIGH) && !(stato_pulsanti & 0x01))
  {
    isteresi += 0.1;
    stato_pulsanti |= 0x01;
  }
  else
  {
    if(lettura_pulsante == LOW)
    {
      stato_pulsanti &= ~0x01;
    }
  }
  
  //gestione della pressione del pulsante collegato al pin 7 per decrementare l'isteresi
  lettura_pulsante = digitalRead(buttonPin_dec);
  if((lettura_pulsante == HIGH) && !(stato_pulsanti & 0x02))
  {
    isteresi -= 0.1;
    stato_pulsanti |= 0x02;
  }
  else
  {
    if(lettura_pulsante == LOW)
    {
      stato_pulsanti &= ~0x02;
    }
  }
  
  //calcolo dela temperatura attuale
  tempC = analogRead(tempPin);           //read the value from the sensor
  tempC = (5.0 * tempC * 100.0)/1024.0;  //convert the analog data to temperature
  TempC_Decimal = (tempC - (tempC)) * 100;
  //visualizzazione a display
  lcd.clear();
  lcd.print ( "TEMP.INTERNA +" );
  lcd.setCursor  (14,0);
  lcd.print(tempC);
  lcd.setCursor  (19,0);
  lcd.print(TempC_Decimal);
  lcd.setCursor  (2,2);
       lcd.setCursor (0,1);  
       lcd.print ( "TEMP.di soglia +" );
  lcd.setCursor (18,1);          //sposta i gradi di soglia sull'lcd
  lcd.print(TemperaturaMinima); // scrive temperatura di soglia
  
  //trasmissione via seriale della temperatura di soglia
  Serial.println(TemperaturaMinima);
  
  //gestione dell'attivazione/disattivazione dell'uscita in base alla temperatura letta
  if (tempC < TemperaturaMinima)
  {
    digitalWrite(DigitalPin, HIGH);   // set the LED on
    delay(4000);                      // wait for a second
  }
  else
  {
    if (tempC > (TemperaturaMinima + isteresi))
    {
      digitalWrite(DigitalPin, LOW);  // set the LED off
      delay(4000);      
    }
  }
  delay(200);                                    
}

prevede due pulsanti, uno per incrementare l'iscteresi (collegato al pin 6) e un oper decrementarla (collegato al pin 7) per lo schema fai sempre riferimento a www.arduino.cc/en/Tutorial/Button.
Per quel che riguarda la ventola tu dici "[...]questo funziona ma non imposta il livello di intervento ventola". Dove avresti collegato la ventola? E in che condizioni si dovrebbe attivare? Sul codice non c'è traccia di queste due cose.