Hallo 
Ich hab meinen Asuro ROLF genannt ^^
Ich bin momentan dabei, ihn etwas leben einzuhauchen indem ich erm selbständig irgenetwas machen lasse, aber da das ganze noch in seinem anfangsstadium ist... und ich erst seit kurzem in C programmiere... ist mein Quellcode auch dementsprechend schlecht ^^
Ich möchte alles in funktionen aufteilen, die ich abrufen kann wann mir gerade lustig ist. Ich möchte auch später einen zufallsgenerator einbaun, der diese funktionen zu unterschiedlichen zeiten und zu unterschiedlichen längen ausführt. Um etwas Leben einzubringen ^^
Somit habe ich angefangen eine funktion zu schreiben die es Rolf erlaubt eine gewisse zeit auf Kollisionskurs zu gehen... nur scheinbar gibt es probleme mit der forschleife die kontrolliert, ob rolf noch rumspielen darf...
Der Wartemode (led rumblinken lassen) funktioniert noch
Vielleicht kann ich auch keine funktionen in funktionen einbinden, wie gesagt, kenn mich in C überhaupt nicht aus ^^
Hier ersteinmal der Code:
Code:
#include "asuro.h"
void erwarten(unsigned char male); //Rufe Wartemodus ab
void collusion(unsigned int lang); //Rufe Collusion ab
int main(void)
{
Init();
//Ab hier beginnt Rolf zu "Leben"
//Morgenmassage senden
SerPrint("\r\nMuah... muss ich aufstehen?\r\n");
//Rolf wartet erstmal ab
erwarten(1);
//Rolf startet Kollusionsfahrt
collusion(10000);
return 0;
}
//Funktionen
//Rolf wartet auf etwas
void erwarten(unsigned char male) {
unsigned int i;
for (i = 0; i <= male; i++)
{
Msleep(500);
StatusLED(GREEN);
Msleep(10);
BackLED (OFF, ON);
Msleep(500);
StatusLED(OFF);
Msleep(10);
BackLED (ON, OFF);
Msleep(500);
BackLED (OFF, ON);
Msleep(500);
BackLED (ON, OFF);
if (i == male) BackLED (OFF, OFF); //Schalte Alles ab wenn am ende
}
}
//Rolf vorwaerts
void FWARD(void)
{
FrontLED (ON); //Kuendige Anfahren an
Msleep(300);
FrontLED (OFF);
Msleep(150);
FrontLED (ON);
Msleep(300);
FrontLED (OFF);
MotorDir(FWD,RWD); //Beide Motoren vorwaerts
MotorSpeed(150,150); //Los gehts
}
//Rolf rueckwaerts
void RWARD(void)
{
MotorDir(RWD,FWD); //Beide Motoren rueckwearts
MotorSpeed(120,120); //Los gehts
}
//Rolf rueckwaerts links
void RWDL(void)
{
MotorDir(RWD,FWD); //Beide Motoren rueckwearts
MotorSpeed(120,0); //Los gehts
}
//Rolf rueckwaerts rechts
void RWDR(void)
{
MotorDir(RWD,FWD); //Beide Motoren rueckwearts
MotorSpeed(0,120); //Los gehts
}
//Rolf stoppen
void STOP(void)
{
MotorSpeed(0,0);
}
//Rolf kollusionsprogramm
void collusion(unsigned int lang)
{
unsigned char t1, t2;
unsigned long zeit;
t1 = PollSwitch();
t2 = PollSwitch();
for (zeit = Gettime(); zeit > zeit + lang;)
{
if (t1 == 0 && t2 == 0) //Keine Taste gedrueckt, Rolf feahrt vorwaerts
{
FWARD(); //Auf gehts
}
else if (t1 && t2 && t1 == t2)
{
STOP(); //Stoppen
if (t1 & 0x07) //Linke tasten beruehrt
{
RWDL(); //LinksRueckwaerts ausweichen
}
if (t1 & 0x38) //Rechte tasten beruehrt
{
RWDR(); //RechtsRueckwearts ausweichen
}
Msleep(1000); //Eine Sekunde rueckwarts fahren
}
}
}
Würde mich für Ratschläge wirklich freuen... da ich glaube auf keinen gescheiten Pfad zu kommen ^^
Mit freundlichen Güßen
Hardy
Lesezeichen