hab mal ne frage.. und zwar hab ich ein programm wo der asuro rückwärts fährt sobald seine taster gedrückt sind... bei den rechten drei tastern fährt er rückwärts links und bei den linken soll er rückwärts rechts fahren... rechts ist ok aber links gehen nur die äußersten und der rechte taster von der linken seite (manoman^^) macht das, was die rechten taster machen! hier mal der code:
Code:
#include "asuro.h"
/* Um eventuelle Unterschiede zwischen linken und rechtem Motor auszugleichen
* definieren wir 2 Werte für fullspeed links und rechts
*/
#define FULL_L 250 /* Fullspeed linker Motor */
#define FULL_R 250 /* Fullspeed rechter Motor */
/* Motor vorwärts */
void MotorFwd(void)
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
}
/* Motor rückwärts */
void MotorRwd(void)
{
MotorDir(RWD,RWD);
MotorSpeed(50,50);
}
/* Motor rückwärts links */
void MotorRwdL(void)
{
MotorDir(RWD,RWD);
MotorSpeed(175,100);
}
/* Motor rückwärts rechts */
void MotorRwdR(void)
{
MotorDir(RWD,RWD);
MotorSpeed(100, 175);
}
/* Motor stop */
void MotorStop(void)
{
MotorSpeed(0,0);
}
int main(void)
{
unsigned char t1, t2;
Init();
while(1)
{
t1 = PollSwitch();
t2 = PollSwitch();
if(t1 == 0 && t2 == 0) /* keine Taste */
{
MotorFwd(); /* vorwärts fahren */
FrontLED(ON);
BackLED(OFF,OFF);
}
else if (t1 && t2 && t1 == t2)
{
MotorStop();
if(t1 & 0x07) /* Tasten links gedrückt? <<<HIER LIEGT DAS _ PROBLEM!!!*/
{
MotorRwdL(); /* Rückwärtskurve links fahren */
FrontLED(OFF);
BackLED(ON,OFF);
}
if (t1 & 0x38) /* Tasten rechts gedrückt? */
{
MotorRwdR(); /* Rückwärtskurve rechts fahren */
FrontLED(OFF);
BackLED(OFF,ON);
}
Msleep(750); /* zeit zum rückwärtsfahren egal ob links oder rechts Msleep(1000) = 1sekunde*/
}
}
return 0;
}
BITTE HELFT MIR! MfG, The-BooN-
Lesezeichen