#include <OneWire.h> // OneWire-Bibliothek einbinden
#include <DallasTemperature.h> // DS18B20-Bibliothek einbinden
// Konstanten
const int owPin = 2; // Pin für OneWire Bus definieren
const int intervall = 1000; // Intervall wie oft die Temperatur abgefragt wird (millisekunden)
// Variablen
unsigned long letzteMillis = 0; // Speichert die letzte Zeit (millis) der Temperaturabfrage
OneWire oneWire(owPin); // OneWire Referenz setzen
DallasTemperature sensors(&oneWire); // DS18B20 initialisieren
void setup()
{
Serial.begin(9600); // Baudrate für die Ausgabe am Serial Monitor
sensors.begin(); // DS18B20 starten
//Anzahl der angeschlossenen Sensoren ausgeben
Serial.print("Sensoren: ");
Serial.println(sensors.getDeviceCount());
}
void loop()
{
// Erfasst die aktuelle Zeit für den Abfrageinterval
unsigned long aktuelleMillis = millis();
// Löst bei erreichen der Intervalzeit die Temperaturerfassung aus
if(aktuelleMillis - letzteMillis >= intervall)
{
letzteMillis = aktuelleMillis; // speichert die Zeit der letzten Abfrage
sensors.requestTemperatures(); // Temperatursensoren auslesen
// Temperaturen der Sensoren auslesen
for(int i = 0; i < sensors.getDeviceCount(); i++)
{
show_temperature(i + 1, sensors.getTempCByIndex(i));
}
}
}
// Temperatur am Seriellen Monitor ausgeben
void show_temperature(byte num,float temp)
{
Serial.print("Sensor ");
Serial.print(num);
Serial.print(": ");
Serial.print(temp);
Serial.print(" ");
Serial.write(176); // damit wird das °-Zeichen dargestellt
Serial.println("C");
}