ne reboucle pas

bonjours, merci d'etre si patient et de bien vouloir m'aider
voici mon probleme j'essai de faire un petit prog pour mon arduino qui lui fera des sequence pré determiner pour alimenter un ordinateur, allumer l'ordinateur ainsi que le moniteur. pour le demarage pas de probleme, mais pour l'arret il faut que j'attende que l'ordi soit eteint pour cesser d'alimenter le relais qui lui fournit l'alimentation a l'ordinateur avec le code que j'ai fait losque j'appui sur le bouton off mon prog effectue les premiere operation et arrete lorsqu'il voit que l'ordi est encore allumer et lorsque l'ordi s'eteint je dois réappuyer sur "off" pour fermer le relais

void off() {
      
       digitalWrite(LedPin_1, LOW);  //led off
       delay(500);                  //500milli
       digitalWrite(LedPin_1, HIGH);  //led on
       delay(500);                    //500milli
       digitalWrite(LedPin_1, LOW);  //led off
       delay(500);                   //50milli
       digitalWrite(LedPin_1, HIGH);  //led on
       delay(500);       //500milli
       digitalWrite(LedPin_1, LOW);
       delay(500);                   //50milli
       digitalWrite(LedPin_1, HIGH);  //led on
       digitalWrite(OrdiPin, HIGH);  //pulse on ordi
       delay(1000);                  //1 sec
       digitalWrite(OrdiPin, LOW);   //pulse off ordi
       
       if (OrdiState == LOW) {
         digitalWrite(RelayPin, LOW);  //Relai off
         digitalWrite(LedPin_1, LOW);  //led off
      }
     }

que dois je faire pour qu'il verifie si l'etat a changer et cesse d'alimenter le relais?
merci!!

slt
à la fin à la place du if fait une boucle vide qui bloque le programme et qui attend que l'ordi est allumé

while (OrdiState == HIGH) { }
void off() {
      
       digitalWrite(LedPin_1, LOW);  //led off
       delay(500);                  //500milli
       digitalWrite(LedPin_1, HIGH);  //led on
       delay(500);                    //500milli
       digitalWrite(LedPin_1, LOW);  //led off
       delay(500);                   //50milli
       digitalWrite(LedPin_1, HIGH);  //led on
       delay(500);       //500milli
       digitalWrite(LedPin_1, LOW);
       delay(500);                   //50milli
       digitalWrite(LedPin_1, HIGH);  //led on
       digitalWrite(OrdiPin, HIGH);  //pulse on ordi
       delay(1000);                  //1 sec
       digitalWrite(OrdiPin, LOW);   //pulse off ordi
       
       while (OrdiState == HIGH) { } //boucle tant que l'ordi est allumé  
       digitalWrite(RelayPin, LOW);  //Relai off
       digitalWrite(LedPin_1, LOW);  //led off
      
     }

fifi82:
à la fin à la place du if fait une boucle vide qui bloque le programme et qui attend que l'ordi est allumé

while (OrdiState == HIGH) { }

Bonjour,

Ca supposerait que Ordistate soit mis à jour en interruption. Vu la question de notre ami, ça m'étonnerait que ce soit le cas.

Il faudrait qu'il nous en dise un peu plus sur la détection de l'arrêt de l'ordinateur.

le detection se fait par un 5v qui vien de l'ordinateur, le 5v est toujours present lorsque l'ordi est allumer et devient 0v lorsque qu'il est eteint je me sert de se repere. Vu que le temps d'arret de l'ordi peut etre tres different d'une fois a l'autre

donc il faut faire

while (digitalRead(entree_ordinateur));

avec entree_ordinateur: le numéro de l’entrée ou est relié le 5V