Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création d'une boucle en cas de panne de courant

Arduino - Création horloge Led

    9 juillet 2018 à 19:00:14

    Bonjour ,

    J'ai pour projet de faire une horloge LED géante avec des bandes LED.

    Seulement je voudrais que cette horloge , en cas de coupure de courant , clignote pour m'indiquer qu'il faut la remettre à l'heure.

    J'ai donc besoin de votre aide , je ne sais pas par quel moyen je peux réaliser cela.

    Auriez-vous des solutions a me proposer ?

    Merci d'avance pour vos réponses,

    • Partager sur Facebook
    • Partager sur Twitter
      9 juillet 2018 à 19:06:32

      Salut,

      Si ton réveil est alimentée depuis le 220V et que tu cherches à détecter une coupure sur le 220V, il suffit de programmer ton microcontroleur pour qu'il démarrage il clignote et qu'il faille le mettre à l'heure.
      Tu utilises un Arduino ?
      • Partager sur Facebook
      • Partager sur Twitter
        9 juillet 2018 à 19:24:16

        J'utilise un Arduino Méga et ce sera la source d'alimentation

        Je mettrais un transformateur 220V-12V pour alimenter l'arduino et celui ci contrôle toutes mes bandes led en 5V

        C'est justement ce que je voudrais faire qu'il puisse clignoter et qu'on doive le mettre à l'heure mais comment on fait ?

        Je ne peut pas le mettre dans le setup il fera l'action qu'une fois ce qui ne donne pas un clignotement

        -
        Edité par damienfournier 9 juillet 2018 à 19:25:14

        • Partager sur Facebook
        • Partager sur Twitter
          9 juillet 2018 à 20:11:04

          En fait à chaque fois qu'il y a une coupure de courant, çà éteint ton Arduino. Dès que le courant reviendra çà allumera de nouveau ton Arduino, et donc relancera le code présent dans le setup.
          • Partager sur Facebook
          • Partager sur Twitter
            9 juillet 2018 à 20:44:42

            j'ai bien compris mais je ne peux pas faire en sorte de faire un clignotement quand je suis dans le setup

            pour ça il faut que je soit dans le loop

            • Partager sur Facebook
            • Partager sur Twitter
              9 juillet 2018 à 22:52:36

              Tu peux toujours créer une condition ou boucle dans ta boucle loop. Mais pour qu'on t'aide il faudrait un peu plus d'infos ...
              • Partager sur Facebook
              • Partager sur Twitter
                10 juillet 2018 à 10:39:10

                Je suis désolé j'ai un peu de mal à m'exprimer alors je vais essayer d'être le plus complet possible

                Voici la photo de mon projet :

                J'ai créé un affichage 7 segments avec des bandes leds toutes connectées aux pins de mon arduino ( pins 22 à 50 voir schéma : toutes les pins sont écrites en bleu )

                Je veux donc que toutes les bandes LED clignotent en cas de coupure de courant par exemple pour que je sache qu'il faut la remettre à l'heure.

                Pour le moment j'ai pas de code réellement ( j'ai juste testé que toutes les led fonctionnent et j'ai essayé de les faire clignoter mais en les mettant dans le loop )

                Je vous met mon code mais je ne pense pas qu'il sera d'une grande utilité ( et il est surement pas optimisé lol )

                Ici je fais clignoter les deux points des secondes et toutes les autres leds restent fixe.

                int LED_22=22;
                int LED_23=23;
                int LED_24=24;
                int LED_25=25;
                int LED_26=26;
                int LED_27=27;
                int LED_28=28;
                int LED_29=29;
                int LED_30=30;
                int LED_31=31;
                int LED_32=32;
                int LED_33=33;
                int LED_34=34;
                int LED_35=35;
                int LED_36=36;
                int LED_37=37;
                int LED_38=38;
                int LED_39=39;
                int LED_40=40;
                int LED_41=41;
                int LED_42=42;
                int LED_43=43;
                int LED_44=44;
                int LED_45=45;
                int LED_46=46;
                int LED_47=47;
                int LED_48=48;
                int LED_49=49;
                int LED_50=50;
                
                
                void setup() {  
                  pinMode(LED_22, OUTPUT);
                  pinMode(LED_23, OUTPUT);
                  pinMode(LED_24, OUTPUT);
                  pinMode(LED_25, OUTPUT);
                  pinMode(LED_26, OUTPUT);
                  pinMode(LED_27, OUTPUT);
                  pinMode(LED_28, OUTPUT);
                  pinMode(LED_29, OUTPUT);
                  pinMode(LED_30, OUTPUT);
                  pinMode(LED_31, OUTPUT);
                  pinMode(LED_32, OUTPUT);
                  pinMode(LED_33, OUTPUT);
                  pinMode(LED_34, OUTPUT);
                  pinMode(LED_35, OUTPUT);
                  pinMode(LED_36, OUTPUT);
                  pinMode(LED_37, OUTPUT);
                  pinMode(LED_38, OUTPUT);
                  pinMode(LED_39, OUTPUT);
                  pinMode(LED_40, OUTPUT);
                  pinMode(LED_41, OUTPUT);
                  pinMode(LED_42, OUTPUT);
                  pinMode(LED_43, OUTPUT);
                  pinMode(LED_44, OUTPUT);
                  pinMode(LED_45, OUTPUT);
                  pinMode(LED_46, OUTPUT);
                  pinMode(LED_47, OUTPUT);
                  pinMode(LED_48, OUTPUT);
                  pinMode(LED_49, OUTPUT);
                  pinMode(LED_50, OUTPUT);
                
                
                //Demande de mise à l'heure
                  digitalWrite(LED_22, HIGH);
                  digitalWrite(LED_23, HIGH);
                  digitalWrite(LED_24, HIGH);
                  digitalWrite(LED_25, HIGH);
                  digitalWrite(LED_26, HIGH);
                  digitalWrite(LED_27, HIGH);
                  digitalWrite(LED_28, HIGH);
                  digitalWrite(LED_29, HIGH);
                  digitalWrite(LED_30, HIGH);
                  digitalWrite(LED_31, HIGH);
                  digitalWrite(LED_32, HIGH);
                  digitalWrite(LED_33, HIGH);
                  digitalWrite(LED_34, HIGH);
                  digitalWrite(LED_35, HIGH);
                  digitalWrite(LED_36, HIGH);
                  digitalWrite(LED_37, HIGH);
                  digitalWrite(LED_38, HIGH);
                  digitalWrite(LED_39, HIGH);
                  digitalWrite(LED_40, HIGH);
                  digitalWrite(LED_41, HIGH);
                  digitalWrite(LED_42, HIGH);
                  digitalWrite(LED_43, HIGH);
                  digitalWrite(LED_44, HIGH);
                  digitalWrite(LED_45, HIGH);
                  digitalWrite(LED_46, HIGH);
                  digitalWrite(LED_47, HIGH);
                  digitalWrite(LED_48, HIGH);
                  digitalWrite(LED_49, HIGH);
                  digitalWrite(LED_50, HIGH);
                
                Serial.begin(9600);
                }
                
                
                void loop() {
                  /*
                   * 
                   * FORMAT : 
                   * AB : CD
                   * 
                   * 
                   * 
                  A =
                  
                  digitalWrite(LED_22, HIGH);
                  digitalWrite(LED_23, HIGH);
                  digitalWrite(LED_24, HIGH);
                  digitalWrite(LED_25, HIGH);
                  digitalWrite(LED_26, HIGH);
                  digitalWrite(LED_27, HIGH);
                  digitalWrite(LED_28, HIGH);
                
                
                  B =
                  digitalWrite(LED_29, HIGH);
                  digitalWrite(LED_30, HIGH);
                  digitalWrite(LED_31, HIGH);
                  digitalWrite(LED_32, HIGH);
                  digitalWrite(LED_33, HIGH);
                  digitalWrite(LED_34, HIGH);
                  digitalWrite(LED_35, HIGH);
                
                
                  
                  digitalWrite(LED_36, HIGH);
                
                
                
                  C =
                  digitalWrite(LED_37, HIGH);
                  digitalWrite(LED_38, HIGH);
                  digitalWrite(LED_39, HIGH);
                  digitalWrite(LED_40, HIGH);
                  digitalWrite(LED_41, HIGH);
                  digitalWrite(LED_42, HIGH);
                  digitalWrite(LED_43, HIGH);
                
                
                
                  D =
                  digitalWrite(LED_44, HIGH);
                  digitalWrite(LED_45, HIGH);
                  digitalWrite(LED_46, HIGH);
                  digitalWrite(LED_47, HIGH);
                  digitalWrite(LED_48, HIGH);
                  digitalWrite(LED_49, HIGH);
                  digitalWrite(LED_50, HIGH);*/
                
                digitalWrite(LED_36, HIGH);
                delay (1000);
                digitalWrite(LED_36, LOW);
                delay (1000);
                
                
                }



                • Partager sur Facebook
                • Partager sur Twitter
                  10 juillet 2018 à 13:11:18

                  C'est déjà un super bon début de projet ;) Pour le réglage de l'heure tu as des boutons ?

                  Je vais essayer de t'écrire un bout de code cet aprem.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 juillet 2018 à 14:11:17

                    Pour le réglage de l'heure je ne vais pas utiliser de boutons mais la liaison série dans un premier temps

                    J'aimerais par la suite coupler mon horloge à un raspberry que je compte utiliser pour faire un jarvis qui aura plein de fonctionnalités dont celle de remettre à l'heure automatiquement mon horloge grâce à des infos envoyées par l'usb 

                    ;-) Je me lance dans un sacré projet mais j'aime ça :-D

                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 juillet 2018 à 14:49:51

                      A ce moment là, je te conseille de déclarer une variable Indicateur_mettre_a_heure = 0
                      Dans ton loop, tu fais un :
                      - Si je recois l'heure par liaison série, alors je mets indicateur_mettre_a_heure à 1.
                      - Si indicateur_mettre_a_heure = 0, alors je fais clignoter mes leds.

                      Tu gères ton changement d'heure par interruption sur un timer ? ou avec une RTC ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 juillet 2018 à 17:21:51

                        Je vois ce que tu veux dire mais j'avoue que je ne suis pas encore assez calé en programmation pour avoir essayé ça

                        je vais utiliser le timer de mon arduino , je n'ai pas prévu de RTC pour le moment

                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 juillet 2018 à 21:05:05

                          Bonjour, je viens de lire en diagonale. 

                          Attention, Arduino ne pourra pas fournir tout le courant pour les rubans de LED.

                          Le timer ne sera pas assez précis pour une horloge.

                          Pour éviter la perte de l'heure si coupure, utilise une RTC avec pile de sauvegarde. Je te conseille la DS3231 plus précise que la DS1307. Elle a un quartz intégré ainsi qu'une compensation de température. La liaison se fait en I2C. Regarde ici.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Le 25 juillet 2016, j'ai essayé une Ford Mustang.
                            10 juillet 2018 à 23:34:46

                            Bonsoir , j'ai déjà réalisé mes tests pour l'alimentation de mes rubans LED

                            En effet ceux-ci devraient être alimentés en 12V pour une intensité lumineuse maximale mais dans mon circuit ils sont en effet alimentés en 5V ( pins de l'arduino)

                            Il s'allument donc avec moins d'intensité mais si je peint le panneau en noir alors ils ressortiront plus ( rubans rouges )

                            Par contre c'est vrai que je devrais utiliser un module RTC mais je n'en ai pas pour le moment , c'est donc pour ça que j'essaie de trouver un moyen de réaliser l'horloge de toute part avec une programmation de l'arduino.

                            C'est pour cela que je vous demande de l'aide pour mon programme .

                            • Partager sur Facebook
                            • Partager sur Twitter
                              11 juillet 2018 à 16:43:03

                              Sans RTC, çà complique un peu .. Tu risques d'avoir une déviation de qqs minutes par heure (bref, tu seras pas l'heure). Mais çà peut valoir le coup d'essayer (pour l'intérêt pédagogique), et de rajouter un RTC (si tu l'achetes sur Aliexpress, Bangood & co, c'est pas cher mais tu l'auras dans 1 mois).

                              En revanche pour alimenter les led avec l'arduino, là c'est vraiment pas bon :/ Ton Arduino peut délivrer une intensité max (de mémoire 20mA - mais à vérifier). Si tu dépasses cette valeur tu vas "tirer" trop de courant sur l'arduino et le cramer :/
                              Il te faudra des relais pour commander les LED, ou au moins un relais et des transistor :/
                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 juillet 2018 à 17:54:37

                                Ok merci pour vos conseils

                                Je met en suspend ce projet pour le moment ;-)

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  12 juillet 2018 à 8:28:52

                                  Peux-tu donner un lien vers le type de ruban de LED?

                                  Je suis aussi de l'avis de ne pas alimenter les LED par Arduino sous peine de destruction.

                                  Avec uneRTC type DS3231 tu seras toujours à l'heure. Je l'ai utilisé plusieurs fois et elle est plus précise que la DS1307.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Le 25 juillet 2016, j'ai essayé une Ford Mustang.

                                  Création d'une boucle en cas de panne de courant

                                  × 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