Ardumower Softwareanpassung

So wie versprochen hier die Anpassungen an der Software (1.0a5Azurit)

In der mower.cpp habe ich kleine Anpasungen vorgenommen.

motorAccel auf 500 reduziert. Mir hat es viel zu lange gedauert, bis der Mäher stillsteht.
Hierzu gibt es noch eine Anpassung in der pfod.cpp

Zudem habe ich die motorZeroSettleTime von 3000 auf 1000 geändert. Damit steht der Mäher schnell still und schiebt keine Hindernisse vor sich her, nachdem der Bumper aktiviert wurde (mower.cpp, Zeile 140)

Der verbaute Regensensor besteht aus zwei Messingkontakten. Durch Wasser werden diese leitend verbunden. Im Code musste ich den Pullup Widerstand des Pins aktivieren (mower.cpp, Zeile 387)

Anpassungen robot.cpp
In der Methode checkBumpers wird geprüft, ob ein Bumper ausgelöst wurde. Wenn der Bumper ausgelöst hat, wird zunächst die Geschwindigkeit langsam reduziert (motorAccel und motorZeroSettleTime) und dann zurück gesetzt. Dadurch werden Hindernisse weiter geschoben bzw. der Mower schiebt sich auf das Hindernis auf. Durch die zwei eingefügten Zeilen steht der Mower sofort still

Ich bewege den Mower oft im Manuellen Modus per BT (Schleife ist noch nicht verlegt). Wenn man manuell fährt und an ein Hindernis stößt, schiebt der Mower einfach weiter. Mir ist der Mäher dabei einmal an einem Hindernis hoch gestiegen und umgestürzt, die Messer liefen natürlich weiter. Durch diese kleine Anpasung steht der Mower auch bei manueller Fahrt still (robot.cpp, Zeile 2733)

Anpassungen pfod.cpp
Wie in der mower.cpp zu sehen, habe ich motorAccel auf 500 reduziert. Daher ist es auch nötig, in der pfod.cpp die Untergrenze des Sliders anzupassen (pfod.cpp, Zeile 300). Ich habe diese auf 100 gesetzt.

Wie erwähnt fahre ich oft manuell. Dabei hat mich immer gestört, dass der Mäher stets mit voller Geschwindigkeit unterwegs ist (mein Garten ist klein und verwinkelt). Zudem finde ich es störend, dass die „Stop“ Funktion abwechselnd bei dem Forward bzw Reverse Button erscheint, je nachdem wie schnell sich die Räder drehen. „Stop“ muss aus meiner Sicht immer möglich sein, egal wie schnell sich die Räder drehen. Durch meine Anpassungen an den Methoden sendManualMenu und processManualMenu ist der STOP Button jetzt nach unten gewandert und immer erreichbar.
Zudem kann man vorwärts wie rückwärts in zwei Geschwindigkeiten fahren:
– steht der Mäher still und man drückt Forward, geht es zunächst mit halber Geschwindigkeit los
– drückt man nochmal Forward, erhöht sich die Geschwindigkeit auf Max
– drückt man jetzt Reverse, reduziert sich die Geschwindigkeit wieder auf halbe Kraft.
– erneutes drücken auf Reverse verursacht einen Stop.

Rückwärts das gleiche Spiel. Wenn man eine Kurve gefahren ist und dann Forward oder Reverse drückt, geht es wieder mit halber Geschwindigkeit in die gewünschte Richtung

Damit fährt es sich schon ganz gut. Wenn der Mäher im Manuellen Modus an ein Hindernis stößt, bleibt er stehen. Da er aber nicht zurück setzt, bleibt der Bumper aktiviert und man bekommt ihn nur mit viel Geduld (oder einfaches zurückziehen) wieder frei. Als nächstes werde ich mich darum kümmern, dass der Mäher ein Stück zurück setzt, dann aber stehen bleibt (und nicht in eine Richtung weg dreht).