Partage
  • Partager sur Facebook
  • Partager sur Twitter

Help code clignotement LED ARDUINO

Sujet résolu
    25 octobre 2018 à 19:39:37

    Bonjour tout le monde,

    Je reviens vers vous de nouveau pour une question concernant le contrôle du clignotement d'une LED. Je souhaiterai contrôler une LED avec un bouton poussoir:

    - Dès la mise sous tension de l'Arduino, une LED reliée dessus s'allume/s'éteint toutes les 500ms.

    - La LED arrête de clignoter lorsque j'appuie sur un bouton poussoir ET reste fixe (dans ce dernier état) lorsque je le relâche.

    Bien entendu, sans utiliser la fonction delay...

    Ça fait des semaines que je planche dessus et aucun code ne convient... Si quelqu'un pourrait vraiment m'aider....

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      26 octobre 2018 à 11:22:07

      Salut, 

      Tu peux poster ton code et le schéma que tu as fait ?

      • Partager sur Facebook
      • Partager sur Twitter
        26 octobre 2018 à 21:46:16

        Bonsoir et merci pour la réponse. Voici mon dernier code en date:

        #include <Wire.h>

        #include "Adafruit_MCP23017.h"

        Adafruit_MCP23017 mcp;


        const byte bouton=2;

        bool blinking = false;
        unsigned long blinkInterval = 250;
        unsigned long currentMillis;
        unsigned long previousMillis;

        void setup() {

        mcp.begin();
        pinMode(bouton, INPUT_PULLUP);
        mcp.pinMode(0, OUTPUT);
        }


        void loop() {

        if (blinking) {
        currentMillis = millis();
        if ((unsigned long)(currentMillis - previousMillis) >= blinkInterval) {
        mcp.digitalWrite(0, !mcp.digitalRead(0));
        previousMillis = currentMillis;
        }
        } else {
        mcp.digitalWrite(0, HIGH);
        }
        int reading = digitalRead(bouton);
        delay(50);

        if (reading==HIGH)
        blinking=true;
        else
        blinking=false;
        }

        La LED clignote et DEVIENT FIXE quand j'appuie sur le BP. Ce que je souhaite c'est qu'elle reste continuellement fixe une fois avoir appuyé et relâché le BP...

        -
        Edité par MatthieuWilhelm 26 octobre 2018 à 22:11:26

        • Partager sur Facebook
        • Partager sur Twitter
          27 octobre 2018 à 11:09:22

          Tu devrais relire tes messages une fois que tu les as postés.

          En l'état, ton code est illisible.

          Sinon, pourquoi n'as-tu pas droit d'utiliser la fonction delay?

          -
          Edité par zoup 27 octobre 2018 à 11:10:18

          • Partager sur Facebook
          • Partager sur Twitter
            27 octobre 2018 à 14:59:34

            J'ai relu et modifié 4x mon post et à chaque fois il me met le code de cette façon...

            La fonction delay() n'est pas appropriée car il passe à l'état haut uniquement quand la LED est allumé. Si j'appuie sur le bouton au moment où elle est en DOWN il prends pas mon appui en compte.

            #include <Wire.h>
            #include "Adafruit_MCP23017.h"
            
            Adafruit_MCP23017 mcp;
            
            const byte bouton=2;
            
            bool blinking = false; 
            unsigned long blinkInterval = 250; 
            unsigned long currentMillis; 
            unsigned long previousMillis;
            
            void setup() {
             
             mcp.begin();
             pinMode(bouton, INPUT_PULLUP);
             mcp.pinMode(0, OUTPUT);
            }
             
            void loop() {
            
             if (blinking) {
              currentMillis = millis(); 
              if ((unsigned long)(currentMillis - previousMillis) >= blinkInterval) {
               mcp.digitalWrite(0, !mcp.digitalRead(0)); 
               previousMillis = currentMillis; 
              }
             } else {
              mcp.digitalWrite(0, HIGH);
               
             }
             int reading = digitalRead(bouton);
             delay(50); 
             
             if (reading==HIGH) 
              blinking=true; 
             else
              blinking=false; 
            }

            C'est cette partie là à modifier car c'est elle qui visualise mon appui. Je n'arrive pas à ajouter un code qui me permet de mémoriser mon état en false ou en true indéfiniment...

             if (reading==HIGH) 
              blinking=true; 
             else
              blinking=false; 
            }

            -
            Edité par MatthieuWilhelm 27 octobre 2018 à 15:17:50

            • Partager sur Facebook
            • Partager sur Twitter
              27 octobre 2018 à 15:30:16

              Essaie avec

               if (reading==LOW)
                blinking=false;

              et pas de "else"

              -
              Edité par zoup 27 octobre 2018 à 15:31:43

              • Partager sur Facebook
              • Partager sur Twitter
                27 octobre 2018 à 15:37:24

                J'ai essayé et essayé d'autres combinaisons possible à ce niveau et y a rien de probant. La LED reste fixe, avant même d'avoir pressé le bouton... Merci pour ta réponse.
                • Partager sur Facebook
                • Partager sur Twitter
                  27 octobre 2018 à 15:38:22

                  et dans le setup, avec bool blinking = true;  ??? ca devrait clignoter au début.

                  -
                  Edité par zoup 27 octobre 2018 à 15:38:40

                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 octobre 2018 à 15:54:49

                    Excellent, ça fonctionne ! Merci beaucoup !!!!!
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 octobre 2018 à 16:54:20

                      Tant mieux. Mets le sujet en "résolu" du coup.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Help code clignotement LED ARDUINO

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown