Problème de priorité des "if"

Bonjour,

Ayant résolu des problèmes de connexions pour le ethernet shield dans un lycée, j'ai maintenant un autres problèmes concernant une succession de "if".
Je veut allumer à distance des LED grâce à un Ethernet Shield. J'ai réussi à le faire avec une LED, donc sur la page j'ai "Allumer LED" et "Éteindre LED" jusque là pas de problème.

Maintenant je voudrais rajouter une deuxième LED, j'ai donc créer deux autres boutons sans problèmes. Le problème est que le premier "if" est prioritaire au deuxième.
Prenons "if 1" pour LED1 et "if 2" pour LED 2

Par exemple :

Si j'appuis sur Allumer LED, donc "if 1", seul la LED 1 va s'allumer, par contre si j'appuis sur Allumer LED 2 donc "if 2" alors qu'elles sont toutes éteintes les deux vont s'allumer. Même problème pour Eteindre.

Alors je pense que la carte lis de haut en bas le programme en boucle, c'est la le problème. Alors comment éviter le problème ?

          if(readString.indexOf("?lighton") >0)
          {
            digitalWrite(6, HIGH);
            digitalWrite(5, HIGH);
            Serial.println("Led On");
          }
          else{
          if(readString.indexOf("?lightoff") >0)
          {
            digitalWrite(6, LOW);
            digitalWrite(5, LOW);
            Serial.println("Led Off");
          }
          }
          if(readString.indexOf("?lighton1") >0)
          {
            digitalWrite(8, HIGH);
            Serial.println("Led On 1");
          }
          else{
            if(readString.indexOf("?lightoff1") >0)
          {
            digitalWrite(8, LOW);
            Serial.println("Led Off 1");
          } 
          }

bonjour,
c'est quoi ces else( et après un if?
soit tu mets des if seulement soit des else if
en plus pourquoi 2 pins pour une seule led?
teste ca

      if(readString.indexOf("?lighton") >0)
          {
            digitalWrite(6, HIGH);
            Serial.println("Led On");
          }

          if(readString.indexOf("?lightoff") >0)
          {
            digitalWrite(6, LOW);
            Serial.println("Led Off");
          }

          if(readString.indexOf("?lighton1") >0)
          {
            digitalWrite(8, HIGH);
            Serial.println("Led On 1");
          }
         
            if(readString.indexOf("?lightoff1") >0)
          {
            digitalWrite(8, LOW);
            Serial.println("Led Off 1");
          }

infobarquee:
bonjour,
c'est quoi ces else( et après un if?
soit tu mets des if seulement soit des else if
en plus pourquoi 2 pins pour une seule led?
teste ca

      if(readString.indexOf("?lighton") >0)

{
            digitalWrite(6, HIGH);
            Serial.println("Led On");
          }

if(readString.indexOf("?lightoff") >0)
          {
            digitalWrite(6, LOW);
            Serial.println("Led Off");
          }

if(readString.indexOf("?lighton1") >0)
          {
            digitalWrite(8, HIGH);
            Serial.println("Led On 1");
          }
         
            if(readString.indexOf("?lightoff1") >0)
          {
            digitalWrite(8, LOW);
            Serial.println("Led Off 1");
          }

Je vais testé, et j'avais oublié de préciser, le lighton et lighton allume les LED sortie 5 et 6 et lighton1, lightoff1 la LED pin 8

Merci

infobarquee:
bonjour,
c'est quoi ces else( et après un if?
soit tu mets des if seulement soit des else if
en plus pourquoi 2 pins pour une seule led?
teste ca

      if(readString.indexOf("?lighton") >0)

{
           digitalWrite(6, HIGH);
           Serial.println("Led On");
         }

if(readString.indexOf("?lightoff") >0)
         {
           digitalWrite(6, LOW);
           Serial.println("Led Off");
         }

if(readString.indexOf("?lighton1") >0)
         {
           digitalWrite(8, HIGH);
           Serial.println("Led On 1");
         }
       
           if(readString.indexOf("?lightoff1") >0)
         {
           digitalWrite(8, LOW);
           Serial.println("Led Off 1");
         }

Après avoir fait des tests, cela ne fonctionne pas.
J'ai utilisé votre proposition de code, mais aucun changement.

J'explique le problème avec des exemples concrets :

  • Quand j'appuie sur le bouton (?lighton) cela allume la LED 6, donc pas de problème.
  • Si je l'éteins avec (?lightoff) pas de problème non plus.
  • Si j'appuie sur le bouton (.lighton1) cela allume la LED 6 et LED 8 en même temps.

Autre exemple :

  • Si les deux LED sont allumés et que je veut éteindre seulement la LED 8 (?lightoff1) alors cela éteins toutes les LED !!!.

Il y a donc un problème.
Merci

Le problème c'est que s'il y a "?ligthon1" deux conditions sont vérifiées :

indexOf("?ligthon1") et indexOf("?ligthon")

B@tto:
Le problème c'est que s'il y a "?ligthon1" deux conditions sont vérifiées :

indexOf("?ligthon1") et indexOf("?ligthon")

Je modifie alors le nom en :

?lighton ---> ?allume
et
?lighton1 ---> ?on1 (je modifie le nom totalement ?)

il suffit qu'une expression ne soit pas incluse dans une autre

B@tto:
il suffit qu'une expression ne soit pas incluse dans une autre

C'est cela fonctionne, merci beaucoup !