From 263b9a1a5622166c7ef699dd9ec2b0b0cdc457cd Mon Sep 17 00:00:00 2001 From: Simon Zeyer Date: Mon, 4 Jul 2022 21:52:50 +0200 Subject: [PATCH] Change DHT Sensor to DS18B20 The Sensors have a unique ID and can be used in a bus configuration on one gpo pin, but we are using one pin/bus per sensor and only read the first sensor on a bus to be able to change the sensors later without changing the code. --- Steuerung_Truhen.ino | 6 +++++- Truhe.cpp | 40 +++++++++++++++++++++++++--------------- Truhe.h | 12 +++++++----- 3 files changed, 37 insertions(+), 21 deletions(-) diff --git a/Steuerung_Truhen.ino b/Steuerung_Truhen.ino index 9585488..4177c77 100644 --- a/Steuerung_Truhen.ino +++ b/Steuerung_Truhen.ino @@ -85,6 +85,10 @@ void loop() { else if (truhen[i].getStat() == 0) { lcd.print("O"); } + else if (truhen[i].getStat() == 2) { + lcd.setCursor(8, i); + lcd.print("Error"); + } if(truhen[i].getUpdLcd() == 0){ lcd.setCursor(15, i); lcd.print(String("|")); @@ -99,4 +103,4 @@ void loop() { } } wdt_reset(); -} \ No newline at end of file +} diff --git a/Truhe.cpp b/Truhe.cpp index 67f08b5..ee29252 100644 --- a/Truhe.cpp +++ b/Truhe.cpp @@ -1,37 +1,47 @@ #include "Truhe.h" -Truhe::Truhe(String name, int relay, uint8_t dhtpin): _dht(dhtpin, DHT22) { - _name = name; +Truhe::Truhe(String name, int relay, uint8_t sensorpin){ + _name = name; _relay = relay; - _dhtpin = dhtpin; + _sensorpin = sensorpin; + _oneWire = OneWire(sensorpin); + _sensors = DallasTemperature(&_oneWire); }; void Truhe::setup() { Serial.println("Setup " + _name); - Serial.println(_dhtpin); + Serial.println(_sensorpin); pinMode(_relay, OUTPUT); digitalWrite(_relay, HIGH); - pinMode(_dhtpin, INPUT); - _dht.begin(); - delay(2000); + pinMode(_sensorpin, INPUT); + _sensors.begin(); } void Truhe::mess() { Serial.println(String(_name) + " mess()"); - //Serial.print("Minimum Sampling Period: "); - //delay(_dht.getMinimumSamplingPeriod()); - _cur_temp = _dht.readTemperature(); - Serial.println(String(_name) + "\t\t" + String((int)_cur_temp) + " grad gelesen"); + _sensors.requestTemperatures(); + _cur_temp = _sensors.getTempCByIndex(0); + // Check if reading was successful + if(_cur_temp != DEVICE_DISCONNECTED_C) + { + Serial.println(String(_name) + "\t\t" + String((int)_cur_temp) + " grad gelesen"); + } + else + { + Serial.println("Error: Could not read temperature data: "+ String(_name)); + _cur_temp = 99; // Liewer warmes bier als garkenn bier + _stat = 2; + } }; void Truhe::schalt(int oT, int uT) { Serial.print(String(_name) + " schalt() stat: " + String(_stat)); - if (_cur_temp >= oT && _stat != 1) { + if (_cur_temp >= oT && _stat != 1 && _stat != 2) { digitalWrite(_relay, LOW); _stat = 1; Serial.println("schalt " + _name + " zu " + String(_stat)); } - else if (_cur_temp <= uT && _stat != 0) { + else if (_cur_temp <= uT && _stat != 0 && _stat != 2) { digitalWrite(_relay, HIGH); _stat = 0; Serial.println("schalt " + _name + " zu " + String(_stat)); @@ -40,7 +50,7 @@ void Truhe::schalt(int oT, int uT) { int Truhe::getUpdLcd(){ return _updlcd;}; void Truhe::setUpdLcd(int updlcd){ _updlcd = updlcd;}; int Truhe::getRelay(){ return _relay;}; -int Truhe::getDhtPin(){return _dhtpin;}; +int Truhe::getSensorPin(){return _sensorpin;}; int Truhe::getStat(){return _stat;}; -float Truhe::getCurTemp(){return _cur_temp;}; +int Truhe::getCurTemp(){return int(_cur_temp);}; String Truhe::getName(){return _name;}; diff --git a/Truhe.h b/Truhe.h index 71a3e84..dde0b20 100644 --- a/Truhe.h +++ b/Truhe.h @@ -1,9 +1,11 @@ -#include +#include +#include class Truhe { private: - DHT _dht; + OneWire _oneWire; + DallasTemperature _sensors; int _relay; - uint8_t _dhtpin; + uint8_t _sensorpin; int _stat = -1; float _cur_temp = 0; int _updlcd = 0; @@ -16,8 +18,8 @@ class Truhe { int getUpdLcd(); void setUpdLcd(int); int getRelay(); - int getDhtPin(); + int getSensorPin(); int getStat(); - float getCurTemp(); + int getCurTemp(); String getName(); };