const int LDR_PIN = 2; // Broche analogique à laquelle le LDR est connecté
const float RL10 = 50; // Résistance de 10 lux (en kOhm)
const float GAMMA = 0.7; // Facteur de gamma utilisé pour le calcul de la luminosité
const int LED1 = 21; // Broche de la première LED du bar graph
const int LED2 = 19; // Broche de la deuxième LED du bar graph
const int LED3 = 18; // Broche de la troisième LED du bar graph
const int LED4 = 5; // Broche de la quatrième LED du bar graph
void setup() {
Serial.begin(9600); // Initialiser la communication série à 9600 bps
pinMode(LDR_PIN, INPUT); // Configurer la broche LDR_PIN comme une entrée
pinMode(LED1, OUTPUT); // Configurer la broche LED1 comme une sortie
pinMode(LED2, OUTPUT); // Configurer la broche LED2 comme une sortie
pinMode(LED3, OUTPUT); // Configurer la broche LED3 comme une sortie
pinMode(LED4, OUTPUT); // Configurer la broche LED4 comme une sortie
}
void loop() {
// Lire la valeur analogique de la broche LDR_PIN
int analogValue = analogRead(LDR_PIN);
// Convertir la valeur analogique en tension
float voltage = analogValue / 1024.0 * 5.0;
float resistance;
if (voltage > 0.0 && voltage < 5.0) {
// Calculer la résistance du LDR en utilisant la loi d'Ohm
resistance = 2000.0 * voltage / (1.0 - voltage / 5.0);
} else {
// Gérer le cas où la tension est en dehors de la plage attendue
resistance = 1000000.0; // Fixer la résistance à une grande valeur
}
// Calculer la luminosité en lux en utilisant la formule appropriée
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1.0 / GAMMA));
// Afficher la luminosité calculée dans le moniteur série
Serial.print("Luminosity: ");
Serial.println(lux);
// Contrôler les LEDs en fonction de la luminosité mesurée
if (lux < 100) {
// Luminosité faible - activer seulement la première LED
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
Serial.println("Dark");
} else if (lux >= 100 && lux < 500) {
// Luminosité modérée - activer les deux premières LEDs
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
Serial.println("Light");
} else if (lux >= 500 && lux < 3000) {
// Luminosité élevée - activer les trois premières LEDs
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, LOW);
Serial.println("Bright");
} else if (lux >= 3000) {
// Luminosité très élevée - activer toutes les LEDs
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
Serial.println("Very Bright");
} else {
// Cas de lecture invalide
Serial.println("Invalid");
}
delay(1000); // Attendre une seconde avant de reprendre la boucle
}