Problème de programme, allumage d'une LED

Bonjour à tous,
Donc mon problème c’est que ma ledPin5 doit s’allumer lorsque le serveur externe détecte une sortie de piste (pour une course de voiture) et quand je lance mon programme elle s’allume toute seule.
Je ne comprend pas pourquoi.

Quelqu’un peut m’aider à corriger mon programme?
Pour ceux qui ne comprenne pas le projet dont je vous parle, je l’explique dans mes topic précédent :wink:

#include <SPI.h>
#include <WiFi.h>

char ssid[] = "XXXXXX";
char pass[] = "XXXXX";
int keyIndex = 0;

int bouton=8;
int bouton2=4;
//const int buttonPin = 8;
//const int buttonPin2 = 4;
//int buttonState = 0;
//int buttonState2 = 0;
int ledpin=22;
int ledpin1=23;
int ledpin2=24;
int ledpin3=25;
int ledpin4=26;
int ledpin5=27;

int status = WL_IDLE_STATUS;

WiFiServer serveur(9000);

IPAddress server(192,168,X,XXX);  

WiFiClient client;

void setup() {
   pinMode(bouton, INPUT);
   pinMode(bouton2, INPUT);
   pinMode(ledpin,OUTPUT);
   pinMode(ledpin1,OUTPUT);
   pinMode(ledpin2,OUTPUT);
   pinMode(ledpin3,OUTPUT);
   pinMode(ledpin4,OUTPUT);
   pinMode(ledpin5,OUTPUT);
 
  Serial.begin(9600); 
  while (!Serial) {
    ; 
  }
  

    if (WiFi.status() == WL_NO_SHIELD) {
      Serial.println("WiFi shield not present"); 
  
      while(true);
    } 
  
      while ( status != WL_CONNECTED) { 
        Serial.print("Attempting to connect to SSID: ");
        Serial.println(ssid);
        status = WiFi.begin(ssid, pass);
      } 
  Serial.println("Connected to wifi");
  
  Serial.println("\nStarting connection to server...");
  serveur.begin();

}

