Hallo
Ich habe deinen Beitrag in einen neuen Thread verschoben und dein Programm etwas umgestellt:
Code:
#include "asuro.h"
unsigned int data[2]; //Speicher bereitstellen
unsigned char t1, t2;
/* Motor vorwärts */
void MotorFwd(void)
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
}
/* Motor rückwärts */
void MotorRwd(void)
{
MotorDir(RWD,RWD);
MotorSpeed(160,150);
}
/* Motor rückwärts Links */
void MotorRwdL(void)
{
MotorDir(RWD,FWD);
MotorSpeed(150,140);
}
/* Motor rückwärts Rechts */
void MotorRwdR(void)
{
MotorDir(FWD,RWD);
MotorSpeed(140,150);
}
/* Motor stop */
void MotorStop(void)
{
MotorSpeed(0,0);
}
int main(void)
{
Init();
StatusLED(RED);
SerWrite("HALLO-Los geht´s!!!\n\r",21);
FrontLED(ON); // Linienbeleuchtung einschalten
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
while(1)
{
// Endlosschleife, ASURO soll beliebig lang einer Linie nachfahren
LineData(data); // aktuelle Helligkeitswerte der Fototransistoren einlesen
if (data[0] > data[1] ) // links heller als rechts...
{MotorSpeed(200,150);} // ... dann links mehr Gas geben...
else
{MotorSpeed(150,200);} // ... sonst rechts mehr Gas geben!
t1 = PollSwitch();
t2 = PollSwitch();
if((t1 == 0) && (t2 == 0)) /* keine Taste */
{
MotorFwd(); /* vorwärts fahren */
FrontLED(ON);
BackLED(OFF,OFF);
}
else if (t1 && (t1 == t2))
{
MotorStop();
Msleep(300);
if(t1 & 0x07) /* Tasten links gedrückt? 0b00000111 */
{
MotorRwdL(); /* Rückwärtskurve links fahren */
FrontLED(OFF);
BackLED(ON,OFF);
}
if (t1 & 0x38) /* Tasten rechts gedrückt? 0b00111000*/
{
MotorRwdR(); /* Rückwärtskurve rechts fahren */
FrontLED(OFF);
BackLED(OFF,ON);
}
Msleep(1000); /* 1 Sekunde fahren */
}
}
return 0;
}
Ich habe es aber nicht getestet.
Gruß
mic
Lesezeichen