Tempo allumage led sans delay sur Arduino
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Tempo allumage led sans delay sur Arduino



  1. #1
    Marc06lab

    Tempo allumage led sans delay sur Arduino


    ------

    Bonjour,

    Je suis en train de programmer un Atmel328 et j'ai un problème avec les 2 " digitalWrite " dans mon Else.

    La tempo est réglée sur 2 secondes , si " TensionSecteurUpState " ne dépasse pas 2 secondes tout va bien.

    Sauf que si " TensionSecteurUpState " reste à l'etat Low plus de secondes, les 2 digitalWrite " SwitchTelecUp " et " LedUp " dans mon else resteront à l'état haut durant toute cette durée.

    Je cherche uns solution pour que ces 2 sorties ne restent jamais à l'état haut plus de 2 secondes.

    Merci pour votre aide.
    Cordialement

    Voici le code pour mieux vous expliquer mon problème :

    Code:
    void loop()
    {           // Lire la presence de 230v montée (TensionSecteurUp) :
    TensionSecteurUpState = digitalRead(TensionSecteurUp);
              // Si il y a 230v montée (TensionSecteurUp), Si TensionSecteurUpState est low :
              if (TensionSecteurUpState == LOW)
           {
              // Alors on active la temporisation
              tempoActive = 1;
              tempoDepart = millis();
           }
                                  // Si la temporisation est active,
                                  if ( tempoActive )
                                {
                                           // Et si il s'est écoulé 2 secondes,
                                           if ( ( millis() - tempoDepart ) >= 2000 )
                                       {
                                           // Telecommande et led off : 
                                           digitalWrite(SwitchTelecUp, LOW);
                                           digitalWrite(LedUp, LOW);
                                           digitalWrite(SwitchTelecStop, HIGH);
                                           digitalWrite(LedStop, HIGH);
                                           delay (2000);
                                           digitalWrite(LedStop, LOW);
                                           digitalWrite(SwitchTelecStop, LOW);
                                           // Et on désactive la temporisation pour ne pas afficher ce message une seconde fois
                                           tempoActive = 0;
                                       }
                                                                 // Sinon
                                                                 else {
                                                                 // Telecommande et led on :                                                           
                                                                 digitalWrite(SwitchTelecUp, HIGH);
                                                                 digitalWrite(LedUp, HIGH);
                                                              }
                                }

    -----
    Dernière modification par JPL ; 13/02/2022 à 18h12. Motif: ajout de la balise Code (#) pour garder l’indentation

  2. #2
    umfred

    Re : Tempo allumage led sans delay sur Arduino

    Si je comprends bien, tu veux que tes leds ne s'allument qu'une seule fois 2s quand TensionSecteurUpState passe à LOW. Dans ce cas, rajoute un booléen dans ton test pour enregistrer le fait que tu sois passé dans cette étape
    Code:
    void loop()
    {
            // Lire la presence de 230v montée (TensionSecteurUp) :
           TensionSecteurUpState = digitalRead(TensionSecteurUp);
           if (TensionSecteurUpState == HIGH) detection=false;
           // Si il y a 230v montée (TensionSecteurUp), Si TensionSecteurUpState est low :
           if (TensionSecteurUpState == LOW && detection==false)
           {
                    // Alors on active la temporisation
                   detection=true;
                   tempoActive = 1;
                   tempoDepart = millis();
           }
           // Si la temporisation est active,
           if ( tempoActive )
           {
                     // Et si il s'est écoulé 2 secondes,
                     if ( ( millis() - tempoDepart ) >= 2000 )
                     {
                             // Telecommande et led off : 
                             digitalWrite(SwitchTelecUp, LOW);
                             digitalWrite(LedUp, LOW);
                             digitalWrite(SwitchTelecStop, HIGH);
                             digitalWrite(LedStop, HIGH);
                             delay (2000);
                             digitalWrite(LedStop, LOW);
                             digitalWrite(SwitchTelecStop, LOW);
                             // Et on désactive la temporisation pour ne pas afficher ce message une seconde fois
                             tempoActive = 0;
                     }
                     // Sinon
                     else {
                             // Telecommande et led on :                                                           
                             digitalWrite(SwitchTelecUp, HIGH);
                             digitalWrite(LedUp, HIGH);
                             detection=true;
                     }
           }
    }

  3. #3
    Janpolanton

    Re : Tempo allumage led sans delay sur Arduino

    Bonjour,
    En dehors de toute programmation, ce qui m'interpelle c'est la façon dont tu récupères la tension secteur.
    Un petit schéma serait le bienvenu...

  4. #4
    Marc06lab

    Re : Tempo allumage led sans delay sur Arduino

    Merci pour vos réponses, effectivement je vais me pencher sur un booléen.
    En ce qui concerne l'info de présence secteur, j'utilise un pc817, d'un coté relié au secteur et de l'autre à un +5v connecté à l'entrée du processeur.

  5. A voir en vidéo sur Futura

Discussions similaires

  1. [Programmation] delay d'un programme arduino
    Par yacineylk dans le forum Électronique
    Réponses: 5
    Dernier message: 18/06/2016, 23h07
  2. [Programmation] diminue le delay dans un programme arduino
    Par yacineylk dans le forum Électronique
    Réponses: 2
    Dernier message: 24/03/2016, 17h06
  3. Réponses: 4
    Dernier message: 20/11/2014, 20h12
  4. Tempo à la place d'un inter simple allumage.
    Par Georges974 dans le forum Bricolage et décoration
    Réponses: 2
    Dernier message: 12/09/2010, 15h25
  5. ne555 monostable sans tempo
    Par invitefd3f71bf dans le forum Électronique
    Réponses: 7
    Dernier message: 22/02/2010, 15h50