#define TRIG_PIN D5
#define ECHO_PIN D4
#define LED_VERTE A7
#define LED_ORANGE A3
#define LED_ROUGE A2
#define INTERRUPTEUR A1
#define BUZZER D6 // New buzzer pin
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_VERTE, OUTPUT);
pinMode(LED_ORANGE, OUTPUT);
pinMode(LED_ROUGE, OUTPUT);
pinMode(INTERRUPTEUR, INPUT_PULLUP);
pinMode(BUZZER, OUTPUT); // Set buzzer as output
digitalWrite(LED_VERTE, LOW);
digitalWrite(LED_ORANGE, LOW);
digitalWrite(LED_ROUGE, LOW);
digitalWrite(BUZZER, LOW);
}
void loop() {
bool etatInterrupteur = digitalRead(INTERRUPTEUR);
if (etatInterrupteur == HIGH) {
Serial.println("🛑 Interrupteur OFF - Système désactivé");
digitalWrite(LED_VERTE, LOW);
digitalWrite(LED_ORANGE, LOW);
digitalWrite(LED_ROUGE, LOW);
digitalWrite(BUZZER, LOW); // Turn off buzzer
delay(500);
return;
}
Serial.println("✅ Interrupteur ON - Système activé");
long duration;
float distance;
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH, 60000);
if (duration == 0) {
Serial.println("⚠️ Pas de signal reçu ! Vérifiez le capteur.");
return;
}
distance = duration * 0.034 / 2;
Serial.print("📏 Distance mesurée : ");
Serial.print(distance);
Serial.println(" cm");
digitalWrite(LED_VERTE, LOW);
digitalWrite(LED_ORANGE, LOW);
digitalWrite(LED_ROUGE, LOW);
digitalWrite(BUZZER, LOW); // Ensure buzzer is OFF initially
if (distance > 120) {
digitalWrite(LED_VERTE, HIGH);
Serial.println("🟢 Tout est clair. Distance sécurisée.");
}
else if (distance >= 30 && distance <= 120) {
digitalWrite(LED_ORANGE, HIGH);
Serial.println("🟠 Attention ! Objet détecté.");
}
else {
Serial.println("🔴 DANGER ! 🚨 Objet trop proche !");
for (int i = 0; i < 3; i++) { // Clignotement 3 fois
digitalWrite(LED_ROUGE, HIGH);
digitalWrite(BUZZER, HIGH); // Turn on buzzer
delay(200);
digitalWrite(LED_ROUGE, LOW);
digitalWrite(BUZZER, LOW); // Turn off buzzer
delay(200);
}
digitalWrite(LED_ROUGE, HIGH); // Keep LED ON after blinking
digitalWrite(BUZZER, HIGH); // Keep buzzer ON
}
delay(500);
}Loading
st-nucleo-l031k6
st-nucleo-l031k6