Zeitgesteuerte Ausführung
In der Loop-Funktion haben wir noch Code hinzugefügt, um die Temperaturmessung alle 30 Minuten durchzuführen. Die Zeitdauer von 30 Minuten wurde in der Konstanten PERIOD festgelegt.
Für die Zeitüberwachung benutzen wir die Variable sensortime:
static unsigned long sensortime = 0;
Das Static-Keyword sorgt dafür, dass der Wert der Variablen auch beim Verlassen der Funktion erhalten bleibt. Ihr Wert wird bei jedem Aufruf der Loop-Funktion mit der Anzahl an Millisekunden verglichen, die seit dem Start des Arduinos vergangen sind. Beim ersten Aufruf ist diese Bedingung immer erfüllt, weshalb der erste Temperaturwert direkt nach dem Start verschickt wird. Gleichzeitig wird in Millisekunden berechnet, zu welchem Zeitpunkt der nächste Aufruf erfolgen sollte. Dieser Wert wird in sensortime gespeichert.
if(millis() > sensortime) { sensortime = millis() + PERIOD * 60l * 1000l; sensors.requestTemperatures(); sendTemperature(thermometer); }
Nach der gleichen Logik arbeitet auch der Code in der loop()-Funktion, welcher dafür sorgt, dass die LED regelmäßig blinkt, wenn ein Fehler auftritt.
Jetzt zum Freizeitforscher werden
Mit dem Schaltungsaufbau und dem regelmäßigen Skriptaufruf ist alles beisammen, um an unserem großen Projekt teilzunehmen: Wie warm ist es in euren Büros?. Wir hoffen, dass möglichst viele Bastler mitmachen - jetzt vielleicht auch du?
In dieser Artikelserie sind bereits erschienen:
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Ethernet-Shield initialisieren |
Hallo, ich habe Interesse an so einem Temperatur Projekt auf Bluetooth Basis (Arduino...
Breadboard ist ja auch nur zum testen einer Schaltung da und nicht für Dauerbetrieb...
Damit geht's auch und kost' fast nix ;)