danke schon mal für die schnelle antwort leider hab ich jetzt noch ein problem :

ich hab den code mit dem besipiel code für geradeaus fahren kombiniert leider klappt das nicht ganz !!

Asuro soll solange gerade aus fahren mit der Odometrie auswertung und bei hinderniss rechts schwenken

so sieht der code derzeit aus : Leider taucht dabei immer folgender fehler auf :

test.c:68: error: parse error before "else"

was is falsch ??


#include "asuro.h"
#include <stdlib.h>

// Schwellwert fr die Hell/Dunkel-Unterscheidung
// Eventuell muss damit etwas variiert werden
#define TRIGGERLEVEL 800
#define HYSTERESIS 10
#define LOW 0
#define HIGH 1

int main(void)
{

Init();
DDRD |= (1 << DDD1); // Port D1 als Ausgang
PORTD &= ~(1 << PD1); // PD1 auf LOW



if (PIND & (1 << PD0))
{
StatusLED(GREEN); // freie Fahrt vorwärts
unsigned int data[2];
signed int status[2]={0,0};
signed int difference=0;
Init();
MotorDir(FWD, FWD);
while(1)

{
// Helligkeitswerte der Lichtschranken auslesen
OdometrieData(data);
// Wechsel linker Sensor von niedrig auf hoch?
if ((status[0]==LOW) && (data[0]>TRIGGERLEVEL+HYSTERESIS)) {
status[0]=HIGH;
difference++;
}
// Wechsel linker Sensor von hoch auf niedrig?
if ((status[0]==HIGH) && (data[0]<TRIGGERLEVEL-HYSTERESIS)) {
status[0]=LOW;
difference++;
}
// Wechsel rechter Sensor von niedrig auf hoch?
if ((status[1]==LOW) && (data[1]>TRIGGERLEVEL+HYSTERESIS)) {
status[1]=HIGH;
difference--;
}
// Wechsel rechter Sensor von hoch auf niedrig?
if ((status[1]==HIGH) && (data[1]<TRIGGERLEVEL-HYSTERESIS)) {
status[1]=LOW;
difference--;
}
// zur Sicherheit: verhindern, dass der Differenzz?ler
// den erlaubten Wertebereich verl?st
if (difference<-255) difference=-255;
if (difference>255) difference=255;

// Status-LED noch entsprechend der erkannten Segmente
// aufleuchten lassen, grn fr links, rot fr rechts
StatusLED(status[0]+status[1]*2);

// Z?ldifferenz passend auf die Motoren verteilen
if (difference>0) MotorSpeed(255-difference,255);
else MotorSpeed(255,255+difference);
}

else
{
StatusLED(RED); // Hindernis erkannt
MotorDir(BREAK, RWD);
MotorSpeed(0,200);
while(!(PIND & (1 << PD0))); // warten bis kein Hindernis voraus
Sleep(255); // noch etwas weiterschwenken
}
return 0;
}