Ich habe folgendes Programm für meinen Asuro geschrieben, jedoch find ich den/die Fehler im Quelltext nicht warum es sich nicht mit der makeall übersetzen lässt.
Einen Fehler im Makefile kann ich ausschließen.
Vielen Dank für eure Hilfe
Florian
PS: Was bedeutet das /* ..... */
Code:
#include "asuro.h"
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;
}
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();
}
}
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;
int Lold;
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++;}
}
}
Lesezeichen