6. Mit dem Ultraschallmodul spielen¶
Im Projekt 5. Spielen mit dem Hindernisvermeidungs-Modul werden die 2 Infrarot-Hindernisvermeidungsmodule zur Hindernisvermeidung eingesetzt. Jedoch ist die Erkennungsreichweite des IR-Hindernisvermeidungsmoduls kurz, wodurch das Auto möglicherweise zu spät ausweicht.
In diesem Projekt verwenden wir ein Ultraschallmodul für Fernerkennungen, damit das Auto Hindernisse aus größerer Entfernung wahrnehmen und eine Entscheidung treffen kann.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes 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 mit Ultraschallwellen den Abstand zu einem Objekt misst. Es hat zwei Sonden. Eine sendet Ultraschallwellen, die andere empfängt die Wellen und wandelt die Sende- und Empfangszeit in eine Entfernung um, wodurch die Entfernung zwischen dem Gerät und einem Hindernis erkannt wird.
Bauen Sie die Schaltung entsprechend dem folgenden Diagramm auf.
Ultraschallmodul |
R4 Board |
---|---|
Vcc |
5V |
Trig |
3 |
Echo |
4 |
Gnd |
GND |
Code
Bemerkung
Öffnen Sie die Datei
6.ultrasonic_module.ino
unter dem 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. Wenn der Abstand zu groß ist, wird es vorwärts fahren; wenn es zu nah ist, wird es rückwärts fahren; wenn es in sicherem Abstand ist, wird es stoppen.
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
wird verwendet, um Ultraschallwellen zu senden, setzen Sie diesen also aufOUTPUT
;echoPin
wird aufINPUT
gesetzt, um Ultraschallwellen zu empfangen.... const int trigPin = 3; const int echoPin = 4; void setup() { ... //ultrasonic pinMode(echoPin, INPUT); pinMode(trigPin, OUTPUT); }
Lesen Sie zuerst den Entfernungswert, der vom Ultraschallmodul abgerufen wird. Wenn die Entfernung größer als 25 ist, lassen Sie das Auto vorwärts fahren; wenn die Entfernung zwischen 2-10cm liegt, lassen Sie das Auto rückwärts fahren, ansonsten (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 Quadratsignal, und der Empfänger empfängt ein High-Level-Signal, wenn sich ein Hindernis innerhalb des Bereichs befindet. Verwenden Sie die Funktion
pulseIn()
, um die Zeit von der Sendung bis zum Empfang zu protokollieren, teilen Sie durch die Schallgeschwindigkeit von 340m/s und dann durch 2. Das Ergebnis ist die Entfernung 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; //Equivalent to (340m/s*1us)/2 return distance; }
-
pin
: die Nummer des Arduino-Pins, auf 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 beispielsweise der Wert HIGH ist, wartet
pulseIn()
darauf, dass der Pin von LOW auf HIGH wechselt, beginnt mit der Zeitmessung, dann wartet darauf, dass der Pin auf LOW geht und stoppt die Zeitmessung.