Codeanalyse des Roboterautos für den Fluchtmodus der Patrouillenlinie

Erste. Funktionsprinzip:

Installieren Sie zwei vertikale, nach unten gerichtete Infrarot-Hindernisvermeidungsmodule an der Vorderseite des Fahrzeugs als Sensoren zur Erkennung schwarzer Linien. Wenn der Sensor einen Pegel von 0 zurückgibt, zeigt er an, dass es sich um eine normale Erdung handelt, und wenn der Rückgabepegel 1 beträgt, zeigt er an, dass es sich um eine schwarze Linie handelt. Bestimmen Sie daher entsprechend dem Zustand der beiden Detektoren die Position des aktuellen Kopfes der Roboterkarosserie relativ zur schwarzen Linie und korrigieren Sie dann die Richtung. Jede Runde der Endlosschleife wird einmal korrigiert, bis der Kopf parallel zur schwarzen Linie steht und der Detektor nicht mehr auslöst.

Zweite. Hardware-Verbindung

Installieren Sie zwei vertikale, nach unten gerichtete Infrarot-Hindernisvermeidungsmodule an der Vorderseite des Fahrzeugs. Der Sendekopf des Moduls ist etwa 2 cm vom Boden entfernt. Passen Sie die Empfindlichkeit des Infrarot-Hindernisvermeidungsmoduls so an, dass bei Ausrichtung auf die schwarze Linie die Anzeigeleuchte an der Rückseite des Sensors ausgeschaltet ist und aufleuchtet, wenn der Boden normal ist.

Installieren Sie zwei vertikale, nach unten gerichtete Infrarot-Hindernisvermeidungsmodule an der Vorderseite des Fahrzeugs. Der Sendekopf des Moduls ist etwa 2 cm vom Boden entfernt. Passen Sie die Empfindlichkeit des Infrarot-Hindernisvermeidungsmoduls so an, dass bei Ausrichtung auf die schwarze Linie die Anzeigeleuchte an der Rückseite des Sensors ausgeschaltet ist und aufleuchtet, wenn der Boden normal ist.

(Die Rückseite des Autos zeigt zum Benutzer) Wir verbinden den Infrarotsensor auf der linken Seite des Roboterautos mit der P20-Schnittstelle der Antriebsplatine und die rechte Seite mit der P23-Schnittstelle.

Dritte. Software-Schreiben

Öffnen Sie das untere Computerprogrammprojekt mit keil C V4, suchen Sie die Konfigurationsdatei config.h und fügen Sie die IO-Pin-Konfiguration des Zeilenverfolgungssensors in die Konfigurationsdatei ein:

1. /* Pin-Konfiguration zur Hindernisvermeidung */

2. sbit Input_Detect_LEFT=P2^0; //Rechte Sonde

3. sbit Input_Detect_RIGHT=P2^3; //Linkes Problem

Code kopieren

Öffnen Sie dann die Datei motor.c und fügen Sie der Datei den zeilenfolgenden Code hinzu. Definieren Sie zunächst eine Variable, um den Bewegungszustand des Roboters zu speichern, sodass der Roboter nach einer Abweichung vom Kurs immer Richtungskorrekturmaßnahmen durchführt, bevor er in die richtige Richtung zurückkehrt.

1. uchar Robots_Run_Status;

Code kopieren

Fügen Sie dann eine Zeilenverfolgungslogikfunktion hinzu, um die Zeilenverfolgungslogik zu realisieren:

  1. //Zeilenfolgemodus
  2. void FollowLine(void)
  3. {
  4. switch(Robots_Run_Status)
  5. {
  6. Fall 0x01:MOTOR_GO_RIGHT; brechen;
  7. Fall 0x02:MOTOR_GO_LEFT; brechen;
  8. Fall 0x03:MOTOR_GO_FORWARD; brechen;
  9. Fall 0x04:MOTOR_GO_STOP; brechen;
  10. }
  11. if((Input_Detect_LEFT == 0)&& (Input_Detect_RIGHT == 0))//Die Detektoren auf beiden Seiten kehren auf den niedrigen Pegel zurück, was anzeigt, dass die Infrarotsensoren auf der linken und rechten Seite den Boden erkannt haben und der Roboter sich gerade bewegt.
  12. {
  13. Robots_Run_Status=0x03;//straight
  14. }
  15. if((Input_Detect_LEFT == 1)&& (Input_Detect_RIGHT == 0))//Der linke Sensor kehrt auf einen hohen Pegel zurück, was anzeigt, dass der linke Sensor eine schwarze Linie erkannt hat. Im Vergleich zur schwarzen Linie hat sich die Gesamtrichtung des Roboters nach rechts verschoben und muss nach links korrigiert werden.
  16. {
  17. Robots_Run_Status=0x02;//Links abbiegen
  18. }
  19. if((Input_Detect_LEFT == 0)&& (Input_Detect_RIGHT == 1))//Der Sensor auf der rechten Seite kehrt auf einen hohen Pegel zurück, was anzeigt, dass der Sensor auf der rechten Seite eine schwarze Linie erkannt hat. Im Vergleich zur schwarzen Linie hat sich die Gesamtrichtung des Roboters nach links verschoben und muss nach rechts korrigiert werden.
  20. {
  21. Robots_Run_Status=0x01;// rechts abbiegen
  22. }
  23. if((Input_Detect_LEFT == 1)&& (Input_Detect_RIGHT == 1))//Eine schwarze Linie wird gleichzeitig links und rechts erkannt, was darauf hinweist, dass es eine horizontale schwarze Linie gibt, und der Roboter stoppt am Ende der Linieninspektion.

  1. {
  2. Robots_Run_Status=0x04;//Stopp
  3. }
  4. }

Code kopieren

Rufen Sie die Funktion zur Verfolgung geschriebener Zeilen auf:

Suchen Sie in der Hauptfunktion main.c nach der Endlosschleife while(1) und fügen Sie die gerade geschriebene Zeilenverfolgungsfunktion hinzu

  1. while(1)
  2. {
  3. FollowLine();//Linieninspektion durchführen
  4. }

Code kopieren

Dies ist eine relativ rudimentäre Art der Patrouille. Es gibt kein Problem mit der schwarzen Linie, die den allgemeinen Bedingungen entspricht. Wenn Sie einen Sicherheitspunkt benötigen, können Sie mehrere Infrarot-Hindernisvermeidungsmodule hinzufügen, um mehrere Beurteilungen genauer zu machen.

DiySmart robot car

Kommentar hinterlassen

Alle Kommentare werden von einem Moderator vor der Veröffentlichung überprüft