Hallo,
Ich bin fange gerade erst mit der Programmierung des Asuros an. Ich versuche ein Programm für den Asuro zu schreiben, mit dem es möglich ist, 4 verschiedene Signale (für je 4 verschiedene Fahrtrichtungen) einer Fernbedienung zu speichern und auf diese später richtig zu reagieren. Leider funktionert dieses Programm noch nicht ganz. Kann mir vielleicht jemand helfen und mir sagen, was ich falsch gemacht habe?
Code:
 /*
NAME: Fernbedinung.c
Autor: Matthias Hüther
Beschreibung: Programm zur Steuerung der Asuros mittels einer TV-Fernbedienung.
				Es werden 4 Signale für je 4 Fahrtrichtungen gespeichert.
				Anschließend soll der Asuro auf die 4 Signale entsprechend reagieren.
*/


#include "asuro.h"

unsigned char right[20], left[20], fwd[20], back[20], signal[20];
int i, a;

void pre(void){
	for(i=0;i<=100;i++) Sleep(255);  //vorbeireiten auf neues signal
	MotorDir(BREAK,BREAK);
	StatusLED(RED);
	}
void checkok(void){			//bei erhalt des Signals blinken
	a = 3;
	while(a<=3){ 
      StatusLED(GREEN); 
      BackLED(ON,ON); 
      FrontLED(ON); 
      for(i=0;i<=40;i++) 
         Sleep(255);  
      BackLED(OFF,OFF); 
      FrontLED(OFF); 
      for(i=0;i<=40;i++) 
         Sleep(255); 
      a++; 
   } 
}

int main(void)
{
	Init();
	//lerne Signal für rechts
	MotorDir(FWD,RWD);
	MotorSpeed(250,250);
	pre();
	SerRead(right,20,0);
	checkok();
	
	//lerne Signal für links
	
	MotorDir(RWD,FWD);
	MotorSpeed(250,250);
	pre();
	SerRead(left,20,0);
	checkok();
	
	//lerne Signal für vor
	
	MotorDir(FWD,FWD);
	MotorSpeed(250,250);
	pre();
	SerRead(fwd,20,0);
	checkok();
	
	//lerne Signal für back
	
	MotorDir(RWD,RWD);
	MotorSpeed(250,250);
	pre();
	SerRead(back,20,0);
	checkok();
	
	while(1){
	//fahre auf signal
	pre();
	SerRead(signal,20,0);
	if(signal==right){
	StatusLED(GREEN);
	MotorDir(FWD,RWD);
	MotorSpeed(250,250);
	for(i=0;i<=100;i++) Sleep(255);
	}
	if(signal==left){
	StatusLED(GREEN);
	MotorDir(RWD,FWD);
	MotorSpeed(250,250);
	for(i=0;i<=100;i++) Sleep(255);
	}
	if(signal==fwd){
	StatusLED(GREEN);
	MotorDir(FWD,FWD);
	MotorSpeed(250,250);
	}
	if(signal==left){
	StatusLED(GREEN);
	MotorDir(RWD,RWD);
	MotorSpeed(250,250);
	}
	}
	return 0;
}
Gruß Mathbot