Mesurer la distance
Entfernung messen und daraus einen Rückfahrwarner bauen
Choisir un microcontrôleur
Les broches, le schéma électrique et le sketch des étapes de travail changent selon ta sélection. Celle-ci reste enregistrée.
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);
}
}Télécharger : arduino-uno.ino
Carte dans l’IDE 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);
}
}Télécharger : wemos-d1-mini.ino
Carte dans l’IDE 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);
}
}Télécharger : nodemcu.ino
Carte dans l’IDE 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);
}
}Télécharger : esp32-wroom.ino
Carte dans l’IDE 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;
}
}Télécharger : arduino-uno.ino
Carte dans l’IDE 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;
}
}Télécharger : wemos-d1-mini.ino
Carte dans l’IDE 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;
}
}Télécharger : esp32-wroom.ino
Carte dans l’IDE 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;
}
}Télécharger : nodemcu.ino
Carte dans l’IDE 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.