Partage
  • Partager sur Facebook
  • Partager sur Twitter

Casse-tête avec LED :(

    11 novembre 2017 à 21:22:17

    Bonjour, :)
    Je suis face à un casse-tête insolvable. J'ai 1 LED et 1 bouton poussoir. 
    Quand j'allume mon Arduino, je veux que ma LED clignote, puis la rendre fixe après avoir pressé un bouton poussoir.
    1) Pas d'appui sur le bouton poussoir: la led clignote à interval régulier.

    2) J'appui sur le bouton poussoir et le relâche: la led ne clignote plus et reste à l'état haut en continu.
    Je ne sais pas comment résolver ce problème... Rien y fait. La fonction millis() tourne en boucle sans interruption et delay ne semble pas être la solution... 
    Comment faire ?
    Si quelqu'un pouvait m'aider........
    • Partager sur Facebook
    • Partager sur Twitter
      11 novembre 2017 à 21:29:18

      Bonjour, avec le code sa sera plus simple de répondre... (utiliser les balises </> pour le code)
      • Partager sur Facebook
      • Partager sur Twitter
        11 novembre 2017 à 21:35:20

        Merci Need pour ta réponse mais je n'ai pas vraiment de programme, car j'en suis au tout début. Je ne peux seulement que te proposer ceci:

        int led = 2;
        int bouton = 3;
         
        void setup() {
         
        pinMode(2, OUTPUT);
        pinMode(3, INPUT);
         
        }
         
        void loop() {
         
        }
        

        J'avais aussi ça, mais le "ledBlinInterval = 0", qui correspond à un intervalle nul, fige effectivement ma led à l'état haut mais me fait baisser sa luminosité. Et si, par la suite, je veux ajouter d'autres led qui doivent à leur tour clignoter quand cette dernière se fige, rien ne se passe. J'ai réalisé un programme barbare en somme...

        //Led clignotante n°1
        int ledPin = 2; 
        int ledValue = LOW;
        long ledStartTime = 0;          
        long ledBlinkInterval = 250;  
        int buttonPin = 3;             
        int buttonValue = HIGH;
        long buttonPressTime = 0; 
        int etat = HIGH;     
        
        void setup()
        {
         pinMode(ledPin, OUTPUT); 
         pinMode(ledPin1, OUTPUT); 
        
         digitalWrite(ledPin1, LOW);
            
        }
        
        void loop()
        
        
        
        //Led clignotante n°1
        {
         buttonValue = digitalRead(buttonPin);
        
         
         // Bouton non pressé
         if (buttonValue==HIGH && buttonPressTime!=0) {
           ledBlinkInterval = millis() - buttonPressTime;  
           buttonPressTime = 0;                           
         }
         
         // Je presse et relâche le bouton
         if (buttonValue==LOW) {
           ledBlinkInterval = 0;
         }
        
        
         if (millis() - ledStartTime > ledBlinkInterval) {
           ledStartTime = millis(); 
        
           if (ledValue == LOW)
             ledValue = HIGH;
           else
             ledValue = LOW;
        
           digitalWrite(ledPin, ledValue);
         }
        
        }

        -
        Edité par MatthieuWill 11 novembre 2017 à 21:55:34

        • Partager sur Facebook
        • Partager sur Twitter
          11 novembre 2017 à 22:22:45

          Bonsoir,

          Le premier programme ne fait aucune action.

          Second programme. Quand ledBlinkInterval  vaut 0, la led n'est pas du tout figée, elle clignote très vite c'est pour cela que la luminosité baisse. Si l'on ne veut pas voir de clignotement il suffit de ne pas exécuter la partie du programme qui la fait clignoter et non changer la période. 

          • Partager sur Facebook
          • Partager sur Twitter

          Casse-tête avec LED :(

          × 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