IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Problématique de syntaxe if else if


Sujet :

Arduino

  1. #1
    Membre à l'essai
    Homme Profil pro
    Dévelopeur Excel
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Dévelopeur Excel

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Points : 20
    Points
    20
    Par défaut Problématique de syntaxe if else if
    Bonjour à tous

    Je développe un petit projet avec plusieurs boutons et je me retrouve coincé par une suite de "if"
    on dirait qu'il ne lit pas le deuxième if

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    // ASI1600
    int portPushButton1 = 1; // bouton 1 (ASI1600)
    int portArduino_1 = 21; // commande Arduino2 Pin 31
    int portLED_Verte_1 = 31; // LED Verts EQ6
    int portLED_Rouge_1 = 41; // LED Rouge EQ6
     
    long etatPushButton1 = HIGH; //Etat bouton 1
     
    //-------------------------------------------
     
    // Focus
    int portPushButton2 = 2; // bouton 1 (Resistance ASI)
    int portArduino_2 = 22; // commande Arduino2 Pin 32
    int portLED_Verte_2 = 32; // LED Verts Resistance ASI
    int portLED_Rouge_2 = 42; // LED Rouge Resistance ASI
     
    long etatPushButton2 = HIGH; //Etat bouton 2
     
    //----------------------------------------------
     
    void setup() {
      // bouton 1
    pinMode (portPushButton1,INPUT_PULLUP);
    pinMode (portLED_Verte_1, OUTPUT);
    pinMode (portLED_Rouge_1, OUTPUT);
    pinMode (portArduino_1, OUTPUT);
     
      // bouton 2
    pinMode (portPushButton2,INPUT_PULLUP);
    pinMode (portLED_Verte_2, OUTPUT);
    pinMode (portLED_Rouge_2, OUTPUT);
    pinMode (portArduino_2, OUTPUT);
    }
     
    void loop() {
      // Bouton 1
     etatPushButton1 = digitalRead(portPushButton1); //Verif Etat bouton 1
    if (etatPushButton1 == LOW)
    {
    digitalWrite(portLED_Verte_1,HIGH); //Alume la LED verte 1
    digitalWrite(portArduino_1,HIGH);   // Alume Le port Arduino 1
    digitalWrite(portLED_Rouge_1,LOW);  //Ettein la LED rouge
     
    }
    else
    {
    digitalWrite(portLED_Verte_1,LOW); //Etteind la LED verte 1
    digitalWrite(portArduino_1,LOW);   // Etteind Le port Arduino 1
    digitalWrite(portLED_Rouge_1,HIGH);  //Allume la LED rouge    // inverse 
    }
     
      // Bouton 2
     etatPushButton2 = digitalRead(portPushButton2); //Verif Etat bouton 2
    if (etatPushButton1 == LOW)
    {
    digitalWrite(portLED_Verte_2,HIGH); //Alume la LED verte 2
    digitalWrite(portArduino_2,HIGH);   // Alume Le port Arduino 2
    digitalWrite(portLED_Rouge_2,LOW);  //Ettein la LED rouge
    }
     
    else
    {
    digitalWrite(portLED_Verte_2,LOW); //Etteind la LED verte 2
    digitalWrite(portArduino_2,LOW);   // Etteind Le port Arduino 2
    digitalWrite(portLED_Rouge_2,HIGH);  //Allume la LED rouge    // inverse 
      }
    }
    Cordialement Eric

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    Bonsoir,

    Pourquoi as-tu déclaré etatPushButton1 et etatPushButton2 en tant que long ? Un int est largement suffisant.

    Code Arduino : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     etatPushButton2 = digitalRead(portPushButton2); //Verif Etat bouton 2
    if (etatPushButton1 == LOW)
    Regarde bien ces deux lignes, tu ne remarques rien d'anormal ? Un copier-coller raté ?

  3. #3
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Et comme l’état n’est pas vraiment utilisé vous pouvez virer la variable globale et juste écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (digitalRead(portPushButton2) == LOW) {
      ...
    } else {
      ...
    }
    Ça sera plus simple :-)

    Sinon un seul octet (char, int8_t) serait même suffisant pour l’état (bien que la fonction soit déclarée comme retournant un int, elle retourne soit HIGH, soit LOW qui tiennent sur 1 octet.)

Discussions similaires

  1. [Batch] Syntaxe if else shell
    Par lozeba dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 10/09/2014, 16h21
  2. Problème syntaxe If .. Else
    Par NeverKevin dans le forum Excel
    Réponses: 2
    Dernier message: 02/02/2014, 17h59
  3. [CR XI] Problème de syntaxe IF-ELSE || IF-ELSEIF-ELSE
    Par ygyongy dans le forum Formules
    Réponses: 3
    Dernier message: 23/07/2013, 17h30
  4. syntaxe ereur else if
    Par strepoetlo dans le forum Général Python
    Réponses: 13
    Dernier message: 09/01/2010, 19h03
  5. syntaxe If Else
    Par lolove94 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 31/03/2008, 19h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo