// ---------------------------------------------------------------------------------------------------------------- // Temperatur #include // http://www.arduino.cc/playground/Learning/OneWire #include // 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(); }