Hallo,
ich habe ein Programm geschrieben, bei dem sich der Asuro entweder nach rechts, oder links drehen soll.
Aber er springt immer bei switch nach TurnL, weil immer die linke backLed leuchtet. die werte, die PollSwitch zurüchgibt stimmen, die hab ich gemessen! Ich finde keinen Fehler!
so sieht das programm aus, vielleicht habe ich irgendwas übersehen:
Code:
 #include "asuro.h"

//Metoden
void TurnR (void);
void TurnL (void);

int main(void)
{
	//Inizialisieren
	Init();
	//Variablen
	unsigned char t1 = 0;
	unsigned char t2 = 0;
	unsigned char t3 = 0;
	// losfahren
	MotorDir(FWD, FWD);
	MotorSpeed(200, 200);	
	//endlosschleife
	while(1)
	{
	  //tastenabfrage
	  t1 = PollSwitch();
	  Sleep(10);
	  t2 = PollSwitch();
	  Sleep(10);
	  t3 = PollSwitch();
	  //tastenauswertung
	  switch (t1 && t2 && t3){
	    case 32: TurnR(); break;
	    case 16: TurnR(); break;
	    case  8: TurnR(); break;
	    case  4: TurnL(); break;
	    case  2: TurnL(); break;
	    case  1: TurnL(); break;
	    case  0: MotorDir(FWD, FWD); break;
	  };
	};
	//wegen int:
	return(0);
};

void TurnR (void)
{
  //variablen
  int i=0;
  //stueck zurueck
  MotorDir(RWD,RWD);
  for (i=0;i<50;i++)
    {Sleep(255);}
  //drehen
  MotorDir(FWD, RWD);
  for (i=0;i<50;i++)
    {Sleep(255);}
  BackLED(OFF,ON);
};

void TurnL (void)
{
  //variablen
  int i=0;
  //stueck zurueck
  MotorDir(RWD,RWD);
  for (i=0;i<50;i++)
    {Sleep(255);}
  //drehen
  MotorDir(RWD, FWD);
  for (i=0;i<50;i++)
	{Sleep(255);}
  BackLED(ON,OFF);
};
schonmal danke für die hilfe
Chrissi