Pour contrôler l’intensité traversant chacune des leds RGB, et ainsi, varier sa couleur, une méthode bien connue est la modulation de la largeur des impulsions - PWM - Pulse Width Modulation.
À chaque cycle, on compare le nombre de cycle enregistré dans la variable "Cycle" à la constante "CycleMax" dépendant à l'échantillonnage désiré. Pour 4 bits, nous aurons CycleMax = 2^n - 1 = 2^4 - 1 = 15. Si "Cycle" est supérieur ou égal, on le réinitialise à 0. Puis on applique, à la sortie "Out", le résultat de la comparaison entre "Value" et "Cycle". Enfin, on incrémente notre compteur "Cycle". En modifiant la valeur d’entrée "Value" (0 → 15), alors nous modifions le rapport cyclique RCY en conséquence.
Plus nous utilisons de bits pour coder une valeur, plus le besoin en nombre de cycles grandit (2^n - 1) où n est le nombre de bits. Ce qui augmente considérablement le traitement du circuit programmable si l’on code une valeur sur 8 bits (255), 12 bits (4095) ou 16 bits (65535). Heureusement, beaucoup de ces circuits simplifient les traitements par accélération matérielle (électronique dédiée). Mais ces systèmes permettent de contrôler seulement un nombre limité de sorties.
|
La Modulation Binaire est une autre approche, bien meilleure lorsqu'il s'agit de contrôler un grand nombre de sorties avec un échantillonnage élevé.