const int trigPin = 9;
const int echoPin = 10;
const int ledGreen = 2;
const int ledOrange = 3;
const int ledRed = 4;
unsigned long lastDetectionTime = 0;
unsigned long detectionInterval = 0;
const unsigned long intervalGreen = 60000;
const unsigned long intervalOrange = 120000;
const unsigned long intervalRed = 180000;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledGreen, OUTPUT);
pinMode(ledOrange, OUTPUT);
pinMode(ledRed, OUTPUT);
Serial.begin(9600);
}
void loop() {
unsigned long currentTime = millis();
long duration, distance;
// Envoi du signal trigger
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Lecture du signal echo
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
if (distance < 20) {
lastDetectionTime = currentTime;
}
detectionInterval = currentTime - lastDetectionTime;
// Gestion des LEDs en fonction de l'intervalle
if (detectionInterval < intervalGreen) {
digitalWrite(ledGreen, HIGH);
digitalWrite(ledOrange, LOW);
digitalWrite(ledRed, LOW);
} else if (detectionInterval < intervalOrange) {
digitalWrite(ledGreen, LOW);
digitalWrite(ledOrange, HIGH);
digitalWrite(ledRed, LOW);
} else {
digitalWrite(ledGreen, LOW);
digitalWrite(ledOrange, LOW);
digitalWrite(ledRed, HIGH);
}
delay(1000);
}