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 :

Simple commande ON/OFF


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    fonction public
    Inscrit en
    Décembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : fonction public
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2017
    Messages : 6
    Par défaut Simple commande ON/OFF
    Bonjour,

    Je suis très novice en programmation et je voudrai via le moniteur serie arduino envoyer une donnée qui allumerai une led/relais et à l’envoi de cette même donnée une deuxième fois l'éteindrai. Après moult.....echecs je suis resté sur un truc simple mais qui ne correspond pas à se que je voudrai faire par la suite.

    Pourriez vous m'aider s'il vous plait ?


    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
    char donnee;                                                  //char donnee est la variable ou l'on stock les donnees recu par la console
    int led = 3;                                                  // configure led pour broche 3
    int led1 = 4;                                                 //......
     
    void setup()
    {
      pinMode(led,OUTPUT);                                        // configure broche 3 en sortie
      pinMode(led1,OUTPUT);                                       // configure broche 4 en sortie
      digitalWrite(led, HIGH);                                    //definie etat led
      digitalWrite(led1, HIGH);                                   //.....
      Serial.begin(9600);                                         //configure vitesse debit
      while(!Serial){                                             //rien ne se fait tant que la liaisons n'est pas etablie                     
      }
    }
     
    void loop()
    {
      if (Serial.available()>0) {                               //on attend des donnees sur liaison
              donnee=Serial.read();                             //on lit les donnees recu dans la variable
              Serial.println(donnee);
              if (donnee=='a') {                                 //si la donnee est a on eteint la led
                Serial.println("allumer cuisine");
                digitalWrite(led, LOW);
              }
              if (donnee=='e') {                               //si la donnee est e on allume la ledm
                Serial.println("eteindre cuisine");
                digitalWrite(led,HIGH);
                }        
              if (donnee=='b') {                                 //si la donnee est b on eteint la led
                Serial.println("allumer couloir");
                digitalWrite(led1,LOW);
              }
              if (donnee=='c') {                                 //si la donnee est c on eteint la led
                Serial.println("eteindre couloir");
                digitalWrite(led1,HIGH);
              }                                             
      }
     }

    Merci d'avance .

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    crée un booléen pour mémoriser l'état de la sortie (même si je pense que l'on peut utiliser ce booléen à la place de LOW et HIGH, à vérifier dans la doc).

    Code c : 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
    bool etat;
    int led = 13;
    char donnee;
     
    void setup()
    {
      Serial.begin(9600);
     
      pinMode(led,OUTPUT); 
      digitalWrite(led, LOW);
      etat = false;
    }
     
     
    void loop()
    {
      if (Serial.available() > 0) 
      { 
        donnee=Serial.read(); //on lit les donnees recu dans la variable
        Serial.println(donnee);
        if (donnee == 'a') 
        {
            etat?digitalWrite(led, LOW):digitalWrite(led, HIGH);
            etat = !etat;
            delay(1000);
        }
      }
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    fonction public
    Inscrit en
    Décembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : fonction public
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2017
    Messages : 6
    Par défaut
    Re-bonsoir

    Merci beaucoup pour la rapidité de la réponse
    Je crois avoir saisi la programmation , j'ai quand même noté sur le programme ce que je crois avoir compris
    pourriez vous confirmer s'il vous plait ?

    Encore merci

    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
     
    bool etat;           //variable boolean "etat"
    int led = 2;
    char donnee;
     
    void setup()
    {
      Serial.begin(9600);
     
      pinMode(led,OUTPUT); 
      digitalWrite(led, LOW);
      etat = false;       //definit l'etat de la variable 
    }
     
     
    void loop()
    {
      if (Serial.available() > 0) 
      { 
        donnee=Serial.read(); 
        Serial.println(donnee);
        if (donnee == 'a') 
        {
            etat?digitalWrite(led, LOW):digitalWrite(led, HIGH);  //interroge l'etat de led : true ou false
            etat = !etat;      //inverse l'etat de la variable "etat"
            delay(1000);
        }
      }
    }

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    c'est ça. Pour compléter :
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    etat?digitalWrite(led, LOW):digitalWrite(led, HIGH);
    est l'équivalent de
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (etat)
    {
      digitalWrite(led, LOW);
    }
    else
    {
      digitalWrite(led, HIGH);
    }

    j'ai ajouté un délai après qui peut être supprimé.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    fonction public
    Inscrit en
    Décembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : fonction public
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2017
    Messages : 6
    Par défaut
    Super !! avec le délais cela fais plus sympa ^^

    Merci encore de la rapidité

  6. #6
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Le délai est là pour éviter de voir la LED clignoter trop rapidement si tu envoies des "a" en rafale
    Par contre, si à la place d'une LED tu as un relais, il vaut mieux laisser le délai car une succession rapide de on/off peut l'abîmer.

Discussions similaires

  1. Lancer une simple commande http via script php
    Par Machine Head dans le forum Langage
    Réponses: 2
    Dernier message: 31/01/2013, 10h00
  2. Cherche commande UNIX bien plus simple
    Par nenekes dans le forum Linux
    Réponses: 10
    Dernier message: 11/09/2006, 15h19
  3. [FLASH MX] Commande de log off
    Par Adren dans le forum Flash
    Réponses: 4
    Dernier message: 25/07/2006, 08h25
  4. Réponses: 4
    Dernier message: 08/03/2006, 11h43

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