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 :

Comment activer une sortie et un TONE dans une instruction If Else ?


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2016
    Messages : 2
    Par défaut Comment activer une sortie et un TONE dans une instruction If Else ?
    Bonjour à tous ,
    Dans le programme ci-dessous , je souhaite activer la sortie LED lorsque le Buzzer émet un le son et donc éteindre lorsque le Buzzer ne fonctionne pas.
    Si j'insère le digitalWrite HIGH ou LOW sous les intructions noTone(buzzer) ou tone(buzzer, 1500) j'ai l'erreur suivante:

    'else' without a previous 'if'
    Comment corriger cette erreur ?


    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
    const int buzzer = 10; //buzzer  pin 9
    const int capteur = 2;//capteur infrarouge pin 2
    const int LED = 13;//led sur le BOARD
    unsigned long temps;
    unsigned long tempsecoule;
    void setup(){
     
      pinMode(buzzer, OUTPUT); // Pin 10 sortie
      pinMode(capteur, INPUT);// Pin 2 entrée
      pinMode(LED, OUTPUT);//Pin 13 sortie
    }
     
    void loop(){
     if (digitalRead(capteur) ==0)
      tempsecoule = millis();
          if (millis() - tempsecoule >= 50)
          noTone(buzzer);
       // Send 1KHz sound signal...
      else {
          tone(buzzer, 1500);
      } 
    }

    Merci d'avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 906
    Par défaut
    le C++ a une grammaire qu'il faut respecter

    un if s'écrit comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (condition) statement_si_vrai
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (condition) statement_si_vrai
    else statement_si_faux
    un statement c'est une seule "instruction".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (x == 3) Serial.println("X vaut 3"); 
    else  Serial.println("X ne vaut pas 3");
    si vous voulez plusieurs instructions alors il faut créer ce que l'on appelle un compound statement avec des accolades

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (x == 3) {
      Serial.println("X vaut 3"); 
      Serial.println("et je fais autre chose dans la cas où c'est 3); 
    } else  {
      Serial.println("X ne vaut pas 3"); 
      Serial.println("et je fais autre chose dans la cas où ce n'est pas 3); 
    }
    Dans votre code si vous n'avez pas d'accolades et vous écrivez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // code faux
    if (x == 3) 
      Serial.println("X vaut 3"); 
      Serial.println("et je fais autre chose dans la cas où c'est 3); 
     
    else  {
      Serial.println("X ne vaut pas 3"); 
      Serial.println("et je fais autre chose dans la cas où ce n'est pas 3); 
    }
    le compilateur comprend cela comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // code faux
    if (x == 3) Serial.println("X vaut 3");  // seul ce println est dans le if
     
    // ceci sera toujours exécuté
    Serial.println("et je fais autre chose dans la cas où c'est 3); 
     
    // et ce else n'est pas rattaché au if et donc ça bug
    else  {
      Serial.println("X ne vaut pas 3"); 
      Serial.println("et je fais autre chose dans la cas où ce n'est pas 3); 
    }

    ça vous aide ?

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2016
    Messages : 2
    Par défaut
    C'est bien plus clair pour moi.
    Je vais tester...
    Merci et bonne journée .

Discussions similaires

  1. Comment activer une image pour voir un film ?
    Par Lougue dans le forum IHM
    Réponses: 11
    Dernier message: 28/09/2015, 11h31
  2. Réponses: 0
    Dernier message: 03/12/2013, 09h06
  3. Comment activer une image dans l'interface
    Par homam dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 17/04/2008, 15h02
  4. Réponses: 7
    Dernier message: 12/12/2007, 18h52
  5. Réponses: 2
    Dernier message: 22/09/2007, 19h38

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