Salut à tous,
grâce aux conseils de pepe, j'ai pu créer un code qui fonctionne tout à fait bien pour faire défiler les chiffres 0 à 9 (en continu) sur un afficheur 7 segments à anode commune.
voici le code complet :
// output pins for segments
// A B C D E F G
byte segmentPins[7] = { 2, 3, 4, 5, 6, 7, 8 };
byte outputLevels[11][7] {
// A B C D E F G
{ LOW, LOW, LOW, LOW, LOW, LOW, HIGH }, // 0
{ HIGH, LOW, LOW, HIGH, HIGH, HIGH, HIGH }, // 1
{ LOW, LOW, HIGH, LOW, LOW, HIGH, LOW }, // 2
{ LOW, LOW, LOW, LOW, HIGH, HIGH, LOW }, // 3
{ HIGH, LOW, LOW, HIGH, HIGH, LOW, LOW }, // 4
{ LOW, HIGH, LOW, LOW, HIGH, LOW, LOW }, // 5
{ LOW, HIGH, LOW, LOW, LOW, LOW, LOW }, // 6
{ LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH }, // 7
{ LOW, LOW, LOW, LOW, LOW, LOW, LOW }, // 8
{ LOW, LOW, LOW, LOW, HIGH, LOW, LOW }, // 9
{ HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH } // 10 = clear
};
void writeDisplay(byte num) {
byte seg;
for (seg=0; seg<7; seg++)
digitalWrite( segmentPins[seg], outputLevels[num][seg] );
}
void clearDisplay() {
writeDisplay(10);
}
void initDisplay() {
byte seg;
for (seg=0; seg<7; seg++)
pinMode( segmentPins[seg], OUTPUT );
clearDisplay();
}
//variables d'affichage
long number = 0;
//variables du temps
long previoustime = 0;
long currenttime = millis();
//interval de clignotement en millisecondes
const int interval=500;
//fonction d'initialisation de la carte
void setup()
{
initDisplay();
}
//fonction principale qui s'exécute (se répète) à l'infini
void loop()
{
long currenttime = millis();
if(currenttime-previoustime>=interval)
{previoustime=currenttime;
number++;}
if (number>9)
{number=0;}
else
{
writeDisplay(number);}
}
/*Lire l'heure courante
L'heure de départ du délai prend la valeur de l'heure courante
Le chiffre courant prend la valeur 1
Afficher le chiffre courant
Répéter :
· Lire l'heure courante
· Si le temps écoulé depuis le début du délai est supérieure ou égale à la durée du délai, alors :
· · L'heure de départ du délai prend la valeur de l'heure courante
· · Ajouter 1 au chiffre courant
· · Si le chiffre courant est supérieur à 9, alors :
· · · Le chiffre courant prend la valeur 1
· · Afficher le chiffre courant
*/