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"
/*
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);
}