//Einbinden der Bibliotheken
#include <OneWire.h>
#include <DallasTemperature.h>
const int Relai1 = 21; // Relai connected to pin
const int Relai2 = 18; // Relai connected to pin
const int Relai3 = 5; // Relai connected to pin
const float MIN_TEMP1 = 28; //Temperaturschwellwert zum schalten des Relais
OneWire ds18_1(23); // Anschluss des DS18B20 für "Wabe" an PIN 23 (4k7 zwischen Plus und Data)
OneWire ds18_2(22); // Anschluss des DS18B20 für "unten" an PIN 22 (4k7 zwischen Plus und Data)
OneWire ds18_3(19); // Anschluss des DS18B20 für "unten" an PIN 1 (4k7 zwischen Plus und Data)
DallasTemperature sensors1(&ds18_1);
DallasTemperature sensors2(&ds18_2);
DallasTemperature sensors3(&ds18_3);
void setup()
{
Serial.begin(115200); //Starten der seriellen Kommunikation mit 115200 baud
pinMode(Relai1, OUTPUT); // Relai 1
pinMode(Relai2, OUTPUT); // Relai 2
pinMode(Relai3, OUTPUT); // Relai 3
sensors1.begin(); //Starten der Kommunikation mit dem Sensor
sensors2.begin(); //Starten der Kommunikation mit dem Sensor
sensors3.begin(); //Starten der Kommunikation mit dem Sensor
}
void loop()
{
if (sensors1.getDS18Count() == 0)
{
Serial.println("Es wurde Temperatursensor1 nicht gefunden!");
Serial.println("Bitte überprüfe deine Schaltung!");
}
sensors1.requestTemperatures();
if (sensors2.getDS18Count() == 0)
{
Serial.println("Es wurde Temperatursensor2 nicht gefunden!");
Serial.println("Bitte überprüfe deine Schaltung!");
}
sensors2.requestTemperatures();
if (sensors3.getDS18Count() == 0)
{
Serial.println("Es wurde Temperatursensor3 nicht gefunden!");
Serial.println("Bitte überprüfe deine Schaltung!");
}
sensors3.requestTemperatures();
//Ausgabe aller Werte der angeschlossenen Temperatursensoren.
float temp1 = sensors1.getTempCByIndex(0); // Auslesen Temperaturen der DS18B20 am Bus auslesen
float temp2 = sensors2.getTempCByIndex(0); // Auslesen Temperaturen der DS18B20 am Bus auslesen
float temp3 = sensors3.getTempCByIndex(0); // Auslesen Temperaturen der DS18B20 am Bus auslesen
printValue(temp1, "°C"); //ausgeben der Temperatur auf dem seriellen Monitor
printValue(temp2, "°C"); //ausgeben der Temperatur auf dem seriellen Monitor
printValue(temp3, "°C"); //ausgeben der Temperatur auf dem seriellen Monitor
Serial.println("\t\t"); // Gibt 2 Tab aus
//wenn die aktuelle Temperatur größer als die gespeicherte dann soll das Relais ausgelöst werden
if (MIN_TEMP1 < temp1) {
digitalWrite(Relai1, HIGH);
} else {
digitalWrite(Relai1, LOW);
}
delay(2000); //eine Pause von 2 sek.
}
//ausgeben eines Textes auf den seriellen Monitor der Arduino IDE
void printValue(float value, String text) {
Serial.print(value);
Serial.println(text);
}