Die Temperatur soll mittels eines OneWire Sensors DS18B20 der Firma Dallas gemessen werden. Bei dem Sensor handelt es sich um einen Sensor in einem TO92 Gehäuse, der mit sehr geringem Aufwand ausgelesen werden kann. Es können außerdem mehrere Sensoren an einem Bus zusammen geschaltet und ausgewertet werden. Jeser Sensor wird vom Hersteller mit einer eindeutigen Seriennummer ausgestattet.
Im ersten Schritt wollen wir die Temperatur eines Sensors auslesen und auf der Konsole unseres Mikrocontrollers ausgeben.
Um die Messwerte des Sensors lesen zu können, müssen wir das OneWire Subsystem zuerst initialisieren. Dazu verwenden wir folgenden Blockbaustein:
Damit der oder die Sensoren gefunden werden können, muss der richtige Port angegeben werden. In unserem Fall ist das der Port D4
Nach dem Initialisieren des OneWire Bus müssen wir auf dem Bus nach Geräten suchen. Diese Funktion übernimmt der Blockbaustein
Das Ergebnis, also die Liste der gefundenen Sensoren schreiben wir in eine Variable mit dem Namen onewire_device. Danach starten wir den Vorgang, um die Sensoren auszulesen. Da die Sensoren einige Zeit benötigen, um ein gültiges Ergebnis zu liefern, warten wir 750 Milisekunden, bevor mit dem nächsten Schritt fortfahren.
Im weiteren Verlauf unseres Programms lesen wir für jeden Sonsor den Temperaturwert aus und schreiben ihn auf die Konsole des Mikrocontrollers. Das gesamte Programm als Block sieht dann wie folgt aus: