8. Selbstfahrendes Auto

Dieses Projekt kombiniert die beiden Projekte 6. Mit dem Ultraschallmodul spielen und 5. Spielen mit dem Hindernisvermeidungs-Modul. 2 Infrarot-Hindernisvermeidungsmodule führen Kurzstrecken- oder Kantenerkennungen durch, und Ultraschallmodule sorgen für Langstreckenerkennung, um sicherzustellen, dass das Auto während des freien Fahrens kein Hindernis trifft.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

Arduino Uno R4 Minima

BUY

L9110 Motortreibermodul

-

TT Motor

-

Ultraschall-Modul

BUY

Hindernisvermeidungsmodul

BUY

Verdrahtung

Schließen Sie das Ultraschallmodul und die 2 IR-Hindernisvermeidungsmodule gleichzeitig an.

Verdrahten Sie das Ultraschallmodul wie folgt mit dem R4-Board.

Ultraschallmodul

R4 Board

Vcc

5V

Trig

3

Echo

4

Gnd

GND

Die Verdrahtung der 2 IR-Hindernisvermeidungsmodule zum R4-Board ist wie folgt:

Linkes IR-Modul

R4 Board

OUT

8

GND

GND

VCC

5V

Rechtes IR-Modul

R4 Board

OUT

7

GND

GND

VCC

5V

../_images/car_7_8.png

Code

Bemerkung

  • Öffnen Sie die Datei 8.self_driving_car.ino unter dem Pfad 3in1-kit\car_project\8.self_driving_car.

  • Oder kopieren Sie diesen Code in die Arduino IDE.

  • Oder laden Sie den Code über den Arduino Web Editor hoch.

Sobald der Code erfolgreich hochgeladen wurde, wird das Auto frei fahren. Wenn das IR-Hindernismodul auf beiden Seiten ein Hindernis erkennt, wird es sich zur Notausweichung in die entgegengesetzte Richtung bewegen; befindet sich ein Hindernis direkt vor dem Auto im Abstand von 2~10cm, wird es nach links zurücksetzen, seine Richtung anpassen und dann vorwärts fahren.

Wie funktioniert das?

Der Ablauf dieses Projekts ist wie folgt.

  • Priorität beim Auslesen der Werte des linken und rechten IR-Hindernisvermeidungsmoduls.

  • Wenn das linke IR-Modul 0 ist (Hindernis erkannt) und das rechte IR-Modul 1 ist, soll das Auto nach links zurücksetzen.

  • Wenn das rechte IR-Modul 0 ist (Hindernis erkannt), soll das Auto nach rechts zurücksetzen.

  • Wenn beide IR-Module gleichzeitig ein Hindernis erkennen, wird das Auto zurücksetzen.

  • Ansonsten wird der Abstand, der vom Ultraschallmodul erkannt wurde, ausgelesen.

  • Wenn der Abstand größer als 50cm ist, soll das Auto vorwärts fahren.

  • Wenn der Abstand zwischen 2-10cm liegt, soll das Auto zurücksetzen, bevor es abbiegt.

  • Wenn der Abstand zwischen 10-50cm liegt, soll das Auto mit geringer Geschwindigkeit vorwärts fahren.

void loop() {

    int left = digitalRead(leftIR);   // 0: Obstructed  1: Empty
    int right = digitalRead(rightIR);

    if (!left && right) {
        backLeft(150);
    } else if (left && !right) {
        backRight(150);
    } else if (!left && !right) {
        moveBackward(150);
    } else {
        float distance = readSensorData();
        Serial.println(distance);
        if (distance > 50) { // Safe
            moveForward(200);
        } else if (distance < 10 && distance > 2) { // Attention
            moveBackward(200);
            delay(1000);
            backLeft(150);
            delay(500);
        } else {
            moveForward(150);
        }
    }
}