// Déclaration des broches pour le 3-Digit 7 Segment
const int segments[7] = {2, 3, 4, 5, 6, 7, 8}; // Broches pour les segments A-G
const int digits[3] = {9, 10, 11}; // Broches pour les 3 digits
// Tableau pour chaque chiffre de 0 à 9 (segments A-G)
const byte numbers[10] = {
0b11111100, // 0
0b01100000, // 1
0b11011010, // 2
0b11110010, // 3
0b01100110, // 4
0b10110110, // 5
0b10111110, // 6
0b11100000, // 7
0b11111110, // 8
0b11110110 // 9
};
// Variables
int sensorPin = A1; // Capteur de lumière sur la broche A1
int sensorValue = 0; // Valeur lue (0-1023)
int percentage = 0; // Valeur calculée (0-100)
// Fonction pour afficher un chiffre sur un digit spécifique
void displayNumber(int digit, int number) {
// Activer le digit
for (int i = 0; i < 3; i++) {
digitalWrite(digits[i], HIGH); // Désactiver les digits
}
digitalWrite(digits[digit], LOW); // Activer le digit spécifié
// Afficher le chiffre sur les segments
for (int i = 0; i < 7; i++) {
digitalWrite(segments[i], bitRead(numbers[number], 7 - i)); // Allumer les segments
}
}
// Fonction de configuration initiale
void setup() {
// Configurer les broches de segments comme sortie
for (int i = 0; i < 7; i++) {
pinMode(segments[i], OUTPUT);
digitalWrite(segments[i], LOW);
}
// Configurer les broches des digits comme sortie
for (int i = 0; i < 3; i++) {
pinMode(digits[i], OUTPUT);
digitalWrite(digits[i], HIGH); // Désactiver les digits
}
// Initialisation du port série (facultatif)
Serial.begin(9600);
}
// Boucle principale
void loop() {
// Lire la valeur du capteur (entre 0 et 1023)
sensorValue = analogRead(sensorPin);
// Convertir la valeur en pourcentage (0 à 100)
percentage = map(sensorValue, 0, 1023, 0, 100);
// Afficher le pourcentage sur les 3 digits
int hundreds = percentage / 100;
int tens = (percentage / 10) % 10;
int ones = percentage % 10;
// Afficher les chiffres avec multiplexage
displayNumber(0, hundreds); // Centaines
delay(5);
displayNumber(1, tens); // Dizaines
delay(5);
displayNumber(2, ones); // Unités
delay(5);
// Afficher la valeur sur le moniteur série (facultatif)
Serial.print("Luminosité: ");
Serial.print(sensorValue);
Serial.print(" / 1023, Pourcentage: ");
Serial.println(percentage);
}