Не могу создать задержку отключения вентилятора

Тоесть если температура ниже 28 - греем, а если выше не греем но дуем???

проверил, немного не по моей логике-))) мне надо, чтобы при т<28 и грело и дуло, при т>30 сначала выключился обогреватель, а через паузу - вентилятор/ здесь не так-))

 boolean fanOn;
 long fanDelay = 6000; // интервал включения вентилятора
#define heaterPin  9   // реле обогревателя
#define fanPin  10   // реле вентилятора
void setup(void) {
  
  Serial.begin(9600);
  pinMode(heaterPin, OUTPUT);      // устанавливает режим работы - выход
  pinMode(fanPin, OUTPUT);      // устанавливает режим работы - выход
  
  digitalWrite(heaterPin, LOW);  // устанавливаем в выключенное положение
  digitalWrite(fanPin, LOW);  // устанавливаем в выключенное положение
  
}

void loop(void) {
 temperature = 27;
// Управление обогревателем
if (temperature < 28) {
digitalWrite(heaterPin, HIGH); // Включаем обогреватель
} else {
digitalWrite(heaterPin, LOW); // Выключаем обогреватель
}
// Управление вентилятором
if (temperature > 30) {
if (fanOn) {
// Если вентилятор включен, устанавливаем задержку
if (millis() - fanDelay >= 5000) {
digitalWrite(fanPin, LOW); // Выключаем вентилятор
fanOn = false; // Обновляем состояние вентилятора
}
} else if (temperature > 28) {
if (!fanOn) {
digitalWrite(fanPin, HIGH); // Включаем вентилятор
fanOn = true; // Обновляем состояние вентилятора
fanDelay = millis(); // Запоминаем время включения вентилятора
}
}
}
}

все в ваших руках, у вас есть примеры простые,(и главное правильные, а не запутанные) надо только чуть подумать, и переписать пару раз код)))

Ну так и сделайте это:

В чем у вас сложность так сделать?

boolean fanOn;
long fanDelay = 6000;             // интервал включения вентилятора

#define heaterPin  9              // реле обогревателя
#define fanPin  10                // реле вентилятора

void setup(void) {

  Serial.begin(9600);

  pinMode(heaterPin, OUTPUT);     // устанавливает режим работы - выход
  pinMode(fanPin, OUTPUT);        // устанавливает режим работы - выход

  digitalWrite(heaterPin, LOW);   // устанавливаем в выключенное положение
  digitalWrite(fanPin, LOW);      // устанавливаем в выключенное положение
}

void loop(void) {

  uint8_t  temperature = 27;
  uint32_t currentMillis, prevMillis;
  
  currentMillis = millis();

  if (temperature < 28) {
    digitalWrite(heaterPin, HIGH);  // Включаем обогреватель
    digitalWrite(fanPin, HIGH);     // Включаем вентилятор
    fanOn = true;
  }

  if (temperature > 30) {
    digitalWrite(heaterPin, LOW);   // Выключаем обогреватель
    if (fanOn) {
      prevMillis = millis();
      fanOn = false;
    }
    if (currentMillis - prevMillis >= fanDelay) {
      digitalWrite(fanPin, LOW);    // Выключаем вентилятор
    }
  }
}