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...
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)
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
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 !
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
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)
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.
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 !
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.
j'ai découvert les TLC5940... je confirme c'est l’élément dont tu as besoin..
[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.
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !