Zurück zur Übersicht | Quellcode herunterladen (linefollow.c)
/*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * any later version. * ***************************************************************************/ /* Der ASURO folgt einer schwarzen Linie. Die Sensoren werden ausgewertet und mit einem voreingestelltem Wert verglichen. Solange der aktuelle Wert kleiner ist, fährt ASURO geradeaus. Wird der aktuelle Wert des rechten Sensors größer als der vorgegebene, versucht der Roboter durchs Fahren einer Linkskurve auf die Linie zurückzukommen. Analog funktioniert es auch links. */ #include "asuro.h" int main(void) { Init(); while(1) { int line_data[2]; LineData(line_data); // line_date[0]: linker Sensor, [1]: rechter Sensor // schwarzer Untergrund: kleine Werte; heller Hintergrund: große Werte FrontLED(ON); // liefert bessere bzw. konstrastreichere Werte int limit = 45; // Dieser Vergleichswert ist an die Lichtverhältnisse anzupassen int speed = 120; int debug_mode = 0; // 0: aus; 1: an, ASURO sendet die Werte der Sensoren zurück while (line_data[1] > limit) { if (debug_mode) { SerWrite("rechts\r\n", 8); PrintInt(line_data[1]); SerWrite("\r\n", 2); } BackLED(OFF, ON); MotorSpeed(0, speed); LineData(line_data); } while (line_data[0] > limit) { if (debug_mode) { SerWrite("links\r\n", 7); PrintInt(line_data[0]); SerWrite("\r\n", 2); } BackLED(ON, OFF); MotorSpeed(speed, 0); LineData(line_data); } MotorDir(FWD, FWD); MotorSpeed(speed, speed); } return 0; }