Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Arduino] 74HC595 - LEDs allumées constamment

Sujet résolu
    10 janvier 2015 à 19:03:49

    Bonjour, j'ai cherché sur le forum mais je n'ai trouvé que l'inverse de mon problème, donc je me tourne vers vous :)

    J'utilise le 74HC595 et je veux allumer une LED précise (la 3ème dans ce cas là). Quand je lance mon programme, la 3ème LED s'allume mais toutes celles d'après (la 4ème, la 5ème, la 6ème, etc) aussi...  Et je ne sais pas du tout pourquoi...

    Mon code :

    //Broche connectée au ST_CP du 74HC595
    const int verrou = 11;
    //Broche connectée au SH_CP du 74HC595
    const int horloge = 12;
    //Broche connectée au DS du 74HC595
    const int data = 10;
    
    void setup() {
      //set pins to output so you can control the shift register
      pinMode(verrou, OUTPUT);
      pinMode(horloge, OUTPUT);
      pinMode(data, OUTPUT);
      Serial.begin(9600);
    }
    
    void loop() {
      //On active le verrou le temps de transférer les données
      digitalWrite(verrou, HIGH);
      //On allume la 3ème LED : 4 (dec) = 00000100 (bin)
      shiftOut(data, horloge, MSBFIRST, 4);
      //et enfin on relache le verrou
      digitalWrite(verrou, LOW);
    }

    J'espère que vous pourrez m'aider :)

    Merci

    -
    Edité par Matmdr 10 janvier 2015 à 23:48:48

    • Partager sur Facebook
    • Partager sur Twitter
      10 janvier 2015 à 22:18:08

      Salut,

      Je n'ai jamais utilisé ce composant et je ne l'ai pas sous la main maisque ce passe t-il si tu inverses les états de verrou dans la loop?

      void loop() {
        //On active le verrou le temps de transférer les données
        digitalWrite(verrou, LOW);
        //On allume la 3ème LED : 4 (dec) = 00000100 (bin)
        shiftOut(data, horloge, MSBFIRST, 4);
        //et enfin on relache le verrou
        digitalWrite(verrou, HIGH);
      }

      Par contre ça n'explique pas forcément pourquoi les autres sont allumées. 

      -
      Edité par herter 10 janvier 2015 à 22:36:52

      • Partager sur Facebook
      • Partager sur Twitter
        10 janvier 2015 à 23:48:02

        Salut herter,

        Quand j'inverse, au lieu d'éclairer bien la LED visée, ça l'éclaire faiblement et les autres sont encore éclairées ^^'

        -
        Edité par Matmdr 10 janvier 2015 à 23:48:20

        • Partager sur Facebook
        • Partager sur Twitter
          11 janvier 2015 à 1:01:24

          La fonction loop est exécutée en boucle.

          Du coup, juste après avoir fait ton digitalWrite(verrou, HIGH);, la fonction loop recommence avec un digitalWrite(verrou, LOW);

          A mon avis, le 74HC595 n'aime peut-être pas trop cette micro impulsion HIGH.

          Un petit delay ne ferait pas de mal (delay que tu pourras ensuite supprimer si tu rajoutes des lignes de code).

          Au final, ton code devrait donc être :

          void loop() {
          
            // On active le verrou le temps de transférer les données
            digitalWrite(verrou, LOW);
          
            // On allume la 3ème LED : 4 (dec) = 00000100 (bin)
            shiftOut(data, horloge, MSBFIRST, 4);
          
            // On relache le verrou
            digitalWrite(verrou, HIGH);
          
            // On attend 10ms, afin de ne pas réactiver le verrou juste après
            delay(10);
          
          }



          • Partager sur Facebook
          • Partager sur Twitter
            11 janvier 2015 à 9:04:08

            Oui effectivement, sinon essaie de mettre ce bout de code dans le setup...
            • Partager sur Facebook
            • Partager sur Twitter
              11 janvier 2015 à 14:39:28

              Lorrio, quand je rejoute ce delay(10);, mes LEDs clignotent assez bizarrement, surtout la LED cible qui s'éteint carrément par moment... J'ai essayé avec un delayMicroseconds(10);, mais le problème de départ persiste.

              Herter, je ne peux pas me permettre de mettre ce bout de code dans le setup car dans mon cas, l'utilisateur va pouvoir choisir la LED a éclairer donc le dernier paramètre de la fonction shiftOut() devra pouvoir évoluer.

              -
              Edité par Matmdr 11 janvier 2015 à 14:44:32

              • Partager sur Facebook
              • Partager sur Twitter
                11 janvier 2015 à 15:07:36

                Oui je suis d'accord mais c'est surtout pour verifier si ton pb n'est pas au niveau de ton électronique.
                • Partager sur Facebook
                • Partager sur Twitter
                  11 janvier 2015 à 16:08:05

                  Pourrais tu nous faire un petit schéma de ton câblage ? (ou éventuellement une photo si celle-ci est bien lisible).
                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 janvier 2015 à 18:56:34

                    Schéma
                    Voilà le schéma que j'ai récupéré depuis le site d'Arduino un peu modifié... Juste, petite précision, les résistances que j'utilise ne sont pas de 220 Ω mais de 1.5 .

                    -
                    Edité par Matmdr 14 janvier 2015 à 18:59:49

                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 janvier 2015 à 20:18:31

                      1.5k ? C'est un peu fort comme valeur, tes LED ne s'allumeront pas énormément.

                      Cependant, cela n'explique pas le clignotement ou le fait que les autres soient allumées.

                      Vérifies bien tes branchements, une erreur est vite arrivée.

                      Si tu as un autre 74HC, tu peux aussi essayer de le changer (on ne sait jamais).

                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 janvier 2015 à 22:21:22

                        Alors là... Après avoir posté mon précédent message j'ai éteint mon PC et quand je suis revenu, aucun problème, aucun clignotement, aucune LED allumée sauf la LED cible sans que je n'ai absolument rien touché..
                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 janvier 2015 à 18:33:42

                          D'accord ^^ Merci pour votre aide :)
                          • Partager sur Facebook
                          • Partager sur Twitter

                          [Arduino] 74HC595 - LEDs allumées constamment

                          × 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