Mein Arduino Line nach Roboter!!! -Mit Pololu QTR-6A-IR-Reflexion-Sensor-Array


ich habe ein Arduino Duemillanove mit ATMega 328. Antrieb erfolgt durch zwei Parallaxe Futaba kontinuierliche Rotation Servos. Mein Sensor ist das Pololu QTR-6A IR-Reflexion Sensor Array, und es ist alles ausgeschaltet 4 NiMH Duracell AA-Akkus :)

Es kann ein dunkler wie auf einem hellen Hintergrund folgen. In diesem Fall habe ich schwarzes Klebeband auf einem Whiteboard. Es kalibriert sich zuerst für 5 Sekunden. Sie verschieben es auf der Linie ein paar Mal damit es auf die Differenz in Reflexion gewöhnt. Nach der Kalibrierung beginnt es voran. Ich habe einen Algorithmus um seine Fehler aus der Linie zu bestimmen. Wenn es durch den Algorithmus, die es zu einem extremen Fehler ist bestimmt, schaltet es sich für einen längeren Zeitraum hinweg. Ebenso, wenn der Roboter, dass es nur einen Bruchteil von einem Zoll von der Linie ist feststellt, schaltet es nur für einen Bruchteil einer Sekunde. Dies reduziert über Entschädigung und macht die Zeile nach ein wenig glatter und zuverlässiger.

Dies ist der Code ich habe, ich bei Null angefangen und die MegaServo-Bibliothek hinzugefügt. Ich bin mir bewusst, dass es eine Bibliothek für die Pololu IR-Sensor-Arrays, aber ich auf Probleme gestoßen, also beschloss ich, mit dem Sensor sowie Lesen von vorne anfangen. Ich benutze die analoge Version des Pololu Sensor-Arrays, im Gegensatz zu der RC-Version, die ein digitales Signal ausgibt. Meine Sensoren Ausgangsspannung eine analoge basierend auf die Reflexion von der Oberfläche. Z.B. Wenn Sie 5V an den Sensoren an Vcc, und Sie einer dunklen Oberfläche begegnen, dass der Sensor ausgeben wird eine Spannung näher auf 5V. Umgekehrt, wenn der Sensor eine reflektierende stößt, wird (weiße Fläche) es näher auf 0V ausgegeben. Ich kann lesen, diese 6 analoge Ausgänge von meinem 6 Sensoren durch die 6 Analog i/o-Pins auf mein Arduino.
Darüber hinaus verschachtelt mein STOP-Algorithmus verwendet, wenn Aussagen zu 3-Mal zu überprüfen, ob der Roboter wirklich am Ende, bevor es für 10 Sekunden, hält das Licht blinkt. Dies verhindert einen versehentlichen Halt in der Mitte der Strecke durch ungenaue Messwerte oder Pannen. Während der Kalibrierung rechnete ich einen durchschnittlichen Wert von Reflexion, die ich später verwenden, um Hilfe bei der Navigation und Entscheidungsfindung. Ich druckte auch einige Daten zum seriellen Bildschirm für Testzwecke.

Hier ist mein Code:

// ==========================================================
Fühlen Sie sich frei zu ändern und diesen Code verwenden, aber bitte geben Sie mir anrechnen.
Autor: Austin Duff - 24. Juni 2009
// ==========================================================
#include < PololuQTRSensors.h >
#include < Servo.h >
#include < MegaServo.h >
#define NBR_SERVOS 3
#define FIRST_SERVO_PIN 2

Servo links;
Servo-Recht;
Servo-Turm;

MegaServo Servos [NBR_SERVOS];

Int PingPin = 7;
Int Mitte = 0;
Int Mn = 0;
Int Mx = 0;

