Bonjour,
je suis étudiant et je viens à la recherche d'un peu d'aide.
Je réalise actuellement un bout de programme me permettant d'incrémenter mon afficheur led du chiffre 0 à 9.
J'ai créé un switch case avec case 0, case 1, case 2, case 3, case 4...
Me permettant d'insérer les chiffres de 0 à 9 dans chacun des case.
Par la suite j'ai ajouté les void me permettant de mettre en bon fonctionnement le composant Max7219.
Ainsi j'ai créé ensuite ma boucle me permettant d'incrémenter de case en case les chiffre par chaque appui sur le bouton poussoir.
Merci d'avance!
Melvin
#define button A0
int Max7219_pinCLK = 10; // Clk sur broche numéro 10
int Max7219_pinCS = 9; // CS sur la broche numéro 9
int Max7219_pinDIN = 8; // DIN sur la broche numéro 8
void setup()
{
pinMode(button, INPUT);
pinMode(Max7219_pinCLK,OUTPUT);
pinMode(Max7219_pinCS,OUTPUT);
pinMode(Max7219_pinDIN,OUTPUT);
delay(50); // 50 milli secondes pour l'initailisation.
Init_MAX7219();
}
void Affichage_matricielle(int nb_personne)
{
switch (nb_personne) {
case 0: // affiche la valeur 0
Write_Max7219(1,B00111100);
Write_Max7219(2,B01000010);
Write_Max7219(3,B01000010);
Write_Max7219(4,B01000010);
Write_Max7219(5,B01000010);
Write_Max7219(6,B01000010);
Write_Max7219(7,B01000010);
Write_Max7219(8,B00111100);
break;
case 1: // affiche la valeur 1
Write_Max7219(1,B00001000);
Write_Max7219(2,B00011000);
Write_Max7219(3,B00101000);
Write_Max7219(4,B01001000);
Write_Max7219(5,B00001000);
Write_Max7219(6,B00001000);
Write_Max7219(7,B00001000);
Write_Max7219(8,B00001000);
break;
case 2: // affiche la valeur 2
Write_Max7219(1,B01111110);
Write_Max7219(2,B00000010);
Write_Max7219(3,B00000010);
Write_Max7219(4,B01111110);
Write_Max7219(5,B01000000);
Write_Max7219(6,B01000000);
Write_Max7219(7,B01000000);
Write_Max7219(8,B01111110);
break;
case 3: // affiche la valeur 3
Write_Max7219(1,B01111110);
Write_Max7219(2,B00000010);
Write_Max7219(3,B00000010);
Write_Max7219(4,B01111110);
Write_Max7219(5,B00000010);
Write_Max7219(6,B00000010);
Write_Max7219(7,B00000010);
Write_Max7219(8,B01111110);
break;
case 4: // affiche la valeur 4
Write_Max7219(1,B00001000);
Write_Max7219(2,B00011000);
Write_Max7219(3,B00101000);
Write_Max7219(4,B01001000);
Write_Max7219(5,B11111110);
Write_Max7219(6,B00001000);
Write_Max7219(7,B00001000);
Write_Max7219(8,B00001000);
break;
case 5: // affiche la valeur 5
Write_Max7219(1,B01111110);
Write_Max7219(2,B01000000);
Write_Max7219(3,B01000000);
Write_Max7219(4,B01111110);
Write_Max7219(5,B00000010);
Write_Max7219(6,B00000010);
Write_Max7219(7,B00000010);
Write_Max7219(8,B01111110);
break;
case 6: // affiche la valeur 6
Write_Max7219(1,B01111110);
Write_Max7219(2,B01000000);
Write_Max7219(3,B01000000);
Write_Max7219(4,B01111110);
Write_Max7219(5,B01000010);
Write_Max7219(6,B01000010);
Write_Max7219(7,B01000010);
Write_Max7219(8,B01111110);
break;
case 7: // affiche la valeur 7
Write_Max7219(1,B01111110);
Write_Max7219(2,B01000010);
Write_Max7219(3,B00000100);
Write_Max7219(4,B00001000);
Write_Max7219(5,B00001000);
Write_Max7219(6,B00001000);
Write_Max7219(7,B00001000);
Write_Max7219(8,B00001000);
break;
case 8: // affiche la valeur 8
Write_Max7219(1,B01111110);
Write_Max7219(2,B01000010);
Write_Max7219(3,B01000010);
Write_Max7219(4,B01111110);
Write_Max7219(5,B01000010);
Write_Max7219(6,B01000010);
Write_Max7219(7,B01000010);
Write_Max7219(8,B01111110);
break;
case 9: // affiche la valeur 9
Write_Max7219(1,B01111110);
Write_Max7219(2,B01000010);
Write_Max7219(3,B01000010);
Write_Max7219(4,B01111110);
Write_Max7219(5,B00000010);
Write_Max7219(6,B00000010);
Write_Max7219(7,B00000010);
Write_Max7219(8,B01111110);
break;
}
}
void Write_Max7219_byte(unsigned char DATA)
{
unsigned char i;
digitalWrite(Max7219_pinCS,LOW);
for(i=8;i>=1;i--)
{
digitalWrite(Max7219_pinCLK,LOW);
digitalWrite(Max7219_pinDIN,DATA&0x80);// Extracting a bit data
DATA = DATA<<1;
digitalWrite(Max7219_pinCLK,HIGH);
}
}
void Write_Max7219(unsigned char address,unsigned char dat)
{
digitalWrite(Max7219_pinCS,LOW);
Write_Max7219_byte(address); //address,code of LED
Write_Max7219_byte(dat); //data,figure on LED
digitalWrite(Max7219_pinCS,HIGH);
}
//Initialisation du module Max 7219
void Init_MAX7219(void)
{
Write_Max7219(0x09, 0x00); //decoding :BCD
Write_Max7219(0x0a, 0x03); //brightness
Write_Max7219(0x0b, 0x07); //scanlimit;8 LEDs
Write_Max7219(0x0c, 0x01); //power-down mode:0,normal mode:1
Write_Max7219(0x0f, 0x00); //test display:1;EOT,display:0
}
void loop(){
int nb_personne;
if (digitalRead(button) == HIGH)
{
nb_personne++;
Affichage_matricielle(nb_personne);
}
}