Also hier mein Programm:
Ist ein wenig durcheinander, aber der gedanke war der
das ich über den Pollswitch in einzelne Modi´s springe (Demomode, und steuern über Seriell) Ist aber noch nicht ganz fertig
Code:
#include "asuro.h"
#include "myasuro.h"
int x=0; //Zählvariablen für diverse Zählschleifen
char emfangene_daten[10];
void Goo(int d,int l) //eigene goturn anweisung
{ //Nur zum Test!!!!!!
if (l>0)
MotorDir(FWD,FWD);
else
MotorDir(RWD,RWD);
MotorSpeed(d,d+8); //die +8 sind nur zum gradeaus fahren
Msleep(5000);
MotorSpeed(BREAK,BREAK);
}
int main(void)
{
Init(); //Devinierter Zustand vom ATMEL
while(1)
{
while (PollSwitch() == 0)
{
StatusLED (GREEN);
Msleep (500);
StatusLED (RED);
Msleep (500);
}
switch (PollSwitch()) //Auswahlmenü gesteuert über Pollswitch
{
case 1:emfang();
break;
case 4: //Kleine Fahranweisung zu Demo zwecken.
StatusLED (YELLOW);
Msleep (2000);
EncoderInit ();
for (x=1; x<=4; x++) //Asuro fährt ein quadrat
{GoTurn ( 0, 45, 200); //45° hier entspricht 90° drehung im real, da "grobe" encoderscheibe eingebaut
GoTurn (150, 0, 200);}
Msleep(1000);
for (x=1; x<=2; x++) //Asuro fährt einen kreis vorwärts und rückwärts
{if (x==1)
GoTurn (300, 90, 255);
else
GoTurn (-300, -90, 255);
Msleep(500);}
break;
default: //Bei falscheingabe blinkt die Status LED 5x Gelb
for(x=1; x<=5; x++)
{StatusLED(OFF);
Msleep(500);
StatusLED(YELLOW);
Msleep(500);}
break;
}
return 0;
}
}
int emfang(void) //Steuerung über Seriel
{
EncoderInit ();
StatusLED (YELLOW);
BackLED (ON, OFF);
Msleep (500);
BackLED (OFF,ON);
Msleep (500);
BackLED (OFF,OFF); //AUS damit!!!!
SerWrite ("READY", 10);
SerRead (emfangene_daten, 1, 0); //Warte auf Daten, ohne timeout!!
switch (emfangene_daten[0])
{
case'T': //keine Daten erhalten
break;
case '1': //Wenn daten =1 fahr vor.
GoTurn(10, 0, 150);
break;
case '2': //wenn daten =2 fahr zurück
Goo (200, 1);
break;
default: //sonst sendefehler 5xgelb
for(x=1; x<=5; x++)
{
StatusLED(OFF);
Msleep(500);
StatusLED(YELLOW);
Msleep(500);
}
break;
}
return 0;
}
@ ExMachina: einen fehler durch die Radmuffe kann ich ausschließen, da es über Motorspeed keine probleme gibt. Nur bei GoTurn.
Aber danke für die Idee.
Lesezeichen