#include <Servo.h>
const int trigPin = 25; // Broche pour le Trigger
const int echoPin = 26; // Broche pour l'Echo
const int servoPin = 2; // Broche du Servo
const int buttonPin = 14; // Broche du bouton
const int greenLedPin = 32; // Broche de la LED verte
const int redLedPin = 35; // Broche de la LED rouge
Servo myServo;
bool servoOpen = false;
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(greenLedPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
myServo.attach(servoPin);
myServo.write(0); // Servo fermé
digitalWrite(redLedPin, HIGH); // LED rouge allumée
}
void loop() {
long duration, distance;
// Mesurer la distance
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration * 0.034) / 2; // Distance en cm
// Vérifier le bouton et la distance
if (digitalRead(buttonPin) == LOW || distance < 10) {
if (!servoOpen) {
myServo.write(90); // Ouvrir le servo
servoOpen = true;
digitalWrite(greenLedPin, HIGH); // LED verte allumée
digitalWrite(redLedPin, LOW); // Éteindre la LED rouge
}
} else {
if (servoOpen) {
myServo.write(0); // Fermer le servo
servoOpen = false;
digitalWrite(greenLedPin, LOW); // Éteindre la LED verte
digitalWrite(redLedPin, HIGH); // LED rouge allumée
}
}
delay(100); // Petite pause pour la stabilité
}