
 Zitat von 
damaltor
					
				 
				davor.
			
		 
	 
 Ok. :) (Warum? ;P)
Dadurch, das das ned so leer wirken soll. Poste ich mal meinen Code zum Linienverfolgen. :)
	Code:
	#include "asuro.h"
#define TRUE 1
#define FALSE 0
void pollswitch_richten(unsigned int a)
    {int b;
    for (b=0;b<=a;b++)
        {
        PollSwitch();              
        }             
    }
int vornefrei(void)  //sry fuers abkupfern, is aber ne gute idee so.. habs trotzdem kombiniert
	{
	char data[3];
	data[0]=PollSwitch();
	data[1]=PollSwitch();
	data[2]=PollSwitch();
	if ((data[0] == data[1]) && (data[1] == data[2]))
		{return data[0];}
	else return 0;
	}
	
void kollision(void)
	{unsigned int i;
	BackLED(ON,ON);
	MotorDir(BREAK,BREAK);
	for (i=0;i<=1000;i++)  //zu dem zeitpunkt, hatte ich noch ned die neue lib..
		{Sleep(72);}
	MotorDir (FWD,FWD); //motorkabeln verpolt..
	MotorSpeed (120,120);
	for (i=0;i<=1000;i++)
		{Sleep(72);}
	MotorDir(FREE,FREE);
	for (i=0;i<=200;i++)
		{Sleep(72);}
	MotorDir(BREAK,BREAK);
	for (i=0;i<=200;i++)
		{Sleep(72);}
	BackLED(OFF,OFF);
	
	}
	
	
	
int main(void)
{ int linedaten[2],diffR,diffR1,diffR2,diffR3;
  char flagL=FALSE;
  char flagR=FALSE;
    
    
  Init();
  StatusLED(RED);
  Msleep (2000);
  pollswitch_richten(20); //zum kondensator entladen
  StatusLED (YELLOW); 
  FrontLED (ON);
  while (vornefrei()==0) //hier den asuro auf ein weißes blatt stelln, damit man die liniendingsda kalibriern kann
        {
        LineData(linedaten); //irgendne taste drücken, wenn er dort war und beginnen kann
        diffR1= linedaten[0]-linedaten[1];
		diffR2= linedaten[0]-linedaten[1];
		diffR3= linedaten[0]-linedaten[1];
		diffR=(diffR1+diffR2+diffR3)/3;
		PrintInt(diffR);
        }
  Msleep(1000);
  while (1)           //jetz auf die linie stellen (asuro muss von linie "wegstarten")
        {
        StatusLED (GREEN);
        MotorDir (RWD,RWD); //motrenkabln sind falschherum angelötet.. ^^
        MotorSpeed (150,150);
        if ((linedaten[0] < (linedaten[1]+diffR)) && (flagL == FALSE))
           {
           MotorSpeed (200,150);
           flagL = TRUE;
           }
        if ((linedaten[0] < (linedaten[1]+diffR)) && (flagL == TRUE))
           {
           MotorSpeed (150,100);
           flagL = FALSE;
           }
        if (((linedaten[1]+diffR) < linedaten[0]) && (flagR == FALSE))
           {
           MotorSpeed (150,200);
           flagR= TRUE;                      
           }
        if (((linedaten[1]+diffR) < linedaten[0]) && (flagR == TRUE))
           {
           MotorSpeed (100,150);
           flagR= FALSE;                      
           }
		while (vornefrei()!=0)
			{
			kollision();
			}
		}
  
  return 0;
}
 Verbesserungsvorschläge? :)
Nachtrag:
Das Programm ist Mist. *gg*
Werde mich mal drannsetzen.
						
					
Lesezeichen