// Définir les broches pour les segments
const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
// Définir les broches pour les digits
const int digitPins[] = {9, 10, 11, 12};
// Table de segments pour afficher les chiffres de 0 à 9
const byte digitTable[] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111 // 9
};
void setup() {
// Initialiser les broches des segments comme sorties
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
// Initialiser les broches des digits comme sorties
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
}
}
void loop() {
for (int number = 0; number <= 9999; number++) {
displayNumber(number);
delay(1000); // Attendre 1 seconde avant d'incrémenter
}
}
void displayNumber(int number) {
int digits[4];
// Extraire les chiffres individuels
for (int i = 0; i < 4; i++) {
digits[i] = number % 10;
number /= 10;
}
// Afficher chaque chiffre sur l'afficheur
for (int i = 0; i < 4; i++) {
displayDigit(digits[i], i);
}
}
void displayDigit(int digit, int position) {
// Désactiver tous les digits
for (int i = 0; i < 4; i++) {
digitalWrite(digitPins[i], LOW);
}
// Activer le digit actuel
digitalWrite(digitPins[position], HIGH);
// Afficher le chiffre correspondant
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], (digitTable[digit] >> i) & 0x01);
}
delay(5); // Augmenter le délai pour stabiliser l'affichage
}