#define TRIG_PIN D5
#define ECHO_PIN D6
#define LED_ROUGE A0
#define LED_JAUNE A1 // Correspond à la diode orangée du projet
#define LED_VERTE LED_BUILTIN
#define PIN_INTER D9 // Broche pour l'interrupteur de marche arrière
#define PIN_BUZZER D4 // Broche pour le buzzer
long duration;
float distance;
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_ROUGE, OUTPUT);
pinMode(LED_JAUNE, OUTPUT);
pinMode(LED_VERTE, OUTPUT);
pinMode(PIN_INTER, INPUT_PULLUP); // Interrupteur (activé si relié à GND)
pinMode(PIN_BUZZER, OUTPUT);
Serial.begin(9600);
Serial.println("Systeme de stationnement Pret");
}
void loop() {
// Le système n'est fonctionnel que si l'interrupteur est actionné (LOW)
if (digitalRead(PIN_INTER) == LOW) {
// Mesure de la distance
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2; // Distance en cm
// Affichage terminal (Phase 1)
Serial.print("Distance: ");
Serial.print(distance / 100.0); // Affichage en mètres pour le projet
Serial.println(" m");
// Logique de signalisation (Phase 2)
if (distance < 30) {
// Danger : Rouge + Bip continu
digitalWrite(LED_ROUGE, HIGH);
digitalWrite(LED_JAUNE, LOW);
digitalWrite(LED_VERTE, LOW);
tone(PIN_BUZZER, 440);
}
else if (distance <= 120) {
// Attention : Orange + Bips variables
digitalWrite(LED_ROUGE, LOW);
digitalWrite(LED_JAUNE, HIGH);
digitalWrite(LED_VERTE, LOW);
// Calcul de l'intervalle entre bips (linéaire de 1s à 0s)
int intervalle = map((int)distance, 30, 120, 50, 1000);
tone(PIN_BUZZER, 1000);
delay(50); // Durée du bip
noTone(PIN_BUZZER);
delay(intervalle);
}
else {
// Sécurité : Verte (LED_BUILTIN)
digitalWrite(LED_ROUGE, LOW);
digitalWrite(LED_JAUNE, LOW);
digitalWrite(LED_VERTE, HIGH);
noTone(PIN_BUZZER);
}
}
else {
// Système en veille (Interrupteur non actionné)
digitalWrite(LED_ROUGE, LOW);
digitalWrite(LED_JAUNE, LOW);
digitalWrite(LED_VERTE, LOW);
noTone(PIN_BUZZER);
}
delay(50);
}Loading
st-nucleo-l031k6
st-nucleo-l031k6