/**
ESP32 HC-SR04-Demo
Demonstration des Ultraschallsensors HC-SR04
Beschreibung:
Verbinden Sie den Ultraschallsensor gemäß der Anleitung mit dem ESP32.
Verbinden Sie das I2C DISPLAY gemäß der Anleitung mit dem ESP32
Hardwareanschlüsse unten.
Die vom Sensor abgelesene Entfernung wird angezeigt in Zentimetern und Zoll.
Hardware-Verbindungen:
ESP32 | HC-SR04
-------------------
5V | VCC
4 | Trig
5 | Echo
Masse | Masse
Hardware-Verbindungen:
ESP32 | I2C DISPLAY (16-2)
-------------------
5V | VCC
21 | SDA
22 | SCL
Masse | Masse
*/
// Pins
const int TRIG_PIN = 4;
const int ECHO_PIN = 5;
// Alles über 400 cm (23200 us Puls) ist "out of range"
const unsigned int MAX_DIST = 23200;
#include <LiquidCrystal_I2C.h>
// Stellen Sie die LCD-Anzahl der Spalten und Zeilen ein (columns and rows)
int lcdColumns = 16;
int lcdRows = 2;
// LCD-Adresse, Anzahl der Spalten und Zeilen einstellen (columns and rows)
// Wenn Sie Ihre Anzeigeadresse nicht kennen, führen Sie einen I2C-Scanner-Sketch aus
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
void setup(){ //==================================================================
// LCD initialisieren
lcd.init();
// LCD-Hintergrundbeleuchtung einschalten
lcd.backlight();
// Der Trigger-Pin teilt dem Sensor mit, den Bereich zu finden
pinMode(TRIG_PIN, OUTPUT);
digitalWrite(TRIG_PIN, LOW);
// Setzen Sie den Echo-Pin als Eingang, um die Dauer von zu messen
// Impulse, die vom Abstandssensor zurückkommen
pinMode(ECHO_PIN, INPUT);
}
void loop(){ //==================================================================
unsigned long t1;
unsigned long t2;
unsigned long pulse_width;
float cm;
float inches;
// Halten Sie den trigger pin für mindestens 10 us hoch
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Auf Impuls am Echo-Pin warten
while ( digitalRead(ECHO_PIN) == 0 );
// Messen, wie lange der Echostift hoch gehalten wurde (Impulsbreite)
// Hinweis: Der micros()-Zähler wird nach ~70 min überlaufen
t1 = micros();
while ( digitalRead(ECHO_PIN) == 1);
t2 = micros();
pulse_width = t2 - t1;
// Abstand in Zentimetern und Zoll berechnen. Die Konstanten
// stehen im Datenblatt und werden aus der angenommenen Geschwindigkeit berechnet
//von Schall in der Luft auf Meereshöhe (~340 m/s).
cm = pulse_width / 58.0;
inches = pulse_width / 148.0;
// Ergebnisse ausgeben
if ( pulse_width > MAX_DIST ) {
lcd.clear();
lcd.print("Out of range");
delay(500);
lcd.setCursor(0, 1);
lcd.print("Reichweite > MAX");
delay(500);
lcd.clear();
} else {
// lcd.clear();
// Cursor auf erste Spalte, erste Zeile setzen
lcd.setCursor(0, 0);
lcd.print(cm);
lcd.setCursor(6, 0);
lcd.print(" cm ");//(" cm \t")
// Cursor auf erste Spalte, erste Zeile setzen
lcd.setCursor(0, 1);
lcd.print(inches);
lcd.setCursor(6, 1);
lcd.print(" inch");
}
// Vor der nächsten Messung mindestens 60 ms warten
delay(60);
}