Étape 4: Multiplexage par répartition de Code
Afin de mettre en œuvre le multiplexage, vous aurez besoin au code d’une certaine manière. C’est en fait pas si compliqué, permet de dire que la ligne est « dominante » sur les colonnes. Cela signifie que le transistor d’une ligne est allumé, tandis que la colonne de cette ligne est parcourait une fois. Après cela, vous déplacez sur la ligne suivante et faire la même chose encore et encore jusqu'à ce qu’elle se répète !Le problème avec une rafraîchissante les LEDs assez rapides pour pas avis est que vous ne pouvez pas avoir un système synchrone. Cela signifie que vous ne pouvez pas les retards qui durent pendant une longue période de temps. Donc si vous avez un délai de 1 seconde, où les lignes et les colonnes sont il affichera que celui-là pour l’ensemble du deuxième.
La meilleure façon d’y arriver est d’utiliser deux fonctions où un appelle l’autre à plusieurs reprises. Car dans ce cas les lignes sont « dominantes » sur les colonnes, nous aurons deux fonctions permet les appeler :
-Display_LED()
-Column_Load()
Voici donc quelques sudo-code :
void Display_LED (char, char b, char c). Répéter selon le nombre de lignes
{
Column_Load(a) ;
digitalWrite (transistor_pin1, HIGH) ;
Delay(1) ;
digitalWrite (transistor_pin1, basse) ;
}
La fonction Display_LED ci-dessus est donc la fonction « dominante » pour les lignes. Encore une fois, vous pouvez utiliser soit des lignes ou des colonnes comme le dominant qu'il n’importe pas vraiment. Appelez d’abord la fonction de colonne pour définir ces transistors on ou off. Ensuite, vous définissez certaines transistor ligne haute. J’ai un court délai afin que le voyant s’allume pour 1ms. Si vous changiez de 1000ms vous pouvez vraiment voir tout un changement. C’est pourquoi vous ne pouvez pas utiliser des retards dans le reste de votre programme. A partir de là, vous éteignez le transistor et répéter le code avec l’évolution d’a à b et passer à la deuxième rangée.
Sub Column_Load(char LEDs)
{
Si (LEDs_on == 0 x 07)
{
digitalWrite (colum1_transistor, haut)
digitalWrite (colum2_transistor, haut)
digitalWrite (colum3_transistor, haut)
}
}
Cette fonction est assez simple, selon la valeur que le paramètre vous a mettre les LEDs comment vous le souhaitez. Si vous utilisez Entr閑 et DDR_, alors il est en fait un code plus simple d’écrire que l’utilisation de digitalWrites. Dans la plupart des cas, j’ai mis le vale comme une valeur hexadécimale donc si je saisie un 0 x 03 qui signifie LED 1 et 3 sont allumer lorsque 2 est hors service.
L’étape suivante est un exemple d’un tableau de LED 3 x 3 en utilisant les fonctions suivantes qui précède. La seule différence est les lignes et colonnes sont inversées.