/* * Code d'exemple pour un capteur à ultrasons HC-SR04. */ #include "ESP8266WiFi.h" /* Constantes pour les broches */ const byte TRIGGER_PIN = 14; // Broche TRIGGER const byte ECHO_PIN = 12; // Broche ECHO float distance = 0; /* Constantes pour le timeout */ const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s /* Vitesse du son dans l'air en mm/us */ const float SOUND_SPEED = 340.0 / 1000; /** Fonction setup() */ void setup() { /* Initialise le port série */ Serial.begin(9600); WiFi.forceSleepBegin(); // turn off ESP8266 RFo /* Initialise les broches */ pinMode(TRIGGER_PIN, OUTPUT); digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos pinMode(ECHO_PIN, INPUT); } /** Fonction loop() */ void loop() { /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */ digitalWrite(TRIGGER_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIGGER_PIN, LOW); /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */ long measure[10]; long somme; for (int i = 0; i < 10; i++) { measure[i] = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT); somme += measure[i]; delay(10); } long moyenne = somme / 10; /* 3. Calcul la distance à partir du temps mesuré */ float distance_mm = moyenne / 2.0 * SOUND_SPEED; /* Affiche les résultats en mm, cm et m */ Serial.print(F("Distance: ")); Serial.print(distance_mm); Serial.print(F("mm (")); Serial.print(distance_mm / 10.0, 2); Serial.print(F("cm, ")); Serial.print(distance_mm / 1000.0, 2); Serial.println(F("m)")); /* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */ delay(500); }