Schritt 3: Der Zeitnehmer
Also zog ich auf die Real Time Clock Teil des Puzzles. An dieser Stelle ist es diskussionswürdig, warum gibt es eine RTC in der Schaltung. Ein Ansatz zur Lösung meines Problems wäre, schicken Sie einfach einen rohe Zähler aus dem Arduino und dann alle die Schwerarbeit auf der Empfängerseite. Aber nach einigem Nachdenken mochte ich die Idee, die ich verwenden könnte die Batterie als Speicher für mein Counter RAM auf die DS1307 gesichert und, dass mein "Datenpaket" in der Lage wäre, die Zeit zu übertragen, die Anzahl die korrekt war. Dies mag wie eine merkwürdige Entscheidung, aber ich denke auf lange Sicht sein gehen um mich gut zu bedienen.
Die DS1307 ist ein i2c-Gerät und es gibt eine Reihe von Artikeln über das Gerät im Internet (wie auch die Anbindung an ein Arduino), also werde ich nicht auf die Ins und Outs des Gerätes konzentrieren. Stattdessen werde ich veranschaulichen eine Falle stieß ich auf und das spätere Design ging ich für.
Meine ursprüngliche Idee war, die DS1307 RAM zu haben, werden im Store für den Zähler und, während die Interrupt-Routine würde ich lesen und dann den Zähler zu aktualisieren Behandlung. Jedoch entdeckte ich, dass während die Wire Library in Arduino wirklich nützlich ist es in einer Interrupt-Routine nicht funktioniert (was in Ordnung ist).
Meine zweite Ansatz, die funktionierte, war einen Zähler in die Arduino-RAM und dann, nach einer konfigurierten Verzögerung in der Hauptschleife, schreiben den Wert in den DS1307 RAM.
Das Schaltbild zeigt die Anschlüsse für die DS1307 und wie ich es angeschlossen, bis zu dem Arduino (beachten Sie, dass die Futurlec Mini-Board habe ich bereits die benötigten Pull-up-Widerstände und daher werden sie im Diagramm nicht angezeigt).
So, jetzt hatte ich den zweiten Baustein im Ort. Ich hatte ein Mittel zur Erfassung, ein Datum und Uhrzeit sowie einem Gegenwert von einer Interruptroutine aktualisiert.