/*
* This ESP32 code is created by esp32io.com
*
* This ESP32 code is released in the public domain
*
* For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-ultrasonic-sensor-led
*/
#define TRIG_PIN1 5 // ESP32 pin GPIO26 connected to Ultrasonic Sensor's TRIG pin
#define ECHO_PIN1 18 // ESP32 pin GPIO25 connected to Ultrasonic Sensor's ECHO pin
#define TRIG_PIN2 19 // ESP32 pin GPIO26 connected to Ultrasonic Sensor's TRIG pin
#define ECHO_PIN2 21 // ESP32 pin GPIO25 connected to Ultrasonic Sensor's ECHO pin
#define LED_PIN 23 // ESP32 pin GPIO17 connected to LED's pin
#define LED2_PIN 22 // ESP32 pin GPIO16 connected to the second LED's pin
int placesDisponibles = 20; // centimeters
// variables will change:
void setup() {
Serial.begin(115200); // Commence la communication série
pinMode(TRIG_PIN1, OUTPUT);
pinMode(ECHO_PIN1, INPUT);
pinMode(TRIG_PIN2, OUTPUT);
pinMode(ECHO_PIN2, INPUT);
pinMode(LED_PIN, OUTPUT); // Configure le pin de la LED d'entrée comme sortie
pinMode(LED2_PIN, OUTPUT); // Configure le pin de la LED de sortie comme sortie
}
void loop() {
// Vérifie l'entrée du parking
if (detecteVoiture(TRIG_PIN1, ECHO_PIN1)) {
digitalWrite(LED_PIN, HIGH); // Allume la LED d'entrée
if (placesDisponibles > 0) placesDisponibles--;
Serial.print("Voiture entrée, places disponibles : ");
Serial.println(placesDisponibles);
delay(5000); // Attente pour éviter de compter la même voiture plusieurs fois
digitalWrite(LED_PIN, LOW); // Éteint la LED d'entrée
}
// Vérifie la sortie du parking
if (detecteVoiture(TRIG_PIN2, ECHO_PIN2)) {
digitalWrite(LED2_PIN, HIGH); // Allume la LED de sortie
placesDisponibles++;
Serial.print("Voiture sortie, places disponibles : ");
Serial.println(placesDisponibles);
delay(5000); // Attente pour éviter de compter la même voiture plusieurs fois
digitalWrite(LED2_PIN, LOW); // Éteint la LED de sortie
}
}
bool detecteVoiture(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duree = pulseIn(echoPin, HIGH);
int distance = duree * 0.034 / 2; // Calcule la distance
return distance > 0 && distance < 20; // Voiture détectée si moins de 20 cm
}