8. Selbstfahrendes Auto

Dieses Projekt kombiniert die beiden Projekte 6. Spiel mit dem Ultraschallmodul und 5. Spielen mit dem Hindernisvermeidungsmodul. 2 Infrarot-Hindernisvermeidungsmodule führen die Kurzstrecken- oder Randdetektion durch, und Ultraschallmodule übernehmen die Langstreckendetektion, 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 sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

Ultraschall-Modul

BUY

Hindernisvermeidungsmodul

BUY

Verdrahtung

Verbinden Sie das Ultraschallmodul und die 2 IR-Hindernisvermeidungsmodule gleichzeitig.

Verdrahten Sie das Ultraschallmodul wie folgt an das R3-Board.

Ultraschallmodul

R3-Board

Vcc

5V

Trig

3

Echo

4

Gnd

GND

Die Verdrahtung der 2 IR-Hindernisvermeidungsmodule an das R3-Board ist wie folgt.

Linkes IR-Modul

R3-Board

OUT

8

GND

GND

VCC

5V

Rechtes IR-Modul

R3-Board

OUT

7

GND

GND

VCC

5V

../_images/car_avoid_ultrasonic.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 8.self_driving_car.ino im 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.

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

Wie funktioniert das?

Der Arbeitsablauf dieses Projekts ist wie folgt.

  • Priorität beim Lesen des Wertes des linken und rechten IR-Hindernisvermeidungsmoduls.

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

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

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

  • Andernfalls lesen Sie die vom Ultraschallmodul erkannte Entfernung.

  • Ist die Entfernung größer als 50 cm, lässt das Auto vorwärts fahren.

  • Liegt die Entfernung zwischen 2-10 cm, lässt das Auto zurücksetzen, bevor es sich dreht.

  • Ist die Entfernung zwischen 10-50 cm, lässt das Auto mit niedriger Geschwindigkeit vorwärts fahren.

void loop() {

    int left = digitalRead(leftIR);   // 0: Verstopft 1: Leer
    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) { // Aufmerksamkeit
            moveBackward(200);
            delay(1000);
            backLeft(150);
            delay(500);
        } else {
            moveForward(150);
        }
    }
}