Salut à tous
Voilà, je possède un Arduino Uno possédant 6 sorties PWM.
Je souhaiterais piloter au minimum 8 LEDS RGB en PWM, donc jouer sur chacune des tensions de led rouge, verte et bleue.
Comment faire vu que je ne possède que 6 sorties ?
Je pensais utiliser 3 PWM (une pour le rouge, une pour le vert, et une pour le bleu) et les "distribuer" sur chacune des leds (car oui, je veux pouvoir les piloter indépendamment les unes des autres ^^).
J'ai donc penser aux démultiplexeurs.
Par exemple un 3->8, avec donc le fonctionnement suivant:
sel out n°
000 1
001 2
010 3
011 4
100 5
101 6
110 7
111 8
avec out : le numéro de la sortie active en fonction de l'entrée en fonction de "sel" codée un binaire.
Mais ensuite je m'embrouille un peut car je me pose plusieurs questions.
-
Dans le cas ou je ne pilote que 8 leds rgb, aurais-je besoin de 3 demux ? (un par couleur)
-
A quelle fréquence puis-je switcher entre les sortie ? (j'imagine que ça dépend du demux..)
-
Quelle est la fréquence des PWM sur l'arduino et est-elle admissible par le demux ? (la encore ça doit dépendre du modèle)
-
Comment coder tout ça ? J'avais bien cette approche mais je ne suis pas sûr ^^ :
int a0=11, a1=12, a2=13
int red=3, green=5, blue=6
//(void setup qui va bien ^^)
//Premiere LED (en rouge)
digitalWrite(a0, LOW);
digitalWrite(a1, LOW);
digitalWrite(a2, LOW);
analogWrite(red, 255);
analogWrite(green, 0);
analogWrite(blue, 0);
//Seconde LED (en vert)
digitalWrite(a0, HIGH);
digitalWrite(a1, LOW);
digitalWrite(a2, LOW);
analogWrite(red, 0);
analogWrite(green, 255);
analogWrite(blue, 0);
//3ème LED (en blanc)
digitalWrite(a0, LOW);
digitalWrite(a1, HIGH);
digitalWrite(a2, LOW);
analogWrite(red, 255);
analogWrite(green, 255);
analogWrite(blue, 255);
//ETC pour les autres leds
Mais j'ai peur que cette approche soit trop "usine à gaz", de plus j'ignore la vitesse a laquelle les instructions sont exécutés et quel sera le résultat visuellement.
Avez-vous des conseils/remarques ?
Car j'ai vu des personnes qui utilisaient des registres à décalage il me semble mais je n'ai pas trop compris comment...
Merci par avance