/* ===================================
* Ultraschall-Sensor
*
* by computerarchiv-muenchen.de
*
* http://demo15.makercafe-muenchen.de
* ===================================
*/
#define TRIG 13 // Pin für Ultraschall Trigger-Pin
#define ECHO 12 // Pin für Ultraschall Echo-Pin
#define maximalEntfernung 400 // Maximal messbare Sensor-Entfernung liegt bei 400cm
float timeOut = 60 * maximalEntfernung; // Time-Out ist das 60fache der maximal messbaren Entfernung
float schallGeschwindigkeit = 343.2; // Schall-Geschwindigkeit in trockener Luft bei 20 Grad Celsius https://de.wikipedia.org/wiki/Schallgeschwindigkeit
#include <LiquidCrystal_I2C.h> // Funktionsbibliothek für I2C-LCD-Anzeige einbinden
LiquidCrystal_I2C LCD( 0x27, 16, 2 ); // LCD-Objekt aus Funktionsbibliothek für I2C-LCD-Anzeige erstellen
void setup() {
LCD.init(); // LCD initialisieren
LCD.backlight(); // Hintergrundbeleuchtung an
LCD.print( "Ultraschall" ); // Text auf LCD ausgeben
pinMode( TRIG, OUTPUT ); // Trigger-Pin als Ausgabe definieren
pinMode( ECHO, INPUT ); // Echo-Pin als Eingabe definieren
}
void loop() {
LCD.setCursor( 0, 1 ); // Text-Position bestimmen
LCD.print( "Distanz:" ); // Text ausgeben
float entfernung = leseEntfernung(); // Entfernung lesen
LCD.print( entfernung ); // Entfernung ausgeben
LCD.print( " " ); // alte, vorhandene Ziffern mit Leerzeichen überschreiben
}
float leseEntfernung() {
digitalWrite( TRIG, HIGH ); // Trigger-Pin auf High
delayMicroseconds( 10 ); // 10 Mikro-Sekunden warten
digitalWrite( TRIG, LOW ); // Trigger-Pin auf Low
unsigned long signalLaufzeit = pulseIn( ECHO, HIGH, timeOut ); // Signal-Laufzeit in Mikro-Sekunden messen
float distanz = (float)signalLaufzeit * schallGeschwindigkeit / 20000; // Distanz auf Basis der Laufzeit berechnen
return distanz; // berechnetes Ergebnis zurückgeben
}