Hi damaltor,
danke für die Erklärung hab den Code auch noch ein wenig verfeinert, was die Msleep zeiten angeht das ganze sieht jetzt so aus.
Code:
#include "asuro.h"
#define WAIT1 200
#define WAIT2 400
#define SPEED 100
#define SPEED2 120
int main(void)
{
unsigned char a,b;
Init();
while(1)
{
a=PollSwitch();
b=PollSwitch();
if ((a==b)&&(b==1))
{
StatusLED (RED);
BackLED(OFF,ON);
FrontLED(ON);
MotorDir(RWD,RWD);
MotorSpeed(SPEED,SPEED);
Msleep(WAIT1);
FrontLED(OFF);
BackLED(OFF,OFF);
StatusLED(YELLOW);
MotorDir(RWD,FWD);
MotorSpeed(SPEED,SPEED);
Msleep(WAIT2);
}
else if ((a==b)&&(b==2))
{
StatusLED (RED);
BackLED(OFF,ON);
FrontLED(ON);
MotorDir(RWD,RWD);
MotorSpeed(SPEED,SPEED);
Msleep(WAIT1);
FrontLED(OFF);
BackLED(OFF,OFF);
StatusLED(YELLOW);
MotorDir(RWD,FWD);
MotorSpeed(SPEED,SPEED);
Msleep(WAIT2);
}
else if ((a==b)&&(b==4))
{
StatusLED (RED);
BackLED(OFF,ON);
FrontLED(ON);
MotorDir(RWD,RWD);
MotorSpeed(SPEED,SPEED);
Msleep(WAIT1);
FrontLED(OFF);
BackLED(OFF,OFF);
StatusLED(YELLOW);
MotorDir(RWD,FWD);
MotorSpeed(SPEED,SPEED);
Msleep(WAIT2);
}
else if ((a==b)&&(b==8))
{
StatusLED (RED);
BackLED(ON,OFF);
FrontLED(ON);
MotorDir(RWD,RWD);
MotorSpeed(SPEED,SPEED);
Msleep(WAIT1);
FrontLED(OFF);
BackLED(OFF,OFF);
StatusLED(YELLOW);
MotorDir(FWD,RWD);
MotorSpeed(SPEED,SPEED);
Msleep(WAIT2);
}
else if ((a==b)&&(b==16))
{
StatusLED (RED);
BackLED(ON,OFF);
FrontLED(ON);
MotorDir(RWD,RWD);
MotorSpeed(SPEED,SPEED);
Msleep(WAIT1);
FrontLED(OFF);
BackLED(OFF,OFF);
StatusLED(YELLOW);
MotorDir(FWD,RWD);
MotorSpeed(SPEED,SPEED);
Msleep(WAIT2);
}
else if ((a==b)&&(b>=25))
{
StatusLED (RED);
BackLED(ON,OFF);
FrontLED(ON);
MotorDir(RWD,RWD);
MotorSpeed(SPEED,SPEED);
Msleep(WAIT1);
FrontLED(OFF);
BackLED(OFF,OFF);
StatusLED(YELLOW);
MotorDir(FWD,RWD);
MotorSpeed(SPEED,SPEED);
Msleep(WAIT2);
}
else
{
BackLED(OFF,OFF);
FrontLED(OFF);
StatusLED (GREEN);
MotorDir(FWD,FWD);
MotorSpeed(SPEED2,SPEED2);
}
}
}
mfg
Erik
Lesezeichen