Multiplexeur pour 2 LED RGB

Bonjour,
Je pensais poster dans le forum LED & multiplexing mais c'est le seul qui ne laisse pas poster :frowning:

J'ai un petit projet dans lequel j'ai un moteur DC et un détecteur de distance ultrasons HC-SR04...

Pour le moment, le moteur et le détecteur fonctionnement très bien.

Le détecteur Ultrason est connecté aux pins D6 et D7 pour les datas.
Le moteur (a travers un shields L293D) est lui connecté sur les PINS D3 D4 et D5 (moteur contrôlé en vitesse en en sens de rotation par PWM.

J'aimerais bien maintenant rajouter 2 LED RGB (cathode ou anode commune, ça dépendra du composant choisi) contrôlées individuellement en PWM également, le problème c'est qu'il n'y a plus assez de PINS PWM disponible (j'en ai besoin de 6 pour les 2 LED). Il y a bien des circuits pour PWM genre le TLC5940 qui permet 16 sorties PWM, ce qui me parait un peu excessif...

Existe-t-il une autre solution ou un multiplexeur LED PWM n'ayant que 6 ou 8 sorties (voire même un mini shield tout fait) pour juste alimenter mes 2 LED ?????

Tu peux utiliser des leds couleur comme les WS2812 : une seule pin digitale pour toutes tes leds (en cascade)

Pourquoi pas, elles sont aussi lumineuses que les LED RGB transparent de 10MM de diamètre ???

Ces leds sont des strips ?????? j'en ai besoin de 2 mais pas cote a cote, elles doivent être espacées de +/- 5-6 cm pour être de part et d'autre du moteur ==> LED1--(MOT)--LED2, le moteur étant monté de manière a voir son axe de rotation à la verticale.

Ça existe aussi avec une forme de led "classique" APA106

apa106.png

apa106.png

Il n'y a plus assez de PINS PWM disponibles

Il s'agit de pin PWM matérielles n'est-ce pas? Parce que logiciellement toutes les broches peuvent être utilisées pour faire du PWM. Mais cela complique un peu le programme. Les leds programmable sembles plus simples car la bibliothèque est déjà faite, mais c'est surtout au niveau cablâge que l'on y gagne.

Ce que je vais dire n'est pas du plus simple et je n'ai pas la solution logicielle à fournir mais allons s'y quand même.

Je pense à la bibliothèque Servo qui permet si je me souviens bien de connecter jusqu'à 12 servos sur n'importe quelle E/S en utilisant le timer 1.

Une commande de servo n'est rien d'autres que de la PWM de fréquence 50 Hz et une gamme de rapport cyclique réduite.
Période 20 ms (50Hz)
Temps de "1" : 1,5 ms à 2,5ms soit rapport cyclique de 7,5 % à 12,5 %

Pour ce qui me concerne je ne sais pas si c'est simple à modifier mais il y a peut-être du grain à moudre sur cette voie.

Si je devais écrire ce genre de programme pur 6 leds en PWM, je déterminerai d’abord les caractéristiques voulues. Par exemple un PWM à 100Hz (le plus lent possible, mais pas pénible pour les yeux) avec par exemple 100 niveaux (moins il y a de niveau, moins on surcharge le processeur.

Je mettrais en place un fonction d'interruption via un timer qui serait appelée toutes les 100µs et qui:

  • incrémente le compteur entre 0 et 99.
  • si on passe par 0, on allume tout
  • test si la valeur du compteur est égale à extinction[ i ] (i allant de 0 à 5 pour les 6 leds) et si égalité, éteint la led i

Ce n'est pas extrêmement compliqué, je viens d'écrire une fonction d'interruption qui démarre, qui s'arrête, qui utilise l'horloge de mon choix (entre 6µs et 4s), et qui gère l'impulsion d'un moteur pas à pas. En dessous de 6µs, je n'ai plus le temps de faire les calculs. Ce sera facile d'adapter.