Étape 4: contrôle ?
J’ai voulu faire un algorithme de contrôle suffisamment génériques pour la manipulation des patrons/séquences et également contrôler la luminosité et la couleur de chaque LED.
Pour contrôler les LEDs je dois envoyer à la MCP23016 une trame de 4 octets (1 octet = 8 bits). Un octet avec l’adresse du correspondant à la couleur, 1 octet avec la commande « l’écriture » et 2 octets avec la valeur de la 16bits IC (LEDs). L’IC est relié à la LED comme « puits », signifiant, une valeur logique 0 au pin s’allume la LED.
Et maintenant la partie difficile, comment faire PWM contrôle pour 48 LEDs ?
Nous allons étudier PWM pour une LED ! PWM a expliqué @ Wikipedia.
Si je veux la luminosité de la LED à 50 %, ma valeur PWM est de 50 %. Cela signifie que la del, dans un laps de temps, devrait être sur le même laps de temps comme éteint.
Nous allons prendre une période de 1 seconde. PWM de 50 % signifie que dans cette 1 seconde, le temps sur est de 0,5 secondes et le temps d’arrêt est 0,5 seconde. PWM de 80 % ? 0,2 secondes éteint, 0,8 secondes sur !
Facile, pas vrai ?
Dans le monde numérique : avec une période de 10 cycles d’horloge, 50 %, cela signifie que pour 5 cycles de la LED est sur, et pour un autre 5 cycles de la LED est éteinte. 20 % ? 2 cycles sur, 8 cycles au large. 45 % ? Eh bien, nous ne pouvons vraiment pas 45 %... Étant donné que la période est en cycles et nous avons seulement 10 cycles, nous pouvons seulement diviser le PWM en pas de 10 %.
Cela signifie que l’évolution de la broche doit être, pour 50 %: 1,1,1,1,1,0,0,0,0,0 ; Ou encore 1,0,1,0,1,0,1,0,1,0 ;
Dans la programmation, nous pouvons faire cette séquence d’allumer et éteindre un tableau. Pour chaque cycle que nous sortie sur la broche de la valeur de l’index ont été que la fin du programme.
J’ai fait jusqu'à présent sens ?
Si nous voulons faire LED0 à 50 % et LED1 20 %, nous pouvons ajouter les deux tableaux.
Pour la tige LED0 : 1,1,1,1,1,0,0,0,0,0 ;
Pour la tige LED1 : 2,2,0,0,0,0,0,0,0,0 ;
Ce qui entraîne LED0 + LED0 : 3,3,1,1,1,0,0,0,0,0 ;
Afficher cette séquence de nombres dans l’extenseur port IC, nous obtiendrions la LED0 avec 50 % de luminosité et LED1 avec 20 %!!
Simple pour 2 LEDs, droit ? Maintenant, nous devons faire cela pour 16 LEDs, pour chaque couleur !
Pour chacun de ces tableaux, nous avons une combinaison de luminosité pour chaque couleur (16 LEDs)
Chaque fois que nous voulons une autre combinaison de couleurs, nous devons changer ce tableau.