Go Down

Topic: Fonction pour afficheur 3 X 7 segments 3 parts (Read 960 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy