Hallo
Die PollSwitch()-Funktion "lügt" häufig, vor allem wenn die Tasten bei laufenden Motoren abgefragt werden. Die Chance dass ein falscher Wert genau 0 oder 32 ist ist bedeutend geringer als ein falscher Wert ==32 oder != 32.
Mehrfachabfrage der Tasten bei Motorstörungen:
Code:
#include "asuro.h"
#define FULL_L 80
#define FULL_R 60
/* vorwärts */
void MotorFwd(void)
{
MotorDir(FWD,FWD);
MotorSpeed(FULL_L,FULL_R);
}
/* rückwärts */
void MotorRwd(void)
{
MotorDir(RWD,RWD);
MotorSpeed(FULL_L,FULL_R);
}
/* bremsen */
void MotorStop(void)
{
MotorSpeed(0,0);
}
int main(void)
{
char t1, t2;
Init();
while(1)
{
t1=PollSwitch();
t2=PollSwitch();
if((t1==t2) && (t2==0))
{
MotorDir(FWD,FWD);
MotorSpeed(65,255);
}
if((t1==t2) && (t2==32))
{
MotorDir(FWD,FWD);
MotorSpeed(100,200);
}
if((t1==t2) && (t2==33))
{
MotorDir(RWD,RWD);
MotorSpeed(255,255);
Msleep(1000);
}
if((t1==t2) && (t2!=32))
{
MotorDir(RWD,RWD);
MotorSpeed(255,255);
Msleep(1000);
}
}
}
Gruß
mic
Lesezeichen