Hallo
Sinnvoll scheint mir das mehrmalige Einlesen des Tastenwertes und mit diesem Wert dann weiterzuarbeiten. Vermutlich wird ein Taster falsch berechnet (Dein K6 hatte doch nicht richtig funktioniert?). Jetzt zeigen die BackLEDs, welcher Taster als gedrückt erkannt wird:
Code:
#include "asuro.h"
int main(void)
{
char taste, taste2;
int z;
Init ();
FrontLED(ON);
StatusLED(OFF);
taste=PollSwitch();
while(1)
{
taste2=taste; // letzen Wert von Pollswitch() merken
taste=PollSwitch(); // neuen Wert einlesen
if((taste==taste2) && (taste>0)) // 2x gleicher Wert und eine Taste gedrückt?
{
if((taste & 0b110000) && !(taste & 0b001111)) // // nur K1 oder K2?
{
StatusLED(RED);
MotorDir(BREAK,RWD);
MotorSpeed(0,180);
for(z=0 ; z < 270 ; z++) Sleep(216);
}
else if((taste & 0b000011) && !(taste & 0b111100)) // K5 oder K6
{
StatusLED(GREEN);
MotorDir(RWD,BREAK);
MotorSpeed(170,0);
for(z=0 ; z < 270 ; z++)
{
if(PollSwitch() & 1) BackLED(OFF,ON); else BackLED(ON,OFF); // K5 oder K6 gedrückt?
Sleep(216);
}
}
else // Rest
{
StatusLED(YELLOW);
MotorDir(RWD,RWD);
MotorSpeed(170,180);
for(z=0 ; z < 270 ; z++) Sleep(216);
MotorDir(BREAK,RWD);
MotorSpeed(0,180);
for(z=0 ; z < 270 ; z++) Sleep(216);
}
}
else
{
BackLED(OFF,OFF);
StatusLED(OFF);
MotorDir(FWD,FWD);
MotorSpeed(170,170);
}
}
return 0;
}
(ungetestet)
Möglicherweise musst du deine Taster kalibrieren:
http://www.arexx.com/forum/viewtopic.php?f=19&t=1378
Gruß
mic
Lesezeichen