Problèmes avec les pauses et while

Bonjour à tous ! Voilà je suis un petit nouveau dans le monde arduino (un newbi même) et vj’ai ujn soucis avec mon code

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int tempoActive = 0;
unsigned long tempoDepart = 0;
long temps; 

void setup(void)
{
  Serial.begin(9600); 
  Serial.println("Arduino Digital Temperature // Serial Monitor Version"); 
  sensors.begin();
  pinMode(11, OUTPUT); // système allumage électrique
  pinMode(2, INPUT);   // sonde température
  pinMode(12, OUTPUT); //  LED température OK
  pinMode(10, OUTPUT); // électrovanne
}

void loop(void)
{ 
 
int sensor = digitalRead(2);
  //float voltage = (sensor / 1024.0) * 5.0;
  float tempC = sensors.getTempCByIndex(0);
  
  // Send the command to get temperatures
  {sensors.requestTemperatures();  
  Serial.print("Temperature is: ");
  Serial.println(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
  //Update value every 1 sec.
  delay(1000);}

  if (tempC <= 26)         // phase de chauffe
  {
  digitalWrite (10,HIGH);
  digitalWrite (12, LOW);
  digitalWrite (11,HIGH); 
  
  while ((tempC <= 26) && ((millis() - temps)>=4500)) // ici j'aimerais que mon systeme d'allumage
  {                                // soit actif environ 4 secondes et qu'il ne s'active qu'une fois sauf si le programme
    digitalWrite (11,LOW);      // est passé par la fonction >=27
    
    break;}}
 
   
                             
    

                 
 else if (tempC >= 27)    // Bonne température, rien à faire 
  {
  digitalWrite (10, LOW);
  digitalWrite (11, LOW);
  digitalWrite (12, HIGH);
  
  }
  
  }

en gros j’aimerais que ma LED n°11 (chauffe) s’active pendant 4 secondes environ, s’éteigne tout en gardant ma led n°10 (gaz) active. Ces deux LED seront à termes remplacer par des relais. J’essai de résoudre ça par moi même avec des forums etc mais impossible je bloque et c’est très frustrant surtout que pour un peu c’est une broutille à faire !
P.S: Pour le while je me doute bien qu’il y a un soucis car toujours vrai d’où le LED qui s’allume à peine et qui clignote quand le programme revient du tempC>=27 mais pareil je n’ai pas encore trouver la combine.
Merci à vous !
Ah et merci pour le tuto balise pour le code sur le forum ça ma bien aidé ^^

Vous ne mettez pas à jour la température tempC dans votre while... de plus l’expression à répéter d’un while s’execute Si sa condition est vraie et sinon passe à l’expression Suivante... donc là vous rentrez dans le while et vous faites break - donc l’interrompre - où vous le sautez ==> ça sert pas à grand chose Et ce n’est sans doute pas ce que vous aviez envie de faire

c'est typiquement une définition de programme qui se prête bien à la programmation par machine à états (cf mon tuto éventuellement)

Bonsoir,

while ((tempC <= 26) && ((millis() - temps)>=4500))

Tu dois donner une valeur à temps qui te sert de référence pour le début de la pause. Tu déclares la variable en début de programme mais tu ne lui donnes pas de valeur avant ta boucle while.

Pour la mise à jour de la température il suffit que je mette dans la boucle while sensors.requestTemperatures() ?
Sinon oui j'ai viré le break car j'étais persuadé que j'allais être encore bloqué dans la boucle. Pour retourner dans ma boucle whild quand ma température va baisser je dois me pencher sur le millis (si j'ai pas fais fausse route au début) ?

En gros j'aimerais faire en sorte que mon programme déclenche des électrode (LED 11) pour enflammer un brûleur gaz (LED 10) donc il faut que je retourne dans mon while si ma température à baissée.

Merci pour la réponse et désolé si mes question sont "simplettes" encore une fois je suis un newbie ^^.

Lisez mon tuto sur les machines à état - ça vous aidera à structurer votre code