// Pins des segments de l'afficheur 7 segments
const int segments[] = {PA_0, PA_1, PA_2, PA_3, PA_4, PA_5, PA_6, PA_7};

// Pins des digits de l'afficheur 7 segments
const int digits[] = {PB_0, PB_1, PB_2, PB_3};

// Tableau des chiffres de 0 à 9 à afficher sur l'afficheur 7 segments
const byte numbers[10][8] = {
  {1,1,1,1,1,1,0,0}, // 0
  {0,1,1,0,0,0,0,0}, // 1
  {1,1,0,1,1,0,1,0}, // 2
  {1,1,1,1,0,0,1,0}, // 3
  {0,1,1,0,0,1,1,0}, // 4
  {1,0,1,1,0,1,1,0}, // 5
  {1,0,1,1,1,1,1,0}, // 6
  {1,1,1,0,0,0,0,0}, // 7
  {1,1,1,1,1,1,1,0}, // 8
  {1,1,1,1,0,1,1,0}  // 9
};

void setup() {
  // Initialisation des pins
  for (int i = 0; i < 8; i++) {
    pinMode(segments[i], OUTPUT);
  }
  for (int i = 0; i < 4; i++) {
    pinMode(digits[i], OUTPUT);
  }
}

void loop() {
  // Afficher les chiffres de 0 à 9 en boucle
  for (int num = 0; num < 10; num++) {
    afficherChiffre(num);
    delay(1000); // Attendre 1 seconde
  }
}

// Fonction pour afficher un chiffre sur l'afficheur 7 segments
void afficherChiffre(int num) {
  // Activer les segments correspondants au chiffre à afficher
  for (int i = 0; i < 8; i++) {
    digitalWrite(segments[i], numbers[num][i]);
  }
  // Activer le digit correspondant pour afficher le chiffre
  for (int i = 0; i < 4; i++) {
    digitalWrite(digits[i], HIGH);
  }
  digitalWrite(digits[num], LOW); // Activer le digit correspondant au chiffre
}