#define BLYNK_TEMPLATE_ID "TMPL5kUEpf4Xn"
#define BLYNK_TEMPLATE_NAME "shrfizeFH8PGY"
#define BLYNK_AUTH_TOKEN "o5KPt-4DqtIsZ_2JIZXHyDOUl7j3U7Ly"
#include <BlynkSimpleEsp32.h> // Bibliotheque de connexion au Cloud Blynk
#include <NewPing.h> // Bibliotheque pour le capteur ultrason
char auth[] = BLYNK_AUTH_TOKEN; // On utilise le token defini plus haut
char ssid[] = "Wokwi-GUEST"; // WiFi virtuel de Wokwi
char pass[] = ""; // Pas de mot de passe requis
#define TRIG_PIN 2 // Pin ESP32 vers Trigger du capteur
#define ECHO_PIN 4 // Pin ESP32 vers Echo du capteur
#define MAX_DISTANCE 400 // Portee maximale (4 metres)
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); // Initialisation du capteur
BlynkTimer timer; // Minuteur pour l’envoi periodique
int capteurActif = 1; // Variable d’etat du systeme (1=ON, 0=OFF)
// --- FONCTION D’ENVOI DES DONNEES ---
void envoyerDistance() {
if (capteurActif == 1) { // Si le systeme est sur "Marche"
// Calcul de la distance en millimtres (ping_cm renvoie un entier)
unsigned int distance_mm = sonar.ping_cm() * 10;
Blynk.virtualWrite(V1, distance_mm); // Envoi vers le widget V1
Serial.print("Distance envoyee : "); // Debug dans le moniteur serie
Serial.print(distance_mm);
Serial.println(" mm");
}
}
// --- CONTROLE DEPUIS L’APPLICATION ---
BLYNK_WRITE(V2) { // S’active quand on appuie sur le Switch V2
capteurActif = param.asInt(); // Mise a jour de l’etat (0 ou 1)
}
// --- INITIALISATION DU SYSTEME ---
void setup() {
Serial.begin(115200); // Demarrage de la console de debug
Blynk.begin(auth, ssid, pass); // Connexion au Cloud Blynk
timer.setInterval(1000L, envoyerDistance); // Mesure chaque seconde (1000ms)
}
// --- BOUCLE PRINCIPALE ---
void loop() {
Blynk.run(); // Maintient la liaison avec Blynk
timer.run(); // Gere le chronometre du minuteur
}