Dies ist Teil 5 über den Bau eines Geocache Transposed (GCT), einer verschlossenen Box, die nur an einem geheimen Ort geöffnet wird. Der folgende Beitrag zeigt ein paar Details zum Ablauf der Software auf dem Mikrocontroller. Teil 1 der Serie ist hier zu finden: GCT Teil 1

Ein Arduino-Programm besteht typischerweise aus zwei Hauptteilen: dem Setup, das einmal beim Einschalten aufgerufen wird, und der Schleife, die wiederholend bis zum Ausschalten aufgerufen wird.

Setup

Die Initialisierung ist denkbar einfach: Den korrekten Modus aller Ausgabepins einstellen, die dedizierte serielle Verbindung aktivieren (zum Senden von Debug-Meldungen an einen angeschlossenen PC) und die seriellen Softwareverbindungen zum LCD und GPS-Gerät. Das LCD wird nach dem Herstellen der Verbindung zurück gesetzt.

Schleife

Das Verhalten der Box ist in verschiedenen Phasen organisiert, die jeweils durch einen Wert in der aktuellen Phasenvariablen gesteuert werden. Die Switch-Anweisung in der Loop-Methode ruft die aktuelle Phase auf. Falls etwas schief geht, schaltet eine if-Anweisung am Ende der Schleifen die Box nach zehn Minuten ab.

INIT Phase: Die erste Phase gibt eine Willkommensmeldung auf dem LCD-Bildschirm aus, die Anzahl der Versuche und die Nummer des aktuellen Ziels. Die Nachricht kann an eine eigene Version angepasst und an lcdSerial gesendet werden. Der Zähler der Versuche wird bereits hier erhöht, so dass, wenn die Box ausgeschaltet wird oder das GPS kein Signal findet, der Versuch trotzdem gezählt wird. Wenn die Anzahl der maximalen Versuche bereits überschritten ist, zeigt das Feld eine Meldung an und die Box schaltet sich aus.

SEARCHGPS: In dieser Phase wird versucht, einen gültigen GPS-Fix zu erhalten. Wird nach 3 Minuten kein Signal gefunden, z.B. wenn die Box im Haus aktiviert wird, schaltet diese sich aus, um Strom zu sparen (Phase NO_GPS).

EVALPOS: Wenn ein Koordinatenpaar vom GPS-Gerät geliefert wurde, wird zunächst die Entfernung zu den geheimen Heimatkoordinaten berechnet. Befindet sich die Box in der Nähe dieser Koordinaten, öffnet sich das Schlüsselfach für einige Sekunden, bevor es wieder geschlossen und alle Zähler zurückgesetzt werden. Die Box ist nun bereit, um das Abenteuer wieder zu starten. Andernfalls wird der Abstand gegen die aktuellen Sollkoordinaten und die angegebene maximale Abweichung um diese Koordinaten geprüft. Alle Entfernungsberechnungen werden mit der Haversin-Formel (https://en.wikipedia.org/wiki/Haversine_formula) durchgeführt, die auch bei kleinen Entfernungen eine gute Genauigkeit gewährleistet.

Wenn die aktuelle Position nicht dem aktuellen Ziel entspricht, wird die Entfernung dahin ausgegeben und die Box schaltet sich aus. Wenn die richtige Position gefunden wurde, wird dies angezeigt, und daran anschließend die Entfernung zum nächsten Ziel, die Anzahl der verbleibenden Versuche und eine Abschaltungsmeldung. Wenn es das letzte Ziel der Sequenz war, wird die Box geöffnet.

UNLOCK: Endlich geschafft. Die Box öffnet sich nach einigen Sekunden und ermöglicht den Zugang zum Schlüssel des Vorhängeschlosses.