Medir la distancia con el sensor ultrasónico HC-SR04
Entfernung messen und daraus einen Rückfahrwarner bauen
Elige un microcontrolador
Pins, Schaltplan und Sketch in den Arbeitsschritten ändern sich entsprechend deiner Auswahl. Sie bleibt gespeichert.
Wie funktioniert der Ultraschallsensor HC-SR04?
Entfernung im seriellen Monitor anzeigen
// Pin für den Sender
int SENDEN = 7;
// Pin für das vom Objekt reflektierte Signal
int ECHO = 6;
// Variable für die Speicherung der Entfernung
long Entfernung = 0;
void setup()
{
pinMode(SENDEN, OUTPUT);
pinMode(ECHO, INPUT);
// Seriellen Monitor starten
Serial.begin(9600);
}
void loop()
{
// Sender kurz ausschalten, um Störungen des Signals zu vermeiden
digitalWrite(SENDEN, LOW);
delay(5);
// Signal für 10 Mikrosekunden senden, danach wieder ausschalten
digitalWrite(SENDEN, HIGH);
delayMicroseconds(10);
digitalWrite(SENDEN, LOW);
// pulseIn -> Zeit messen, bis das Signal zurückkommt
long Zeit = pulseIn(ECHO, HIGH);
// Entfernung in cm berechnen
// Zeit/2 -> nur eine Strecke
Entfernung = (Zeit / 2) * 0.03432;
delay(500);
// nur Entfernungen < 100 anzeigen
if (Entfernung < 100)
{
// Messdaten anzeigen
Serial.print("Entfernung in cm: ");
Serial.println(Entfernung);
}
}Descargar: arduino-uno.ino
Placa en el IDE de ArduinoArduino Uno
Ein zusätzliches Board-Paket brauchst du dafür nicht. Der UNO ist in der Arduino IDE ab Werk dabei.
// Pin für den Sender
int SENDEN = D1;
// Pin für das vom Objekt reflektierte Signal
int ECHO = D2;
// Variable für die Speicherung der Entfernung
long Entfernung = 0;
void setup()
{
pinMode(SENDEN, OUTPUT);
pinMode(ECHO, INPUT);
// Seriellen Monitor starten
Serial.begin(9600);
}
void loop()
{
// Sender kurz ausschalten, um Störungen des Signals zu vermeiden
digitalWrite(SENDEN, LOW);
delay(5);
// Signal für 10 Mikrosekunden senden, danach wieder ausschalten
digitalWrite(SENDEN, HIGH);
delayMicroseconds(10);
digitalWrite(SENDEN, LOW);
// pulseIn -> Zeit messen, bis das Signal zurückkommt
long Zeit = pulseIn(ECHO, HIGH);
// Entfernung in cm berechnen
// Zeit/2 -> nur eine Strecke
Entfernung = (Zeit / 2) * 0.03432;
delay(500);
// nur Entfernungen < 100 anzeigen
if (Entfernung < 100)
{
// Messdaten anzeigen
Serial.print("Entfernung in cm: ");
Serial.println(Entfernung);
}
}Descargar: wemos-d1-mini.ino
Placa en el IDE de ArduinoLOLIN(WEMOS) D1 R2 & mini
Dafür muss die ESP8266-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
// Pin für den Sender
int SENDEN = D1;
// Pin für das vom Objekt reflektierte Signal
int ECHO = D2;
// Variable für die Speicherung der Entfernung
long Entfernung = 0;
void setup()
{
pinMode(SENDEN, OUTPUT);
pinMode(ECHO, INPUT);
// Seriellen Monitor starten
Serial.begin(9600);
}
void loop()
{
// Sender kurz ausschalten, um Störungen des Signals zu vermeiden
digitalWrite(SENDEN, LOW);
delay(5);
// Signal für 10 Mikrosekunden senden, danach wieder ausschalten
digitalWrite(SENDEN, HIGH);
delayMicroseconds(10);
digitalWrite(SENDEN, LOW);
// pulseIn -> Zeit messen, bis das Signal zurückkommt
long Zeit = pulseIn(ECHO, HIGH);
// Entfernung in cm berechnen
// Zeit/2 -> nur eine Strecke
Entfernung = (Zeit / 2) * 0.03432;
delay(500);
// nur Entfernungen < 100 anzeigen
if (Entfernung < 100)
{
// Messdaten anzeigen
Serial.print("Entfernung in cm: ");
Serial.println(Entfernung);
}
}Descargar: nodemcu.ino
Placa en el IDE de ArduinoNodeMCU 1.0 (ESP-12E Module)
Dafür muss die ESP8266-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
// Pin für den Sender
int SENDEN = 19;
// Pin für das vom Objekt reflektierte Signal
int ECHO = 18;
// Variable für die Speicherung der Entfernung
long Entfernung = 0;
void setup()
{
pinMode(SENDEN, OUTPUT);
pinMode(ECHO, INPUT);
// Seriellen Monitor starten
Serial.begin(9600);
}
void loop()
{
// Sender kurz ausschalten, um Störungen des Signals zu vermeiden
digitalWrite(SENDEN, LOW);
delay(5);
// Signal für 10 Mikrosekunden senden, danach wieder ausschalten
digitalWrite(SENDEN, HIGH);
delayMicroseconds(10);
digitalWrite(SENDEN, LOW);
// pulseIn -> Zeit messen, bis das Signal zurückkommt
long Zeit = pulseIn(ECHO, HIGH);
// Entfernung in cm berechnen
// Zeit/2 -> nur eine Strecke
Entfernung = (Zeit / 2) * 0.03432;
delay(500);
// nur Entfernungen < 100 anzeigen
if (Entfernung < 100)
{
// Messdaten anzeigen
Serial.print("Entfernung in cm: ");
Serial.println(Entfernung);
}
}Descargar: esp32-wroom.ino
Placa en el IDE de ArduinoESP32 Dev Module
Dafür muss die ESP32-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
Rückfahrwarner
int LED = 3;
int LAUTSPRECHER = 4;
int ECHO = 6;
int SENDEN = 7;
long Entfernung = 0;
void setup()
{
pinMode(SENDEN, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(LAUTSPRECHER, OUTPUT);
pinMode(LED, OUTPUT);
}
void loop()
{
// Sender kurz ausschalten, um Störungen des Signals zu vermeiden
digitalWrite(SENDEN, LOW);
delay(5);
// Signal senden
digitalWrite(SENDEN, HIGH);
delayMicroseconds(10);
digitalWrite(SENDEN, LOW);
// pulseIn -> Zeit messen, bis das Signal zurückkommt
long Zeit = pulseIn(ECHO, HIGH);
// Entfernung in cm berechnen
// Zeit/2 -> nur eine Strecke
Entfernung = (Zeit / 2) * 0.03432;
switch (Entfernung)
{
case 13 ... 15:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(500);
break;
case 11 ... 12:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(400);
break;
case 9 ... 10:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(300);
break;
case 7 ... 8:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(200);
break;
case 5 ... 6:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(100);
break;
case 2 ... 4:
tone(LAUTSPRECHER, 1000);
digitalWrite(LED, HIGH);
break;
}
}Descargar: arduino-uno.ino
Placa en el IDE de ArduinoArduino Uno
Ein zusätzliches Board-Paket brauchst du dafür nicht. Der UNO ist in der Arduino IDE ab Werk dabei.
int SENDEN = D1;
int ECHO = D2;
int LED = D3;
int LAUTSPRECHER = D4;
long Entfernung = 0;
void setup()
{
pinMode(SENDEN, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(LAUTSPRECHER, OUTPUT);
pinMode(LED, OUTPUT);
}
void loop()
{
// Sender kurz ausschalten, um Störungen des Signals zu vermeiden
digitalWrite(SENDEN, LOW);
delay(5);
// Signal senden
digitalWrite(SENDEN, HIGH);
delayMicroseconds(10);
digitalWrite(SENDEN, LOW);
// pulseIn -> Zeit messen, bis das Signal zurückkommt
long Zeit = pulseIn(ECHO, HIGH);
// Entfernung in cm berechnen
// Zeit/2 -> nur eine Strecke
Entfernung = (Zeit / 2) * 0.03432;
switch (Entfernung)
{
case 13 ... 15:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(500);
break;
case 11 ... 12:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(400);
break;
case 9 ... 10:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(300);
break;
case 7 ... 8:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(200);
break;
case 5 ... 6:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(100);
break;
case 2 ... 4:
tone(LAUTSPRECHER, 1000);
digitalWrite(LED, HIGH);
break;
}
}Descargar: wemos-d1-mini.ino
Placa en el IDE de ArduinoLOLIN(WEMOS) D1 R2 & mini
Dafür muss die ESP8266-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
int LED = 5;
int LAUTSPRECHER = 17;
int ECHO = 18;
int SENDEN = 19;
long Entfernung = 0;
void setup()
{
pinMode(SENDEN, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(LAUTSPRECHER, OUTPUT);
pinMode(LED, OUTPUT);
}
void loop()
{
// Sender kurz ausschalten, um Störungen des Signals zu vermeiden
digitalWrite(SENDEN, LOW);
delay(5);
// Signal senden
digitalWrite(SENDEN, HIGH);
delayMicroseconds(10);
digitalWrite(SENDEN, LOW);
// pulseIn -> Zeit messen, bis das Signal zurückkommt
long Zeit = pulseIn(ECHO, HIGH);
// Entfernung in cm berechnen
// Zeit/2 -> nur eine Strecke
Entfernung = (Zeit / 2) * 0.03432;
switch (Entfernung)
{
case 13 ... 15:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(500);
break;
case 11 ... 12:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(400);
break;
case 9 ... 10:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(300);
break;
case 7 ... 8:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(200);
break;
case 5 ... 6:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(100);
break;
case 2 ... 4:
tone(LAUTSPRECHER, 1000);
digitalWrite(LED, HIGH);
break;
}
}Descargar: esp32-wroom.ino
Placa en el IDE de ArduinoESP32 Dev Module
Dafür muss die ESP32-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
int SENDEN = D1;
int ECHO = D2;
int LED = D3;
int LAUTSPRECHER = D4;
long Entfernung = 0;
void setup()
{
pinMode(SENDEN, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(LAUTSPRECHER, OUTPUT);
pinMode(LED, OUTPUT);
}
void loop()
{
// Sender kurz ausschalten, um Störungen des Signals zu vermeiden
digitalWrite(SENDEN, LOW);
delay(5);
// Signal senden
digitalWrite(SENDEN, HIGH);
delayMicroseconds(10);
digitalWrite(SENDEN, LOW);
// pulseIn -> Zeit messen, bis das Signal zurückkommt
long Zeit = pulseIn(ECHO, HIGH);
// Entfernung in cm berechnen
// Zeit/2 -> nur eine Strecke
Entfernung = (Zeit / 2) * 0.03432;
switch (Entfernung)
{
case 13 ... 15:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(500);
break;
case 11 ... 12:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(400);
break;
case 9 ... 10:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(300);
break;
case 7 ... 8:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(200);
break;
case 5 ... 6:
tone(LAUTSPRECHER, 1000, 2);
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(100);
break;
case 2 ... 4:
tone(LAUTSPRECHER, 1000);
digitalWrite(LED, HIGH);
break;
}
}Descargar: nodemcu.ino
Placa en el IDE de ArduinoNodeMCU 1.0 (ESP-12E Module)
Dafür muss die ESP8266-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.