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;
}
 

2007 by Robotik-Projekt-Team