void setup()
{

Servos [0] .attach (2, 800, 2200); Turm
Servos [1] .attach (9, 800, 2200); Links
Servos [2] .attach (10, 800, 2200); rechts
Serial.Begin(9600);
Servos[0].Write(65);
DigitalWrite (13, LOW);

Servos[2].Write(90);
Servos[1].Write(90);

für (Int ich = 0; ich < 5000; i ++)
{
DigitalWrite (13, HIGH);

Int Val = 0;
für (Int j = 0; j < = 5; j++)
{
Val = analogRead(j);
Wenn (Val > = Mx)
MX = Val;
Wenn (Val < = Mn)
MN = Val;
}
Delay(1);
}

Mitte = ((mx + mn)/2);
DigitalWrite (13, LOW);

Servos[2].Write(90);
Servos[1].Write(90);
}
void loop()
{

Int s0 = 0;
Int s1 = 0;
Int s2 = 0;
Int s3 = 0;
Int s4 = 0;
Int s5 = 0;

S0 = analogRead(0);
S1 = analogRead(1);
S2 = analogRead(2);
S3 = analogRead(3);
S4 = analogRead(4);
S5 = analogRead(5);

Serial.Print ("Mitte:");
Serial.Print(Mid);
Serial.Print("");
Serial.Print(S0);
Serial.Print("");
Serial.Print(S1);
Serial.Print("");
Serial.Print(S2);
Serial.Print("");
Serial.Print(S3);
Serial.Print("");
Serial.Print(S4);
Serial.Print("");
Serial.Print(S5);
Serial.Print("");
Serial.println();

Servos[2].Write(180);
Servos[1].Write(0);

Delay(10);

If(((S0+S1+S2)/3) > (((s3+s4+s5)/3) + 250)) & & (! () (S0 > Mid) & &(s5 > mid)))
{
Servos[2].Write(180);
Servos[1].Write(90);
Serial.Print ("rechts");
Delay(Abs(((S5+S4+S3)/3)-((S0+S1+S2)/3))/2));
}
If(((S0+S1+S2)/3) < (((s3+s4+s5)/3)-250)) & & (! () (S0 > Mid) & &(s5 > mid)))
{
Servos[2].Write(90);
Servos[1].Write(0);
Serial.Print ("Links");
Delay(Abs(((S5+S4+S3)/3)-((S0+S1+S2)/3))/2));
}
Wenn ((s0 > mid) & &(s5 > mid))
{
Servos[2].Write(90);
Servos[1].Write(90);
Serial.Print ("STOP");
Wenn ((s0 > mid) & &(s5 > mid))
{
Servos[2].Write(90);
Servos[1].Write(90);
Serial.Print ("STOP");
Wenn ((s0 > mid) & &(s5 > mid))
{
Servos[2].Write(90);
Servos[1].Write(90);
Serial.Print ("STOP");
für (Int k = 0; k < 50; k ++)
{
DigitalWrite (13, HIGH);
Delay(100);
DigitalWrite (13, LOW);
Delay(100);
}
Delay(5000);
}
}
}

}

In Verbindung stehende Artikel

Basic Line nach Roboter mit Arduino

Basic Line nach Roboter mit Arduino

07.09.2015Es wurde ein paar Jahre, da wir diese grundlegenden Linie folgende Roboter mit Arduino Tutorial ursprünglich gebucht, und es so viele Leute finden es hilfreich scheint, dass wir nach einem Update sollte die aktuelle Arduino Bibliotheken läu
Extrem einfache Linie nach Roboter mit Arduino

Extrem einfache Linie nach Roboter mit Arduino

Wir wollen in dieser Instructable eine einfache generische Linie nach Arduinobot zu bauen. Es werden eine Menge Raum für Kreativität in dieser Instructable.Der Roboter in diesem Tutorial wird von 4 AA-Batterien betrieben und ist in der Lage, schwarze
Arduino Line nach Roboter gesteuert

Arduino Line nach Roboter gesteuert

Dies ist eine Zeile nach Roboter die ich gemacht habe, mit einem Arduino (DFRduino), Ardumoto Schild, 6 X AA-Batterien, 4 X gelbe LEDs, 3 X LDRs und einige schwarzes Isolierband um meine (schmutzig) Küchenboden stecken.
Linie nach Roboter mit PID-Algorithmus

Linie nach Roboter mit PID-Algorithmus

