@ Andreas:
Wie schon gesagt in ein Privat Bericht. Wenn einer nicht kann, (in meinen Fall essen muss), kann eine andere Person (weiter) helfen.
[EDIT] Sorry Markusj: ... mehrere Personen...
Wie Radbruch schon festgestellt hat. Die Main anrufen am ende dein Hindernis-Funktionen sind nicht notwendig. Wieso du sie dort rein geschrieben hast ist mich nicht ganz klar. Wenn es dein Lösung ist wieder zurück ins Main Hauptprogramm zu gelangen, dann ist das begreiflich aber auch falsch. Zurückkehren zum Hauptprogramm nach Abenden einer Funktion geht in den C-sprache automatisch. Den Prozessor speichert erst die Instruktion-stelle im RAM wo es bis jetzt gekommen ist. Dann wird die Stelle von den Angerufen Funktion in den Instruktion-zeiger Register geladen, womit die Funktion eigentlich gestartet wird. Am ende von den Instruktionen einer Funktion wird ein Spezielle Return-instruktion zugefügt. Das holt wieder die alte Instruktion-stelle von das Hauptprogramm aus das RAM-speicher, und wird wieder im Instruktion-Zeiger Register gesetzt. Dann geht es weiter wo es geendet war.
Die Mehrfachabfrage von PollSwitch ist notwendig weil die Motoren kleine Störungen verursachen können in den Taster-messungen. (Aber vielleicht auch bei die andere Analoge Messungen). Also könnte es passieren das PollSwitch falsch >0 bemerkt wenn die Tastern nicht geprellt sind. Damit wir das raus Filtern können, kontrollieren wir ob die Taster-messung ein Stabile Zustand hat.
In dein:
Code:
...
if(Switch<=7){
BackLED(OFF,ON);
hindernis_rechts();
}
else
BackLED(ON,OFF); // Wird hier die if-else Zweig abgebrochen, wegen die Punkt-Comma. Hindernis_links() wird jedenfals ausgeführt, unabhängig von Switch
<=7 oder >7
hindernis_links();
...
Wenn hindernis_links ausgeführt werden soll wenn Switch>7 ist, solltest du das zwischen {} klammern setzen. Aber das bist du vermutlich nur vergessen.
Lesezeichen