Chassis met lijnvolging voor Arduino
FunduinoLaatst bijgewerkt op
Ein Roboterfahrzeug einer schwarzen Linie folgen lassen
Material
Voraussetzung: das Chassis ist montiert
Aufbau
Wie die Linienverfolgung funktioniert
Der Sketch
Sketch: der Linie folgen
int GS = 200; // Geschwindigkeit der Motoren. Moeglich sind Werte von 0 bis 255.
int DWert; // Variable fuer den ausgelesenen digitalen Wert
// Gleichstrommotor 1 = LINKS
int GSM1 = 10; // Enable-Pin: steuert die Drehgeschwindigkeit des linken Motors
int in1 = 9; // Ueber in1 und in2 wird die Drehrichtung des linken Motors gesteuert
int in2 = 8;
// Gleichstrommotor 2 = RECHTS
int GSM2 = 5; // Enable-Pin: steuert die Drehgeschwindigkeit des rechten Motors
int in3 = 7; // Ueber in3 und in4 wird die Drehrichtung des rechten Motors gesteuert
int in4 = 6;
int Sensor = 2; // Pin, an dem der Liniensensor ausgelesen wird
void setup()
{
Serial.begin(9600);
pinMode(GSM1, OUTPUT);
pinMode(GSM2, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(Sensor, INPUT);
}
void loop()
{
DWert = digitalRead(Sensor); // Digitalen Wert am Sensor auslesen
// Zur Kontrolle: der Wert wird an den Seriellen Monitor geschickt
Serial.print("Wert: ");
Serial.println(DWert);
if (DWert == 1) // Weisser Untergrund erkannt ...
{
// ... dann laeuft nur der linke Motor und das Fahrzeug dreht nach rechts,
// also zurueck in Richtung Linie.
analogWrite(GSM1, GS);
digitalWrite(in1, HIGH); // Vorwaerts. Rueckwaerts waere in1 LOW und in2 HIGH.
digitalWrite(in2, LOW);
// Der rechte Motor steht still: beide Richtungspins auf LOW.
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
if (DWert == 0) // Schwarzer Untergrund erkannt ...
{
// ... dann laeuft nur der rechte Motor und das Fahrzeug dreht nach links,
// also wieder an die Kante der Linie heran.
analogWrite(GSM2, GS);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// Der linke Motor steht still.
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}
}Handleiding beoordelen