Hallo liebe Community,

ich wollte ein Programm für meinen ASURO schreiben, dass ein Hindernis mit Hilfe der Taster erkennt und diesem Ausweicht.
Jetzt stehe ich aber vor einem Problem mit den Tastern!

Code:
#include "asuro.h"
#include "myasuro.h"

#define SPEED 0xC8

void Drehung(int speed_left, int speed_right);

int main(void)
{
	unsigned char t1, t2;
	Init();
	
	while(1)
	{
		StatusLED(GREEN);
		FrontLED(ON);
		BackLED(OFF, OFF);
		MotorDir(FWD, FWD);	
		MotorSpeed(SPEED, SPEED);
		
		StartSwitch();
		while(!switched);
		
		t1 = PollSwitch(); t2 = PollSwitch();
		if(t1 < K4 && t2 < K4) Drehung(0x00, SPEED);
		else if(t1 > K3 && t2 > K3) Drehung(SPEED, 0x00);
		
		switched = FALSE;
	}
	return 0;
}

void Drehung(int speed_left, int speed_right)
{
	MotorDir(BREAK, BREAK);
	StatusLED(YELLOW);
	Msleep(500);
	FrontLED(OFF);
	MotorDir(RWD, RWD);
	MotorSpeed(SPEED, SPEED);
	int i;
	for(i=0; i < 4; i++)
	{
		BackLED(OFF, ON);
		Msleep(200);
		BackLED(ON,OFF);
		Msleep(200);
	}
	BackLED(ON, ON);
	MotorSpeed(speed_left, speed_right);
	Msleep(500);
	MotorDir(FREE, FREE);
	Msleep(500);
}
Das Programm funktioniert solange korrekt, bis ein erstes Mal die Taster betätigt werden. Danach denkt der Asuro es werden permanent weiter Taster gedrückt.
Das Problem muss allerdings an dem Aufruf der Funktion "Drehen" liegen, da ich als Test diese durch einen einfachen Farbentausch der StatusLED ersetzt habe und dies funktionierte dann auch korrekt...

Mir ist bewusst, das der ASURO sehr empfindlich auf die Taster reagiert, wenn die Motoren dabei ins Spiel kommen. Aber wie ihr sehen könnt habe ich mit der variable "switched" und zweifacher Abfrage von PollSwitch() gearbeitet. Somit müsste doch eigentlich ein Fehler vermieden werden, oder?

Ich freue mich auf jede Antowert,

Max