Go Down

Topic: Fonction pour afficheur 3 X 7 segments 3 parts (Read 905 times) previous topic - next topic

julienrat

Jan 19, 2010, 11:13 pm Last Edit: Jan 19, 2010, 11:23 pm by julienrat Reason: 1
Bonjour,
après moultes recherches je n'ai pas trouvé comment faire tourner un afficheur 7 segments, donc je m'y suis mis !
ci joint le fruit de mon boulot inspiré du tuto "blink without delay"

Code: [Select]
/*
Affichage sur afficheur 7 segments 3 afficheurs à cathode commune

*/


 int ledState = 0;  // commande afficheur 1
 int ledState2 = 0;  // commande afficheur 2
 int ledState3 = 0;  // commande afficheur 3
 long previousMillis = 0;
 int nombre; // nombre issu du chiffre decomposé

int x=0;



void setup()   {                
 // initialisation des sorties (j'utilise un arduino mega)
 pinMode(31, OUTPUT);     // patte afficheur 1
 pinMode(33, OUTPUT);     // c
 pinMode(35, OUTPUT);     // patte afficheur 2
 pinMode(37, OUTPUT);     // dp
 pinMode(39, OUTPUT);     // patte afficheur 3
 pinMode(41, OUTPUT);     // d
 pinMode(43, OUTPUT);     // g
 pinMode(45, OUTPUT);     // b
 pinMode(47, OUTPUT);     // a
 pinMode(49, OUTPUT);     // f
 pinMode(51, OUTPUT);     // e
 
}

void loop()                    
{
affiche(123); // affiche 123
}


void affiche (int chiffre){
 
 long resultat;

 int c; // c comme centaines
 int d; // d comme dizaine
 int u; // u comme ....

 int interval = 1; // Vitesse de multiplexage
 
 
 //Décomposition du chiffre en nombres
 
  resultat = chiffre/100;
  c=resultat;
  resultat = (chiffre-(c*100))/10;
  d = resultat;
  u = (chiffre-(c*100)) - (d*10);
 
 // début de l'affichage (inspiré de BLINK WITHOUT DELAY)  
    // Partie Multiplexage
 if (millis() - previousMillis > interval) {
    previousMillis = millis();  
 
   x=x+1;
    if (x == 1){
      ledState3 = 255;  
      ledState2 = 0;  
      ledState = 0;    
   nombre=u;  
    }
    if (x == 2){
      ledState = 255;  
      ledState2 = 0;  
      ledState3 = 0;  
    nombre=d;  
    }
    if (x == 3){
      ledState2 = 255;  
      ledState3 = 0;  
      ledState = 0;  
   nombre=c;  
    }
     if (x == 4){
       x=0;
     }
   
 // partie affichage
   
 
   

 
if (nombre == 0) {
 digitalWrite(33, LOW);
 digitalWrite(37, HIGH);
 digitalWrite(41, LOW);
 digitalWrite(43, HIGH);
 digitalWrite(45, LOW);
 digitalWrite(47, LOW);
 digitalWrite(49, LOW);
 digitalWrite(51, LOW);

}
if (nombre == 1) {
 digitalWrite(33, LOW);
 digitalWrite(37, HIGH);
 digitalWrite(41, HIGH);
 digitalWrite(43, HIGH);
 digitalWrite(45, LOW);
 digitalWrite(47, HIGH);
 digitalWrite(49, HIGH);
 digitalWrite(51, HIGH);

}
if (nombre == 2) {
 digitalWrite(33, HIGH);
 digitalWrite(37, HIGH);
 digitalWrite(41, LOW);
 digitalWrite(43, LOW);
 digitalWrite(45, LOW);
 digitalWrite(47, LOW);
 digitalWrite(49, HIGH);
 digitalWrite(51, LOW);

}
if (nombre == 3) {
 digitalWrite(33, LOW);
 digitalWrite(37, HIGH);
 digitalWrite(41, LOW);
 digitalWrite(43, LOW);
 digitalWrite(45, LOW);
 digitalWrite(47, LOW);
 digitalWrite(49, HIGH);
 digitalWrite(51, HIGH);

}
if (nombre == 4) {
 digitalWrite(33, LOW);
 digitalWrite(37, HIGH);
 digitalWrite(41, HIGH);
 digitalWrite(43, LOW);
 digitalWrite(45, LOW);
 digitalWrite(47, HIGH);
 digitalWrite(49, LOW);
 digitalWrite(51, HIGH);

}
if (nombre == 5) {
 digitalWrite(33, LOW);
 digitalWrite(37, HIGH);
 digitalWrite(41, LOW);
 digitalWrite(43, LOW);
 digitalWrite(45, HIGH);
 digitalWrite(47, LOW);
 digitalWrite(49, LOW);
 digitalWrite(51, HIGH);

}
if (nombre == 6) {
 digitalWrite(33, LOW);
 digitalWrite(37, HIGH);
 digitalWrite(41, LOW);
 digitalWrite(43, LOW);
 digitalWrite(45, HIGH);
 digitalWrite(47, HIGH);
 digitalWrite(49, LOW);
 digitalWrite(51, LOW);
 
}
if (nombre == 7) {
 digitalWrite(33, LOW);
 digitalWrite(37, HIGH);
 digitalWrite(41, HIGH);
 digitalWrite(43, HIGH);
 digitalWrite(45, LOW);
 digitalWrite(47, LOW);
 digitalWrite(49, HIGH);
 digitalWrite(51, HIGH);
 
}
if (nombre == 8) {
 digitalWrite(33, LOW);
 digitalWrite(37, HIGH);
 digitalWrite(41, LOW);
 digitalWrite(43, LOW);
 digitalWrite(45, LOW);
 digitalWrite(47, LOW);
 digitalWrite(49, LOW);
 digitalWrite(51, LOW);
 digitalWrite(33, LOW);
}
if (nombre == 9) {
 digitalWrite(33, LOW);
 digitalWrite(37, HIGH);
 digitalWrite(41, LOW);
 digitalWrite(43, LOW);
 digitalWrite(45, LOW);
 digitalWrite(47, LOW);
 digitalWrite(49, LOW);
 digitalWrite(51, HIGH);
 digitalWrite(33, LOW);
}
 }
digitalWrite(39, ledState);  
digitalWrite(35, ledState2);
digitalWrite(31, ledState3);
 
}

Go Up