Étape 5:3 par 3 exemple d’affichage à LED
Vous pouvez voir l’image avec les LED affichées cela a été fait en utilisant le code ci-dessous. Le code est également joint au format .ino. Les LEDs allumées sont définie par le 0 x 02, 0 x 05, 0 x 02. la représentation décimale de ces valeurs hexadécimales est 00000010,00000101,00000010. Vous pouvez voir comment ces valeurs correspondent à l’écran.
Si vous voulez essayer cela pour vous-même le code est disponible ci-dessous et juste copier le circuit de l’étape 3 !
/ * Transistor multiplexage 3 x 3 LEDs
Par : Marty Peltz
Date : 19/07/2013
Objectif : Contrôler 9 LED en forme de 3 x 3 à l’aide de multiplexage.
Utilisé en Instructiable de Martin Peltz
*/
/ *** variables *** /
char col1_cathode = 0 ;
char col2_cathode = 1 ;
char col3_cathode = 2 ;
char row1_anode = 3 ;
char row2_anode = 4 ;
char row3_anode = 5 ;
void setup()
{
Set de Pins aux sorties
pinMode (col1_cathode, sortie) ;
pinMode (col2_cathode, sortie) ;
pinMode (col3_cathode, sortie) ;
pinMode (row1_anode, sortie) ;
pinMode (row2_anode, sortie) ;
pinMode (row3_anode, sortie) ;
désactiver toutes les broches GPIO
digitalWrite (col1_cathode, basse) ;
digitalWrite (col2_cathode, basse) ;
digitalWrite (col3_cathode, basse) ;
digitalWrite (row1_anode, basse) ;
digitalWrite (row2_anode, basse) ;
digitalWrite (row3_anode, basse) ;
}
void loop()
{
display_LED(0x02,0x05,0x02) ;
}
/ *** LED fonction affichage *** /
/ * Fin : appeler cette fonction avec le paramètre hexdécimal vous souhaitez afficher
* Note : Cette fonction contrôle la Cathode, dans mon cas, contrôler les colonnes
*/
void display_LED (char c1, c2 char, char c3)
{
row_anode(C1) ; Appelez row_anode avec la première valeur de gauche
digitalWrite (col1_cathode, HIGH) ; Afficher la première colonne
Delay(1) ; Attendre quelques instants afin que le voyant s’allume pour 1ms
digitalWrite (col1_cathode, basse) ; désactiver la première colonne avant de continuer
row_anode(C2) ; Appelez row_anode avec la deuxième valeur de gauche
digitalWrite (col2_cathode, HIGH) ; La deuxième colonne d’affichage
Delay(1) ; Attendre quelques instants afin que le voyant s’allume pour 1ms
digitalWrite (col2_cathode, basse) ; désactiver la deuxième colonne avant de continuer
row_anode(C3) ; Appelez row_anode avec la deuxième valeur de gauche
digitalWrite (col3_cathode, HIGH) ; La troisième colonne d’affichage
Delay(1) ; Attendre quelques instants afin que le voyant s’allume pour 1ms
digitalWrite (col3_cathode, basse) ; désactiver la troisième colonne avant de continuer
(Remarque essayez de changer les 1ms à 100ms - 1 vous verrez une différence)
}
/ *** Fonction cathode (colonnes) *** /
/ * Fin : prendre la valeur de paramètre et tourner sur les broches
* Note : Due à l’utilisation des Arduinos digitalWrite, vous devez définir les broches,
* Cependant, si vous utilisez DDRx/PORTx vous pouvez juste appliquer une valeur de gauche pour définir les broches sur un port.
*/
Sub row_anode(char LEDs_on)
{
if(LEDs_on == 0x00)
{
digitalWrite (row1_anode, basse) ;
digitalWrite (row2_anode, basse) ;
digitalWrite (row3_anode, basse) ;
}
d’autre if(LEDs_on == 0x01)
{
digitalWrite (row1_anode, HIGH) ;
digitalWrite (row2_anode, basse) ;
digitalWrite (row3_anode, basse) ;
}
d’autre if(LEDs_on == 0x02)
{
digitalWrite (row1_anode, basse) ;
digitalWrite (row2_anode, HIGH) ;
digitalWrite (row3_anode, basse) ;
}
d’autre if(LEDs_on == 0x03)
{
digitalWrite (row1_anode, HIGH) ;
digitalWrite (row2_anode, HIGH) ;
digitalWrite (row3_anode, basse) ;
}
d’autre if(LEDs_on == 0x04)
{
digitalWrite (row1_anode, basse) ;
digitalWrite (row2_anode, basse) ;
digitalWrite (row3_anode, HIGH) ;
}
d’autre if(LEDs_on == 0x05)
{
digitalWrite (row1_anode, HIGH) ;
digitalWrite (row2_anode, basse) ;
digitalWrite (row3_anode, HIGH) ;
}
d’autre if(LEDs_on == 0x06)
{
digitalWrite (row1_anode, basse) ;
digitalWrite (row2_anode, HIGH) ;
digitalWrite (row3_anode, HIGH) ;
}
d’autre if(LEDs_on == 0x07)
{
digitalWrite (row1_anode, HIGH) ;
digitalWrite (row2_anode, HIGH) ;
digitalWrite (row3_anode, HIGH) ;
}
}