Hallo,

bei der Subsumptionsarchitektur darf nur an EINER Stelle auf die eigentliche Hardware zugegriffen werden damit die anderen Verhalten unterdrükt werden können.
Du machst das allerdings mindestens an einer Stelle auch in einem der Verhalten:


void behaviour_end(void)
{
if(adcLSL >= LIGHT_MAX || adcLSR >= LIGHT_MAX)
{
moveAtSpeed(0,0); // <<<<------------------- Böse!

Ausserdem gibst Du bei JEDEM Aufruf des Behaviourcontrollers den kompletten Inhalt des LCDs neu aus... das sollte man nicht tun,
das kostet jede Menge Rechenzeit und sorgt so für trägere Reaktion. Also nur ausgeben wenn sich was ändert, oder wenigstens mit
ner Stopwatch nur alle 100ms oder so aktualisieren.
Schau Dir die Funktion "displayBehaviour" in Move2 an.


MfG,
SlyD