#define BLYNK_TEMPLATE_ID "TMPL21_ZLxjY6"
#define BLYNK_TEMPLATE_NAME "garage"
#define BLYNK_AUTH_TOKEN "V8nVmq_1WeHC-We-Fcggj-LV9XUr_k_0"
#include <ESP32Servo.h>
#include <PIRSensor.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#define pirPIN 14
#define buttonPIN 12 // Broche pour le bouton
PIRSensor pir(pirPIN);
Servo myservo;
int ledpin = 5;
bool servoState = false; // État du servo : false pour fermé, true pour ouvert
// Remplacez par votre token d'authentification Blynk
char auth[] = BLYNK_AUTH_TOKEN;
void setup() {
myservo.attach(22);
pinMode(ledpin, OUTPUT);
pinMode(pirPIN, INPUT); // Set PIR pin as input
pinMode(buttonPIN, INPUT_PULLUP); // Configurer le bouton en entrée avec résistance de tirage
// Initialiser Blynk
Blynk.begin(auth, "Wokwi-GUEST", "");
}
void loop() {
Blynk.run(); // Exécuter Blynk
int motionDetected = digitalRead(pirPIN); // Lire l'état du capteur PIR
int buttonState = digitalRead(buttonPIN); // Lire l'état du bouton
// Vérifier si le bouton est pressé
if (buttonState == LOW) { // Le bouton est actif à l'état bas
servoState = !servoState; // Inverser l'état du servo
if (servoState) {
myservo.write(180); // Ouvrir le servo
} else {
myservo.write(90); // Fermer le servo
}
delay(500); // Délais pour éviter les rebonds du bouton
}
if (motionDetected == HIGH) {
// Si un mouvement est détecté, activer le garage porte
myservo.write(180);
delay(1000); // Garder le servo activé pendant 1 seconde
digitalWrite(ledpin, HIGH);
delay(1000);
digitalWrite(ledpin, LOW);
delay(1000);
}
}
// Fonction pour contrôler le servo via Blynk
BLYNK_WRITE(V1) {
int value = param.asInt(); // Lire la valeur envoyée depuis l'application Blynk
servoState = value; // Mettre à jour l'état du servo
if (servoState) {
myservo.write(180); // Ouvrir le servo
} else {
myservo.write(90); // Fermer le servo
}
}