Ultraschall¶
Überblick¶
Wenn Sie rückwärts fahren, sehen Sie die Entfernung zwischen dem Auto und den umliegenden Hindernissen, um eine Kollision zu vermeiden. Das Gerät zur Entfernungserkennung ist ein Ultraschallsensor. In diesem Experiment lernen Sie, wie die Ultraschallwelle die Entfernung erkennt.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
Elite Explorer Kit |
300+ |
Sie können die Komponenten auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Verdrahtung¶
Schaltplan¶
Code¶
Bemerkung
Sie können die Datei
06-ultrasonic.ino
direkt unter dem Pfadelite-explorer-kit-main\basic_project\06-ultrasonic
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Code-Analyse¶
1. Initialisieren des Ultraschallsensors und des LCD1602
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // initialize the Liquid Crystal Display object with the I2C address 0x27, 16 columns and 2 rows // Define the pin numbers for the ultrasonic sensor const int echoPin = 3; const int trigPin = 4; void setup() { pinMode(echoPin, INPUT); // Set echo pin as input pinMode(trigPin, OUTPUT); // Set trig pin as output lcd.init(); // initialize the LCD lcd.clear(); // clear the LCD display lcd.backlight(); // Make sure backlight is on }
2. Anzeige der Entfernung auf dem LCD1602
void loop() { float distance = readDistance(); // Call the function to read the sensor data and get the distance lcd.setCursor(0, 0); //Place the cursor at Line 1, Column 1. From here the characters are to be displayed lcd.print("Distance:"); ////Print Distance: on the LCD lcd.setCursor(0, 1); //Set the cursor at Line 1, Column 0 lcd.print(" "); //Here is to leave some spaces after the characters so as to clear the previous characters that may still remain. lcd.setCursor(7, 1); //Set the cursor at Line 1, Column 7. lcd.print(distance); // print on the LCD the value of the distance converted from the time between ping sending and receiving. lcd.setCursor(14, 1); //Set the cursor at Line 1, Column 14. lcd.print("cm"); //print the unit "cm" delay(800); // Delay for 800 milliseconds before repeating the loop }
3. Umrechnung der Zeit in Entfernung
float readDistance(){// ...}Hier bezieht sich „PING“ auf den Prozess, bei dem der Ultraschallsensor einen Ultraschallimpuls (oder „Ping“) aussendet und dann auf sein Echo wartet.
PING wird durch einen HIGH-Puls von 2 oder mehr Mikrosekunden ausgelöst. (Vorher einen kurzen LOW-Puls geben, um einen sauberen HIGH-Puls zu gewährleisten.)
digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW);Der Echo-Pin wird verwendet, um das Signal von PING zu lesen, einen HIGH-Puls, dessen Dauer die Zeit (in Mikrosekunden) vom Senden des Pings bis zum Empfang des Echos des Objekts ist. Wir verwenden die folgende Funktion, um die Dauer zu erhalten.
pulseIn(echoPin, HIGH);Die Schallgeschwindigkeit beträgt 340 m/s oder 29 Mikrosekunden pro Zentimeter.
Dies gibt die vom Ping zurückgelegte Strecke, hin und zurück, an, daher teilen wir durch 2, um die Entfernung des Hindernisses zu erhalten.
float distance = pulseIn(echoPin, HIGH) / 29.00 / 2; // Formula: (340m/s * 1us) / 2