Zeile folgende Roboter mit Solidworks konzipiert und umgesetzt mit Arduino, Ardumoto für die Kontrolle der Räder und eine Sensor-Bar mit 8 Infrarot-Sensoren. Hinterlassen Sie für Fragen zu dieser Linie folgen Sie bitte einen Kommentar oder Nachricht
Wie erstelle ich eine Linie nach Roboter

Wie erstelle ich eine Linie nach Roboter

Hallo Instructables,Dieses mein erstes Mal, so dass einen Roboter. In diesem instructable zeige ich Ihnen wie man eine Linie nach Roboter zu machen. Beachten Sie, dass dies ein instructable für Anfänger, die gerade einen Roboter für den Spaß am Lerne
Arduino Line Follower Roboter

Arduino Line Follower Roboter

Der Zweck der Linie nach Roboter:Es folgt die Strecke auf zwei verschiedene Arten.Weiße Linien auf schwarzem Hintergrund, eine schwarze Linie auf weißem Hintergrund Informationen über Roboter folgen folgen:Infrarot-Sensoren Dank an eine schwarze oder
LINUSBot - Line Follower Roboter - mit PID-Regelung

LINUSBot - Line Follower Roboter - mit PID-Regelung

LINUSBot - Line Follower Roboter - mit PID-RegelungLINUSBot - PID-RegelungDies ist eine Ergänzung zu den ersten "Instructables" von LINUSBot (Zeile nach Roboter).Jetzt hat der Roboter Bewegungskontrolle getan, indem ein PID-Regler, Steuern Sie,
Weltweit einfachste Linie nach Roboter

Weltweit einfachste Linie nach Roboter

Hier in diesem instructable ich werde Ihnen zeigen, wie die weltweit einfachste Linie nach Roboter machen. Einfachste in Bezug auf die Anzahl der verwendeten Teile und die Komplexität der Schaltung.Die meisten der Linie nach Roboter im Internet verwe
Arduino Licht nach Roboter

Arduino Licht nach Roboter

ÜbersichtDiese instructable nutzt drei Photowiderstände (leichte abhängige Widerstände) und ein Arduino, die Bewegung eines Roboters zu kontrollieren. Jedes gemeinsame Roboter Fahrgestell kann für den Roboter verwendet werden. Die Lichtsensoren werde
Den Arduino Line-folgende Roboter Bob

Den Arduino Line-folgende Roboter Bob

Für dieses Projekt werden wir einen einfachen Zeile nach Arduino Roboter bauen. Dieses Projekt wird ausgerichtet Anfänger aber diejenigen mit einer höheren Spielstärke in Elektronik und Codierung kann versuchen, ihre Hand an diesem Projekt. Sie werde
Arduino Line folgende Roboter für Anfänger

Arduino Line folgende Roboter für Anfänger

* Updated GREEN 8 / 2 4 / 2 GREEN 1 voidsetup() {   // a variable created in here doesn't exist in loop } voidloop() {   // a variable created in here doesn't exist in setup } Quelle einfügen möchten weitere Preise, Informationen und "Vorlagen"
Linie nach Auto mit Funk-Option

Linie nach Auto mit Funk-Option

Dies ist eine kleine Arduino gesteuert-Linie nach Auto. Grundlage des Sensors Abstand es kann geändert werden, um eine Breite der Linie im Rahmen des Zumutbaren zu folgen (1/2"- 5" in der Regel). Außerdem gibt es eine Option, um das Auto drahtlo
Einfach Arduino Licht nach Roboter

Einfach Arduino Licht nach Roboter

Dies ist eine Anleitung, wie man einen leichte folgenden Roboter mit Arduino, vereinfacht damit Anfänger können dieses Projekt zu versuchen. Dieses Projekt sollte Sie nur höchstens eine Stunde dauern. Ich hoffe, Sie genießen.Schritt 1: Materialien Ar
Wand nach Roboter mit 555 Timer

Wand nach Roboter mit 555 Timer

Bearbeiten:Dieser Roboter ist auch in der Roboter-Wettbewerb für die Altersgruppe 12-18.Vorwort:In diesem instructable ich die grundlegenden Ideen schreibt die ich verwendet, um eine Wand nach Roboter ohne jeden Mikrocontroller zu machen. Der Roboter