6. Spiel mit dem Ultraschallmodul¶
Im Projekt 5. Spielen mit dem Hindernisvermeidungsmodul werden die 2 Infrarot-Hindernisvermeidungsmodule für die Hindernisvermeidung verwendet. Allerdings ist die Erkennungsreichweite des IR-Hindernisvermeidungsmoduls kurz, was dazu führen kann, dass das Auto zu spät reagiert, um Hindernissen auszuweichen.
In diesem Projekt verwenden wir ein Ultraschallmodul für Erkennungen über längere Distanzen, damit das Auto Hindernisse aus weiterer Entfernung wahrnehmen und entsprechend reagieren kann.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein gesamtes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Verdrahtung
Ein Ultraschallsensormodul ist ein Instrument, das mithilfe von Ultraschallwellen die Entfernung zu einem Objekt misst. Es verfügt über zwei Sonden. Eine sendet Ultraschallwellen, die andere empfängt diese Wellen und wandelt die Zeit zwischen Senden und Empfangen in eine Entfernung um, wodurch die Entfernung zwischen dem Gerät und einem Hindernis erkannt wird.
Bauen Sie die Schaltung gemäß dem folgenden Diagramm auf.
Ultraschallmodul |
R3-Board |
---|---|
Vcc |
5V |
Trig |
3 |
Echo |
4 |
Gnd |
GND |
Code
Bemerkung
Öffnen Sie die Datei
6.ultrasonic_module.ino
im Pfad3in1-kit\car_project\6.ultrasonic_module
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem der Code erfolgreich hochgeladen wurde, richten Sie das Auto auf eine Wand aus. Wenn der Abstand zu groß ist, fährt es vorwärts; ist er zu gering, fährt es rückwärts; befindet es sich in sicherem Abstand, hält es an.
Wie funktioniert das?
Dieses Projekt basiert auf der vom Ultraschallmodul gelesenen Entfernung, um das Auto entsprechend zu steuern.
Fügen Sie die Pin-Definition für das Ultraschallmodul hinzu.
trigPin
dient zum Senden von Ultraschallwellen und wird daher aufOUTPUT
gesetzt;echoPin
wird aufINPUT
gesetzt, um Ultraschallwellen zu empfangen.... const int trigPin = 3; const int echoPin = 4; void setup() { ... // Ultraschall pinMode(echoPin, INPUT); pinMode(trigPin, OUTPUT); }
Lesen Sie zuerst den vom Ultraschallmodul ermittelten Entfernungswert. Wenn die Entfernung größer als 25 ist, soll das Auto vorwärts fahren; wenn die Entfernung zwischen 2-10cm liegt, soll das Auto rückwärts fahren, sonst (zwischen 10~25) stoppen.
void loop() { float distance = readSensorData(); if (distance > 25) { moveForward(200); } else if (distance < 10 && distance > 2) { moveBackward(200); } else { stopMove(); } }
Über die Funktion
readSensorData()
:Der Sender des Ultraschallmoduls sendet alle 2us ein 10us Quadratwellensignal, und der Empfänger erhält ein High-Level-Signal, wenn sich ein Hindernis im Bereich befindet. Mit der Funktion
pulseIn()
wird die Zeit vom Senden bis zum Empfangen aufgezeichnet, durch die Schallgeschwindigkeit von 340m/s geteilt und dann durch 2 dividiert. Das Ergebnis ist der Abstand zwischen diesem Modul und dem Hindernis in Einheiten: cm.float readSensorData() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); float distance = pulseIn(echoPin, HIGH) / 58.00; //Entspricht (340m/s*1us)/2 return distance; }
-
pin
: Die Nummer des Arduino-Pins, an dem Sie den Impuls lesen möchten. Zulässige Datentypen: int.value
: Art des zu lesenden Pulses: entweder HIGH oder LOW. Zulässige Datentypen: int.
Liest einen Impuls (entweder HIGH oder LOW) an einem Pin. Wenn zum Beispiel der Wert HIGH ist, wartet
pulseIn()
darauf, dass der Pin von LOW auf HIGH wechselt, beginnt mit der Zeitmessung und wartet dann darauf, dass der Pin auf LOW geht und stoppt die Zeitmessung.