Hallo
Wenn du eine eigene Funktion aufrufst muss sie zuvor bekannt gemacht werden:
Code:
#include "asuro.h"
void Testfahrt(void)
{
unsigned char s1=100,s2=100;
MotorSpeed(150,150);
MotorDir(FWD,FWD);
while (1)
{
if (Wheelspeed[0]<150)s1++;
if (Wheelspeed[0]>160)s1--;
if (Wheelspeed[1]<150)s2++;
if (Wheelspeed[1]>160)s2--;
Msleep(2);
MotorSpeed(s1,s2);
}
}
void Abgrund(void)
#define STOP 200
{
unsigned int lineData[2];
unsigned char running = 1;
MotorDir(FWD,FWD);
FrontLED(ON);
MotorSpeed(255,255);
do
{
LineData(lineData);
if ((lineData[0] < STOP) || (lineData[1] < STOP))
{
MotorSpeed(0,0);
BackLED(ON,ON);
running = 0;
}
}
while (running);
while(1);
}
void Geradeaus(void)
{
int Lnow;
int Rnow;
int Rold=0;
int Lold=0;
int Count;
int sl;
int sr;
unsigned int data[2];
Count=0;
sl=120;
sr=120;
while(1){
MotorDir(FWD,FWD);
MotorSpeed(sl,sr);
OdometrieData(data);
if (data[0] > 512) Lnow = 1; else Lnow = 0;
if (data[1] > 512) Rnow = 1; else Rnow = 0;
if (Lnow ^ Lold) Count++;
if (Rnow ^ Rold) Count--;
Lold=Lnow;
Rold=Rnow;
if (Count>0) {sr++;}
if (Count<0) {sr--;}
if (sr>254){sr=255; sl--;}
if (sr<61){sr=60; sl++;}
}
}
void Programme (void)
{
unsigned char sw;
SerPrint("Hello I am ASURO");
for (;;)
{
sw = PollSwitch();
if (sw == 0x01) Geradeaus();
if (sw == 0x02) Abgrund();
//if (sw == 0x04) L1();
//if (sw == 0x08) L2();
//if (sw == 0x16) L3();
//if (sw == 0x32) L4();
}
}
int main(void)
{
// unsigned int i,data[2];
// unsigned char count = 0,flag = 0;
Init();
/*
for (i = 0; i < 0x1FFF; i++)
{
OdometrieData(data);
if ((data[0] < 200) && (flag == 1))
{
count ++;
flag = 0;
}
if (data[0] >= 600) flag = 1;
}
if (count > 10) Programme();
*/
while (1)
{
if (PollSwitch())
{
while (PollSwitch());
Programme();
}
Testfahrt();
}
return 0;
}
Umgestellt und Main() wird kleingeschrieben, SerPrint() und WheelSpeed() kann ich nicht prüfen. Rold und Lold initialisiert. Besser kann ich's nicht, weil ich nicht die aktuelle Version der Lib installiert habe.
Code:
#include "asuro.h"
void a(void) // Deklaration und Definition (Bekanntmachung und Definition)
{
}
void b(void) // dito
{
a();
}
void c(void); // Deklaration
int main(void)
{
Init();
a();
b();
c();
while (1);
return 0;
}
void c(void) // Definition
{
a();
b();
}
Ich hoffe, das stimmt so.
Gruß
mic
Lesezeichen