57 lines
2.2 KiB
C
57 lines
2.2 KiB
C
// ----------------------------------------------------------------------------------------------------------------
|
|
// Temperatur
|
|
#include <OneWire.h> // http://www.arduino.cc/playground/Learning/OneWire
|
|
#include <DallasTemperature.h> // http://milesburton.com/index.php?title=Dallas_Temperature_Control_Library DS18B20
|
|
// Define Pins
|
|
#define TEMPERATURE_PRECISION 9
|
|
OneWire oneWire(ONE_WIRE_BUS); // Einrichten des OneWire Bus um die Daten der Temperaturfühler abzurufen
|
|
DallasTemperature sensors(&oneWire); // Bindung der Sensoren an den OneWire Bus
|
|
DeviceAddress tempDeviceAddress; // Verzeichniss zum Speichern von Sensor Adressen
|
|
int numberOfDevices; // Anzahl der gefundenen Sensoren
|
|
float sensor[5][10] = { 0 };
|
|
|
|
float tempSensor[5] = { 0 };
|
|
|
|
|
|
void setupTemperature() {
|
|
// Temperatur
|
|
Serial.println("Abfrage mehrerer Dallas Temperatur Sensoren");
|
|
Serial.println("-------------------------------------------");
|
|
|
|
// Suche der Sensoren
|
|
Serial.println("Suche Temperatur Sensoren...");
|
|
sensors.begin();
|
|
|
|
sensors.setWaitForConversion(false);
|
|
numberOfDevices = sensors.getDeviceCount();
|
|
|
|
Serial.print("Habe ");
|
|
Serial.print(numberOfDevices, DEC);
|
|
Serial.println(" Sensoren gefunden.");
|
|
|
|
// Setzen der Genauigkeit 9,10,11 oder 12bit
|
|
for (int i = 0; i < numberOfDevices; i++) {
|
|
if (sensors.getAddress(tempDeviceAddress, i)) {
|
|
sensors.setResolution(tempDeviceAddress, TEMPERATURE_PRECISION);
|
|
Serial.print("Sensor ");
|
|
Serial.print(i);
|
|
Serial.print(" hat eine Genauigkeit von ");
|
|
Serial.println(sensors.getResolution(tempDeviceAddress), DEC);
|
|
sensors.requestTemperatures();
|
|
}
|
|
}
|
|
}
|
|
void getTemperature() {
|
|
|
|
for (int i = 0; i < numberOfDevices; i++) {
|
|
|
|
tempSensor[i] = sensors.getTempCByIndex(i);
|
|
Serial.println("Messe Temperatur ");
|
|
Serial.print("Sensor ");
|
|
Serial.print(i);
|
|
Serial.print(" in Celsius: ");
|
|
Serial.println(tempSensor[i]);
|
|
}
|
|
// Auslesen für den nächsten Zyklus. Der Sensor braucht genügend Zeit. Wenn er nur 85 anzeigt, reicht die Spannne zum Auslesen nicht.
|
|
sensors.requestTemperatures();
|
|
} |