Skip to content

Latest commit

 

History

History
198 lines (133 loc) · 6.86 KB

car_ir_obstacle.rst

File metadata and controls

198 lines (133 loc) · 6.86 KB

Note

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [|link_sf_facebook|] und treten Sie heute bei!

5. Spielen mit dem Hindernisvermeidungs-Modul

Zwei Infrarot-Hindernisvermeidungsmodule sind an der Vorderseite des Autos angebracht, mit denen nahegelegene Hindernisse erkannt werden können.

In diesem Projekt kann das Auto frei vorwärts fahren. Wenn es auf ein Hindernis trifft, kann es dieses vermeiden und in andere Richtungen weiterfahren.

Benötigte Komponenten

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

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

Name ARTIKEL IN DIESEM KIT LINK
3 in 1 Starter Kit 380+ |link_3IN1_kit|

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

KOMPONENTENEINFÜHRUNG KAUF-LINK
:ref:`cpn_uno` |link_Uno_R3_buy|
:ref:`cpn_l9110` -
:ref:`cpn_tt_motor` -
:ref:`cpn_avoid` |link_obstacle_avoidance_buy|

Verdrahtung

Das Hindernisvermeidungsmodul ist ein infraroter Näherungssensor mit einstellbarer Entfernung. Sein Ausgang ist normalerweise hoch und wird niedrig, wenn ein Hindernis erkannt wird.

Bauen Sie den Schaltkreis entsprechend dem untenstehenden Diagramm auf.

Linkes IR-Modul R4 Board
AUSGANG 8
ERDE GND
VCC 5V
Rechtes IR-Modul R4 Board
AUSGANG 7
ERDE GND
VCC 5V

img/car_5.png

Modul einstellen

Bevor Sie mit dem Projekt beginnen, müssen Sie den Erfassungsabstand des Moduls anpassen.

Verkabeln Sie gemäß dem obigen Schema, schalten Sie das R4-Board ein (entweder indem Sie das USB-Kabel direkt einstecken oder das 9V-Batteriekabel anschließen), ohne den Code hochzuladen.

Stellen Sie ein Notizbuch oder ein anderes flaches Objekt etwa 5 cm vor das IR-Hindernisvermeidungsmodul.

Verwenden Sie dann einen Schraubenzieher, um das Potentiometer auf dem Modul so zu drehen, dass die Signalanzeige auf dem Modul gerade aufleuchtet, um seinen maximalen Erfassungsabstand von 5 cm einzustellen.

Verwenden Sie die gleiche Methode, um ein weiteres Infrarotmodul anzupassen.

img/ir_obs_cali.jpg

Code

Note

  • Öffnen Sie die Datei 5.obstacle_avoidance_module.ino im Pfad 3in1-kit\car_project\5.obstacle_avoidance_module.
  • Oder kopieren Sie diesen Code in die Arduino IDE.
  • Oder laden Sie den Code über den Arduino Web Editor hoch.

Das Auto wird vorwärts fahren, sobald der Code erfolgreich hochgeladen wurde. Wenn das linke Infrarot-Modul ein Hindernis erkennt, fährt es rückwärts nach links; erkennt das rechte Infrarot-Modul ein Hindernis, fährt es rückwärts nach rechts; erkennen beide Seiten ein Hindernis, fährt es geradlinig rückwärts.

Wie funktioniert das?

Dieses Projekt basiert auf den Werten der linken und rechten Infrarot-Hindernisvermeidungsmodule, um das Auto die entsprechende Aktion ausführen zu lassen.

  1. Fügen Sie die Pin-Definition für die 2 Hindernisvermeidungsmodule hinzu, hier sind sie auf INPUT eingestellt.

    ...
    const int rightIR = 7;
    const int leftIR = 8;
    
    void setup() {
    ...
    
    //IR obstacle
        pinMode(leftIR, INPUT);
        pinMode(rightIR, INPUT);
    }
    
  2. Lesen Sie die Werte der linken und rechten Infrarotmodule und lassen Sie das Auto die entsprechende Aktion ausführen.

    void loop() {
    
        int left = digitalRead(leftIR);   // 0: Obstructed  1: Empty
        int right = digitalRead(rightIR);
        int speed = 150;
    
        if (!left && right) {
            backLeft(speed);
        } else if (left && !right) {
            backRight(speed);
        } else if (!left && !right) {
            moveBackward(speed);
        } else {
            moveForward(speed);
        }
    }
    
    • Wenn das linke IR-Modul 0 ist (Hindernis erkannt) und das rechte IR-Modul 1 ist, fährt das Auto rückwärts nach links.
    • Wenn das rechte IR-Modul 0 ist (Hindernis erkannt), fährt das Auto rückwärts nach rechts.
    • Wenn beide IR-Module gleichzeitig ein Hindernis erkennen, fährt das Auto rückwärts.
    • Ansonsten wird das Auto weiter vorwärts fahren.
  3. Über die Funktion backLeft().

    Wenn der rechte Motor gegen den Uhrzeigersinn dreht und der linke Motor nicht dreht, fährt das Auto rückwärts nach links.

    void backLeft(int speed) {
        analogWrite(A_1B, speed);
        analogWrite(A_1A, 0);
        analogWrite(B_1B, 0);
        analogWrite(B_1A, 0);
    }
    
  4. Über die Funktion backRight().

    Wenn der linke Motor im Uhrzeigersinn dreht und der rechte Motor nicht dreht, fährt das Auto rückwärts nach rechts.

    void backRight(int speed) {
        analogWrite(A_1B, 0);
        analogWrite(A_1A, 0);
        analogWrite(B_1B, 0);
        analogWrite(B_1A, speed);
    }
    
  • &&: Logisches UND ergibt nur dann wahr, wenn beide Operanden wahr sind.
  • !: Logisches NICHT ergibt wahr, wenn der Operand falsch ist und umgekehrt.