Hi inka,
dem Glückwunsch zum "Etappensieg" schließe ich mich gern an.
Man kann so was machen, allerdings muss ...ich habe das beispiel "RP6Control_10_Move2.c" in der mainschleife mit dieser funktion ergänzt (spannungsabfrage über die multiIO)
a) die Hauptschleife ohne Verzögerungen (d.h. ohne mSleep) ablaufen und
b) man kann nicht auch noch eine längere Suche nach der Bake dort durchführen (bake_suche).
Grund: Die weiteren Programmfunktionen reagieren dann kaum noch.
Der "Bumpers Event handler" (bumpersStateChanged) wird angesprungen, wenn sich der Bumper-Zustand ändert.Ich muss jetzt noch prüfen nach welcher funktion jetzt die reaktion auf die bumper erfolgt,...
Wie du schon gesagt hast, passiert die Reaktion auf Bumper-Änderungen in der behaviour_escape Funktion.
Grundsätzlich zeigt die Demo "RP6Control_10_Move2.c", wie man "Verhalten" (behaviour) programmieren kann.
Die Demo:
1. Warte bis ein Geräusch gehört wird (behaviour_waitForStart).
2. Fahre dann herum (behaviour_cruise).
3. Weiche Hindernissen aus (behaviour_escape).
4. Vermeide Hindernisse (behaviour_avoid).
5. Achte auf leere Batterie (behaviour_checkLowBattery)
6. Gehe zu 2.
Die Demo ist eigentlich ideal für dein Vorhaben, das du ja auch in verschiedenes "Verhalten" aufteilen könntest:
1. Mache was (Herumfahren).
2. Achte auf leere Batterie.
3. Falls leer: Suche Bake
4. Fahre auf schwarzer Linie zur Ladestation
5. Lade Akku
6. Gehe zu 1.
Das bedeutet in der Demo:
Du müßtest eigene "Verhalten" (behaviours) nach dem Vorbild in der Demo schreiben. Dazu müßtest du z.B. auch die Rangfolge der Verhaltensweisen (siehe behaviourController) festlegen.
Das ist zwar nicht ganz einfach, aber es ist leider nicht damit getan, deine Funktionen (Akku überwachen, Bake suchen, auf der Linie zur Ladestation fahren ...) in die Hauptschleife dieser Demo zu packen.
Lesezeichen