Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Arduino] Piloter 64 leds RGB par sortie numérique

Sujet résolu
Anonyme
    6 février 2013 à 13:23:23

    Hello !

    J'ai pour projet de réaliser une petite table de salon bien geek pour m'occuper ^^ Cette dernière serait découpé en 64 sections avec une led RGB à chaque fois. La première étape serait de pouvoir faire varier la couleur d'une case précise indépendamment des autres. Ensuite je comptes greffer un shield bluetooth sur ma carte et commander tout ça via une appli android.

    Le contexte étant posé vous vous rendez compte que ça n'est finalement qu'une "simple" matrice. La question que je me pose est la suivante : comment piloter 64 leds RGB (soit l'équivalent de 192 leds) en utilisant un minimum de sortie sur ma carte (sachant que j'ai une vielle Duemilanove et même pas une maga) ?

    J'ai d'abord cru avoir trouvé mon bonheur avec le registre de décalage 74HC595, cependant je ne crois pas que celui si soit adapté à mon problème. Si j'ai bien compris son fonctionnement, il faut lui envoyer les 8 états des sorties dans 1 octets qu'il va s'occuper de dispatcher après. Ça ne laisse donc que la possibilité de pouvoir gérer analogiquement les leds en leur envoyant des 0 ou des 1.

    Moi ce que je souhaiterais c'est pouvoir faire varier chaque led de 0 à 255...

    Quelqu'un a une idée ?

    -
    Edité par Anonyme 6 février 2013 à 13:25:24

    • Partager sur Facebook
    • Partager sur Twitter
      6 février 2013 à 13:32:34

      Un zéro à eu un problème similaire il y a pas si longtemps (mais n'a jamais répondu sur le post qu'il a crée...)

      Voici la réponse fourni :

      Eskimon a écrit:

      Je répond en vrac à plusieurs questions :

      Pour piloter la patte commune : 8 * 75H595 (décodeur série to parrallèe) coupler à un transistor par sortie évidemment (ou un CI de type "driver LED", ca sera plus facile à embarquer)

      Pour piloter les LED avec un minimum de fil (trois pour tout le monde) : http://www.maximintegrated.com/datasheet/index.mvp/id/4514?ver=F&utm_expid=50713806-2&utm_referrer=http%3A%2F%2Fforums.hackaday.com%2Fviewtopic.php%3Ff%3D4%26t%3D875

      Jamais utilisé mais c'est ce qu'il te faut je pense :D !!

      Avant de t'enflammer avec les 64 LEDs, essaie déjà un truc de principe avec 8 LEDs puis ensuite élargi petit à petit...

      • Partager sur Facebook
      • Partager sur Twitter

      Retrouvez moi sur mon blog et ma chaine Youtube !

      Anonyme
        6 février 2013 à 14:01:16

        Merci ! :)


        J'ai du mal à comprendre le fonctionnement du deuxième composant que tu montre o0 Tu pourrais expliquer plus en détails ?

        J'ai trouvé ce lien sinon : http://francisshanahan.com/index.php/2009/how-to-build-a-8x8x3-led-matrix-with-pwm-using-an-arduino/

        Le mec à l'air de s'en sortir avec juste des 75H595 en utilisant ses sorties pwm

        • Partager sur Facebook
        • Partager sur Twitter
          6 février 2013 à 14:37:49

          Ouai j'ai pas été voir le code du mec mais effectivement il a l'air de gérer correctement sans composant supplémentaire...

          A mon avis tu ferais bien d'aller voir de plus près ce qu'il a fait.

          Pour le composant que je te propose, il n'y a en fait pas besoin de HC595... Le composant gère tout, le PWM sur chaque anode/cathode et chaque led... Un composant peut gérer 8 leds RGB (ou 24 leds unicolor) et tu peux les mettre en cascade. La communication se fait ensuite simplement comme pour les HC595, un fil d'horloge, un fil de donnée, et un fil pour le déclenchement. (mais je ne sais pas combien coute ce superbe composant...)

          EDIT : J'ai trouvé le prix, plus de 20$ dans un boitier galère à souder... donc on oublie ^^

          -
          Edité par Eskimon 6 février 2013 à 14:43:25

          • Partager sur Facebook
          • Partager sur Twitter

          Retrouvez moi sur mon blog et ma chaine Youtube !

            6 février 2013 à 15:38:34

            Le 74HC595 a une entrée "Enable" , tu peux donc éteindre et allumer 8 led en meme temps, en la reliant a un PWM, tu verras l'intensité changer, si par contre tu veux vraiement avoir la possibilté de gérer chaque led séparement, le MAX parait idéal.

            /!\ A l'ampèrage de ton instalation, 10mA * 192 = 2A si tout les leds sont allumées !

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              6 février 2013 à 16:42:02

              Merci pour ces infos !

              Ppour l'intensité, j'y avait pensé, j'ai récupéré une vielle alim de pc (12V/16A ça sera suffisant ^^) que j'utiliserais en alim externe avec des transistors

              -
              Edité par Anonyme 6 février 2013 à 16:44:22

              • Partager sur Facebook
              • Partager sur Twitter
                6 février 2013 à 17:16:07

                Mais apparement si tu fais comme dans le lien que tu as envoyé plus tôt tu ne devrais pas avoir de souci d'alimentation, car au final une seule LED est allumé à la fois mais de manière très rapide (d'après ce que le mec raconte, j'ai pas été voir son code donc au final je suis sur de rien)
                • Partager sur Facebook
                • Partager sur Twitter

                Retrouvez moi sur mon blog et ma chaine Youtube !

                Anonyme
                  6 février 2013 à 23:11:56

                  Petite précision pour les drivers Maxim, sachant qu'il y a aussi le MAX6960-MAX6963 ( http://datasheets.maximintegrated.com/en/ds/MAX6960-MAX6963.pdf ), ces composants coûtent un peu cher car ils permettent d'une part de gérer sans composants supplémentaires une matrice de led, de déléguer toute la gestion de la PWM, du blink des leds de manière autonome. En somme ils remplacent une grosse partie de ton code arduino et de transistors et registres à décalages.

                  Après la question est : dédie-tu entièrement ton µC à ta fonction ? Si oui dans ce cas faire la gestion de manière discrète ne pose pas trop de problèmes. Maintenant si tu as pas mal de choses à gérer en plus et que tu es un peu limité au niveaux des I/Os, utiliser un bus SPI (4 fils) pour controler 8 MAX6960 avec controle d'intensité des leds RGB et le blinking, bah ca commence à devenir intéressant.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    7 février 2013 à 9:58:41

                    Ouai mais c'est vraiment hors de prix la :/

                    Ca n'est donc pas possible de pouvoir gérer l'intensité de chaque led (0-255), indépendamment des autres sur la matrices et sans composant trop cher ?

                    Parce que bon la pin enable du 74HC595 elle me permettrait peut être de faire varier mais ça serait pour tout les leds qui sont branchés sur le composant non ?

                    A moins qu'on lui envoi à elle aussi un octet ?

                    Edit : C'est bon je crois que j'ai trouvé mon bonheur ! :)

                    http://www.zem.fr/comprendre-le-composant-tcl5940-multiplexeur-pwn/

                    -
                    Edité par Anonyme 7 février 2013 à 21:11:42

                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 février 2013 à 13:44:40

                      As tu essayé le multiplexage ? En gros tu code ta valeur sur (0-255) 8 bits et ensuite les autres sorties te permette de spécifier pour quelle led est cette valeur. A chaque fois tu change la valeur et tu changes aussi la led destination. Pour comprendre ce que je veux dire jette un oeil ici http://www.sonelec-musique.com/electronique_bases_affichage_multiplexage.html.  pour comprendre le principe.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 mai 2013 à 11:49:05

                        j'ai découvert les TLC5940... je confirme c'est l’élément dont tu as besoin..

                        • Partager sur Facebook
                        • Partager sur Twitter

                        [Arduino] Piloter 64 leds RGB par sortie numérique

                        × 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