void loop() {
   int val=digitalRead(bouton);
   Serial.println("Appuyez sur Start");
     if(val==LOW){
      digitalWrite(ledpin,HIGH);
      digitalWrite(ledpin1,HIGH);
      digitalWrite(ledpin2,HIGH);
      digitalWrite(ledpin3,HIGH);
      digitalWrite(ledpin4,LOW);
      digitalWrite(ledpin5,LOW);
      delay(1000);
      digitalWrite(ledpin,LOW);
      delay(1000);
      digitalWrite(ledpin1, LOW);
      delay(1000);
      digitalWrite(ledpin2,LOW);
      delay(1000);
      digitalWrite(ledpin3, LOW);
      delay(1000);
      digitalWrite(ledpin4, HIGH);
      
      
         if (client.connect(server, 9000)){
          client.println("GET /run HTTP/1.1");
          client.println("Host: 192.168.X.XXX");
          Serial.println("La partie a commencé!");
          client.println();
         }
      }
  int val2=digitalRead(bouton2);

   if(val2==HIGH){
       if (client.connect(server, 9000)){
       client.println("GET /stop HTTP/1.1");
       client.println("Host: 192.168.X.XXX");
       Serial.println("Partie terminée");
       client.println();
       digitalWrite(ledpin,LOW);
       digitalWrite(ledpin1,LOW);
       digitalWrite(ledpin2,LOW);
       digitalWrite(ledpin3,LOW);
       digitalWrite(ledpin4,LOW);
       digitalWrite(ledpin5,LOW);
       }    
   }
  
  WiFiClient sortie = serveur.available();
  if (sortie) {
    Serial.println("Sortie de piste");
    boolean currentLineIsBlank = true;
    while (sortie.connected()) {
      if (sortie.available()) {
        digitalWrite(ledpin5,HIGH);
        char c = sortie.read();
        Serial.write(c);

        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          
           break;
         }
         if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
      // close the connection:
      sortie.stop();
      Serial.println("Voiture remise sur piste");
  }
}

normal,

 WiFiClient sortie = serveur.available();
  if (sortie) {
    Serial.println("Sortie de piste");
    boolean currentLineIsBlank = true;
    while (sortie.connected()) {
      if (sortie.available()) {
        digitalWrite(ledpin5,HIGH);
        char c = sortie.read();
        Serial.write(c);

si tu te connecte au serveur la led s'allume avant de lire quoi que ce soit. et après tu ne l'éteind pas sauf si appuie sur bouton/bouton2

infobarquee: si tu te connecte au serveur la led s'allume avant de lire quoi que ce soit. et après tu ne l'éteind pas sauf si appuie sur bouton/bouton2

Ah oui d'accord je comprend, mais qu'est ce que je peux changer?

arduino62: Ah oui d'accord je comprend, mais qu'est ce que je peux changer?

la question est de savoir ce que tu attend de cette led, non?

infobarquee: la question est de savoir ce que tu attend de cette led, non?

Ce que j'attend c'est que la LED s'allume lorsque qu'il y a une sortie de piste qui apparaîtra du côté serveur mais il faut que celui ci previenne l'arduino de cette sortie pour qu'il puisse allumer la LED

alors pourquoi allumer la led lorsque le nono se connecte au server? et comme déjà indiqué dans ton autre post, tant que tu ne connaitras pas l'instruction sur le serveur qui gère les sorties, tu ne pourras rien faire de plus. ou comme indiqué encore dans l'autre post, modifier le code serveur pour écrire dans un fichier un 1 ou 0 que le nono interrogera par un GET. je t'ai donné un lien déjà pour créer une page en GO, as toi de mettre les mains dedans.

donc je ne vois pas pourquoi avoir créé un autre topic qui traite de la même chose et à laquelle personne ne peut répondre car rares sont ceux qui connaissent le GO.

infobarquee: alors pourquoi allumer la led lorsque le nono se connecte au server? et comme déjà indiqué dans ton autre post, tant que tu ne connaitras pas l'instruction sur le serveur qui gère les sorties, tu ne pourras rien faire de plus. ou comme indiqué encore dans l'autre post, modifier le code serveur pour écrire dans un fichier un 1 ou 0 que le nono interrogera par un GET. je t'ai donné un lien déjà pour créer une page en GO, as toi de mettre les mains dedans.

donc je ne vois pas pourquoi avoir créé un autre topic qui traite de la même chose et à laquelle personne ne peut répondre car rares sont ceux qui connaissent le GO.

Je comprend ce que tu veux dire, mais l'autre stagiaire m'a dit qu'il va m'envoyer l'information sur mon arduino en dur quand il y aura une sortie de piste. Donc ce que je dois faire c'est simplement lire l'information qu'il va m'envoyer et j'aurais juste à allumer la LED.

Mais le problème c'est que je ne sais pas comment faire :(

Entre autre quel est le code pour pouvoir recevoir une requête du serveur qui sera envoyé sur l'arduino, pour que lorsque qu'il lit la requête il puisse agir en allumant la LED?

Pouvez vous m'aider je galère complètement ! :O

Je comprend ce que tu veux dire, mais l'autre stagiaire m'a dit qu'il va m'envoyer l'information sur mon arduino en dur quand il y aura une sortie de piste. Donc ce que je dois faire c'est simplement lire l'information qu'il va m'envoyer et j'aurais juste à allumer la LED.

Mais le problème c'est que je ne sais pas comment faire :(

il va l'envoyer comment? par http? par socket? par usb? par pigeon voyageur?

tu ne donne jamais tous les renseignements, donc on ne peut t'aider correctement.

pourquoi se compliquer la vie comme ca? il créé une fonction qui écrit dans un fichier et le nono fait une requête sur le fichier, basta.

infobarquee: il va l'envoyer comment? par http? par socket? par usb? par pigeon voyageur?

tu ne donne jamais tous les renseignements, donc on ne peut t'aider correctement.

pourquoi se compliquer la vie comme ca? il créé une fonction qui écrit dans un fichier et le nono fait une requête sur le fichier, basta.

Il doit l'envoyer par http normalement, oui je comprend mais je suis un peu paumé avec tout ça désolé si je ne donne pas toute les info en meme temps :/

donc il va falloir que tu fasses un code webserver en plus pour recevoir les infos.

infobarquee:
donc il va falloir que tu fasses un code webserver en plus pour recevoir les infos.

Oui c’est ce que je pensais faire, mais tu ajouterais quoi dans mon programme, car c’est exactemnt ce que 'ai fais et ça ne marche pas, regarde :

#include <SPI.h>
#include <WiFi.h>

char ssid[] = "AP-Adviser";
char pass[] = "BMOVR@62";
int keyIndex = 0;

int bouton=8;
int bouton2=4;
int ledpin=22;
int ledpin1=23;
int ledpin2=24;
int ledpin3=25;
int ledpin4=26;
int ledpin5=27;

int status = WL_IDLE_STATUS;

WiFiServer serveur(9000);

IPAddress server(192,168,5,144);  

WiFiClient client;

void setup() {
   pinMode(bouton, INPUT);
   pinMode(bouton2, INPUT);
   pinMode(ledpin,OUTPUT);
   pinMode(ledpin1,OUTPUT);
   pinMode(ledpin2,OUTPUT);
   pinMode(ledpin3,OUTPUT);
   pinMode(ledpin4,OUTPUT);
   pinMode(ledpin5,OUTPUT);
 
  Serial.begin(9600); 
  while (!Serial) {
    ; 
  }
  

    if (WiFi.status() == WL_NO_SHIELD) {
      Serial.println("WiFi shield not present"); 
  
      while(true);
    } 
  
      while ( status != WL_CONNECTED) { 
        Serial.print("Attempting to connect to SSID: ");
        Serial.println(ssid);
        status = WiFi.begin(ssid, pass);
      } 
  Serial.println("Connected to wifi");
  
  Serial.println("\nStarting connection to server...");
  serveur.begin();

}

void loop() {
   int val=digitalRead(bouton);
   Serial.println("Appuyez sur Start");
     if(val==LOW){
      digitalWrite(ledpin,HIGH);
      digitalWrite(ledpin1,HIGH);
      digitalWrite(ledpin2,HIGH);
      digitalWrite(ledpin3,HIGH);
      digitalWrite(ledpin4,LOW);
      digitalWrite(ledpin5,LOW);
      delay(1000);
      digitalWrite(ledpin,LOW);
      delay(1000);
      digitalWrite(ledpin1, LOW);
      delay(1000);
      digitalWrite(ledpin2,LOW);
      delay(1000);
      digitalWrite(ledpin3, LOW);
      delay(1000);
      digitalWrite(ledpin4, HIGH);
      
      
         if (client.connect(server, 9000)){
          client.println("POST /run HTTP/1.1");
          client.println("Host: 192.168.5.144");
          Serial.println("La partie a commencé!");
          client.println();
         }
      }
  int val2=digitalRead(bouton2);

   if(val2==HIGH){
       if (client.connect(server, 9000)){
       client.println("POST /stop HTTP/1.1");
       client.println("Host: 192.168.5.144");
       Serial.println("Partie terminée");
       client.println();
       digitalWrite(ledpin,LOW);
       digitalWrite(ledpin1,LOW);
       digitalWrite(ledpin2,LOW);
       digitalWrite(ledpin3,LOW);
       digitalWrite(ledpin4,LOW);
       digitalWrite(ledpin5,LOW);
       }    
   }
  
  WiFiClient sortie = serveur.available();
  if (sortie) {
    Serial.println("Sortie de piste");
    //digitalWrite(ledpin5,LOW);
    boolean currentLineIsBlank = true;
    while (sortie.connected()) {
      if (sortie.available()) {
        digitalWrite(ledpin5,LOW);
        char c = sortie.read();
        Serial.write(c);

        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          
           break;
         }
         if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
      sortie.stop();
      Serial.println("Voiture remise sur piste");
  }
}

Et sa allume ma LED automatiquement, c’est là que je suis bloqué :confused:

C'est vraiment urgent, je suis bloqué sur mon problème je n'arrive vraiment pas a le résoudre :(

arduino62: C'est vraiment urgent, je suis bloqué sur mon problème je n'arrive vraiment pas a le résoudre :(

déjà, on passe quand on a le temps et on répond aussi en fonction du temps. donc pour l'urgence, il faut attendre et mettre des cierges.

si tu faisais simplement le sketch serveur pour tester, ca serait mieux non? au lieu de tout mélanger client server serveur, etc....

donc tu reprends le code https://www.arduino.cc/en/Tutorial/WiFiWebServer et tu teste. est ce que le sever envoie la requête sur le 9000?

on ne sait pas ce qu'il envoie non plus comme requête vu que tu ne donnes pas tout les éléments.