From 8d1a43ceb80f9b320a1522123073344135ab1eba Mon Sep 17 00:00:00 2001 From: Simon Zeyer Date: Thu, 17 Sep 2020 19:02:49 +0200 Subject: [PATCH 1/2] Use DHT library from arduino repo (DHT_sensor_library) in order to use the DHT_sensor_library the setup of the Truhen is moved into the setup routine. --- Steuerung_Truhen.ino | 153 +++++++++++++++++++++---------------------- 1 file changed, 75 insertions(+), 78 deletions(-) diff --git a/Steuerung_Truhen.ino b/Steuerung_Truhen.ino index 3153a83..03b917b 100644 --- a/Steuerung_Truhen.ino +++ b/Steuerung_Truhen.ino @@ -5,7 +5,9 @@ #include //Setup LCD #include -LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //0x3F = Adresse des Displays + +#include "Truhe.h" +#include "Settings.h" static unsigned long last_lcd_time = 0; static unsigned long last_mess_time = 0; @@ -19,67 +21,31 @@ class Truhe { int _cur_temp = 0; int _updlcd = 0; String _name = ""; + uint8_t _dhtpin; public: - Truhe(String name, int relay, int dhtpin, int dhttype) { - _name = name; + Truhe(String name, int relay, uint8_t dhtpin): _dht(dhtpin, DHT22) { + _name = name; _relay = relay; - _dht.setup(dhtpin); - pinMode(_relay, OUTPUT); + _dhtpin = dhtpin; }; + void setup() { + Serial.println("Setup " + _name); + Serial.println(_dhtpin); + pinMode(_relay, OUTPUT); + digitalWrite(_relay, HIGH); + pinMode(_dhtpin, INPUT); + _dht.begin(); + delay(2000); + } + void mess() { - //Serial.println(String(_name) + " mess()"); + Serial.println(String(_name) + " mess()"); //Serial.print("Minimum Sampling Period: "); - //Serial.println(_dht.getMinimumSamplingPeriod()); //delay(_dht.getMinimumSamplingPeriod()); - _cur_temp = _dht.getTemperature(); - //Serial.println(String(_name) + "\t\t" + String(_cur_temp) + " grad gelesen"); + _cur_temp = _dht.readTemperature(); + Serial.println(String(_name) + "\t\t" + String((int)_cur_temp) + " grad gelesen"); }; - - void log(File logfile) { - //Serial.println(String(_name) + " log()"); - String logdata = String(0) + "\t\t" + String(_cur_temp) + "\t" + String(_stat); - logfile.println(logdata); - logfile.println(); - } - - void updateLCD(int row) { - //Serial.println(String(_name) + " updateLCD("+String(row)+")"); - //LCD-Anzeige - lcd.setCursor(0, row); //...(Zeichen,Zeile); - lcd.print(_name + " " + String(_updlcd)); - - lcd.setCursor(8, row); - lcd.print(" "); - //Serial.println(sizeof(String(_cur_temp))/2); - lcd.setCursor(11 - sizeof(String(_cur_temp))/2, row); - lcd.setCursor(8, row); - lcd.print(String(_cur_temp)); - lcd.setCursor(11, row); - lcd.print("\337"); - lcd.setCursor(13, row); - if (_stat == -1) { - lcd.print("-"); - } - else if (_stat == 1) { - lcd.print("I"); - } - else if (_stat == 0) { - lcd.print("O"); - } - if(_updlcd == 0){ - lcd.setCursor(15, row); - lcd.print(String("|")); - //Serial.println(String(_name) + " updateLCD("+String(row)+") ."); - _updlcd = 1; - }else{ - lcd.setCursor(15, row); - lcd.print(String("-")); - //Serial.println(String(_name) + " updateLCD("+String(row)+") "); - _updlcd = 0; - } - } - void schalt(int oT, int uT) { Serial.print(String(_name) + " schalt() stat: " + String(_stat)); if (_cur_temp >= oT && _stat != 1) { @@ -93,28 +59,21 @@ class Truhe { Serial.println("schalt " + _name + " zu " + String(_stat)); } } - - void printName(){ - //Serial.println(_name); - } + int getUpdLcd(){ return _updlcd;}; + void setUpdLcd(int updlcd){ _updlcd = updlcd;}; + int getRelay(){ return _relay;}; + int getDhtPin(){return _dhtpin;}; + int getStat(){return _stat;}; + float getCurTemp(){return _cur_temp;}; + String getName(){return _name;}; }; -//* **EINSTELLUNGEN** *// -#define DHTTYPE DHT22 -#define SETUPTIMEOUT 500 -// So, the minimum sampling period is the minimum time -// interval that we need to wait between two consecutive -// measurements from the sensor. In the case of the DHT22, -// this value is of 2 seconds [1]. -static const unsigned long MESS_REFRESH_INTERVAL = 10000; // ms getMinimumSamplingPeriod == 2 sec -static const unsigned long SCHALT_REFRESH_INTERVAL = 60000; // ms -static const unsigned long LCD_REFRESH_INTERVAL = 500; // ms -const int uT = 1; //Abschalt-Temperatur in °C -const int oT = 6; //Einschalt-Temperatur in °C + + Truhe truhen[] = { - Truhe("Truhe 1", 2, 8, 0), - Truhe("Truhe 2", 3, 9, 0), + Truhe("Truhe 1", 2, 8), + Truhe("Truhe 2", 3, 9), }; @@ -161,8 +120,12 @@ void setup() { logfile.println("t(min)\tTruhe\tT(°C)\tStatus"); logfile.close(); lcd.clear(); + for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) { + truhen[i].setup(); + } - wdt_enable(WDTO_5S); // Watchdog auf 1 s stellen + wdt_enable(WDTO_4S); // Watchdog auf 1 s stellen + delay(3000); Serial.println("Setup fi"); } @@ -171,14 +134,16 @@ void loop() { { //MESSINTERVALL last_mess_time = millis(); + File logfile = SD.open("logTruhe.txt", FILE_WRITE); for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) { - truhen[i].printName(); truhen[i].mess(); - File logfile = SD.open("logTruhe.txt", FILE_WRITE); - truhen[i].log(logfile); - logfile.close(); + //Serial.println(String(_name) + " log()"); + String logdata = String(0) + "\t\t" + String(truhen[i].getCurTemp()) + "\t" + String(truhen[i].getStat()); + logfile.println(logdata); } + logfile.println(); + logfile.close(); } //Serial.println("Schaltintervall: "+ String(millis() - last_schalt_time) + " " + String(SCHALT_REFRESH_INTERVAL)); if(millis() - last_schalt_time >= SCHALT_REFRESH_INTERVAL || last_schalt_time == 0) @@ -195,7 +160,39 @@ void loop() { //LCD Update INTERVALL last_lcd_time = millis(); for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) { - truhen[i].updateLCD(i); + //LCD-Anzeige + lcd.setCursor(0, i); //...(Zeichen,Zeile); + lcd.print(truhen[i].getName() + " " + String(truhen[i].getUpdLcd())); + + lcd.setCursor(8, i); + lcd.print(" "); + //Serial.println(sizeof(String(truhen[i].getCurTemp()))/2); + lcd.setCursor(11 - sizeof(String(truhen[i].getCurTemp()))/2, i); + lcd.setCursor(8, i); + lcd.print(String(truhen[i].getCurTemp())); + lcd.setCursor(11, i); + lcd.print("\337"); + lcd.setCursor(13, i); + if (truhen[i].getStat() == -1) { + lcd.print("-"); + } + else if (truhen[i].getStat() == 1) { + lcd.print("I"); + } + else if (truhen[i].getStat() == 0) { + lcd.print("O"); + } + if(truhen[i].getUpdLcd() == 0){ + lcd.setCursor(15, i); + lcd.print(String("|")); + //Serial.println(String(truhen[i]._name) + " updateLCD("+String(i)+") ."); + truhen[i].setUpdLcd(1); + }else{ + lcd.setCursor(15, i); + lcd.print(String("-")); + //Serial.println(String(truhen[i]._name) + " updateLCD("+String(i)+") "); + truhen[i].setUpdLcd(0); + } } } wdt_reset(); From 456542514a351a6f13cf2eac3b7bc0f3663729db Mon Sep 17 00:00:00 2001 From: Simon Zeyer Date: Sat, 19 Sep 2020 11:28:01 +0200 Subject: [PATCH 2/2] Use DHT library from arduino repo (DHT_sensor_library) in order to use the DHT_sensor_library the setup of the Truhen is moved into the setup routine. The log, updateLCD and printName funtions are removed, logic is handled in the loop with help of new getter and setter methods. --- Steuerung_Truhen.ino | 155 +++++++++++++++++++++---------------------- 1 file changed, 76 insertions(+), 79 deletions(-) diff --git a/Steuerung_Truhen.ino b/Steuerung_Truhen.ino index 3153a83..dbefd03 100644 --- a/Steuerung_Truhen.ino +++ b/Steuerung_Truhen.ino @@ -5,7 +5,9 @@ #include //Setup LCD #include -LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //0x3F = Adresse des Displays + +#include "Truhe.h" +#include "Settings.h" static unsigned long last_lcd_time = 0; static unsigned long last_mess_time = 0; @@ -19,67 +21,31 @@ class Truhe { int _cur_temp = 0; int _updlcd = 0; String _name = ""; + uint8_t _dhtpin; public: - Truhe(String name, int relay, int dhtpin, int dhttype) { - _name = name; + Truhe(String name, int relay, uint8_t dhtpin): _dht(dhtpin, DHT22) { + _name = name; _relay = relay; - _dht.setup(dhtpin); - pinMode(_relay, OUTPUT); + _dhtpin = dhtpin; }; + void setup() { + Serial.println("Setup " + _name); + Serial.println(_dhtpin); + pinMode(_relay, OUTPUT); + digitalWrite(_relay, HIGH); + pinMode(_dhtpin, INPUT); + _dht.begin(); + delay(2000); + } + void mess() { - //Serial.println(String(_name) + " mess()"); + Serial.println(String(_name) + " mess()"); //Serial.print("Minimum Sampling Period: "); - //Serial.println(_dht.getMinimumSamplingPeriod()); //delay(_dht.getMinimumSamplingPeriod()); - _cur_temp = _dht.getTemperature(); - //Serial.println(String(_name) + "\t\t" + String(_cur_temp) + " grad gelesen"); + _cur_temp = _dht.readTemperature(); + Serial.println(String(_name) + "\t\t" + String((int)_cur_temp) + " grad gelesen"); }; - - void log(File logfile) { - //Serial.println(String(_name) + " log()"); - String logdata = String(0) + "\t\t" + String(_cur_temp) + "\t" + String(_stat); - logfile.println(logdata); - logfile.println(); - } - - void updateLCD(int row) { - //Serial.println(String(_name) + " updateLCD("+String(row)+")"); - //LCD-Anzeige - lcd.setCursor(0, row); //...(Zeichen,Zeile); - lcd.print(_name + " " + String(_updlcd)); - - lcd.setCursor(8, row); - lcd.print(" "); - //Serial.println(sizeof(String(_cur_temp))/2); - lcd.setCursor(11 - sizeof(String(_cur_temp))/2, row); - lcd.setCursor(8, row); - lcd.print(String(_cur_temp)); - lcd.setCursor(11, row); - lcd.print("\337"); - lcd.setCursor(13, row); - if (_stat == -1) { - lcd.print("-"); - } - else if (_stat == 1) { - lcd.print("I"); - } - else if (_stat == 0) { - lcd.print("O"); - } - if(_updlcd == 0){ - lcd.setCursor(15, row); - lcd.print(String("|")); - //Serial.println(String(_name) + " updateLCD("+String(row)+") ."); - _updlcd = 1; - }else{ - lcd.setCursor(15, row); - lcd.print(String("-")); - //Serial.println(String(_name) + " updateLCD("+String(row)+") "); - _updlcd = 0; - } - } - void schalt(int oT, int uT) { Serial.print(String(_name) + " schalt() stat: " + String(_stat)); if (_cur_temp >= oT && _stat != 1) { @@ -93,28 +59,21 @@ class Truhe { Serial.println("schalt " + _name + " zu " + String(_stat)); } } - - void printName(){ - //Serial.println(_name); - } + int getUpdLcd(){ return _updlcd;}; + void setUpdLcd(int updlcd){ _updlcd = updlcd;}; + int getRelay(){ return _relay;}; + int getDhtPin(){return _dhtpin;}; + int getStat(){return _stat;}; + float getCurTemp(){return _cur_temp;}; + String getName(){return _name;}; }; -//* **EINSTELLUNGEN** *// -#define DHTTYPE DHT22 -#define SETUPTIMEOUT 500 -// So, the minimum sampling period is the minimum time -// interval that we need to wait between two consecutive -// measurements from the sensor. In the case of the DHT22, -// this value is of 2 seconds [1]. -static const unsigned long MESS_REFRESH_INTERVAL = 10000; // ms getMinimumSamplingPeriod == 2 sec -static const unsigned long SCHALT_REFRESH_INTERVAL = 60000; // ms -static const unsigned long LCD_REFRESH_INTERVAL = 500; // ms -const int uT = 1; //Abschalt-Temperatur in °C -const int oT = 6; //Einschalt-Temperatur in °C + + Truhe truhen[] = { - Truhe("Truhe 1", 2, 8, 0), - Truhe("Truhe 2", 3, 9, 0), + Truhe("Truhe 1", 2, 8), + Truhe("Truhe 2", 3, 9), }; @@ -161,8 +120,12 @@ void setup() { logfile.println("t(min)\tTruhe\tT(°C)\tStatus"); logfile.close(); lcd.clear(); - - wdt_enable(WDTO_5S); // Watchdog auf 1 s stellen + for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) { + truhen[i].setup(); + } + + wdt_enable(WDTO_4S); // Watchdog auf 1 s stellen + delay(3000); Serial.println("Setup fi"); } @@ -171,14 +134,16 @@ void loop() { { //MESSINTERVALL last_mess_time = millis(); + File logfile = SD.open("logTruhe.txt", FILE_WRITE); for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) { - truhen[i].printName(); truhen[i].mess(); - File logfile = SD.open("logTruhe.txt", FILE_WRITE); - truhen[i].log(logfile); - logfile.close(); + //Serial.println(String(_name) + " log()"); + String logdata = String(0) + "\t\t" + String(truhen[i].getCurTemp()) + "\t" + String(truhen[i].getStat()); + logfile.println(logdata); } + logfile.println(); + logfile.close(); } //Serial.println("Schaltintervall: "+ String(millis() - last_schalt_time) + " " + String(SCHALT_REFRESH_INTERVAL)); if(millis() - last_schalt_time >= SCHALT_REFRESH_INTERVAL || last_schalt_time == 0) @@ -195,7 +160,39 @@ void loop() { //LCD Update INTERVALL last_lcd_time = millis(); for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) { - truhen[i].updateLCD(i); + //LCD-Anzeige + lcd.setCursor(0, i); //...(Zeichen,Zeile); + lcd.print(truhen[i].getName() + " " + String(truhen[i].getUpdLcd())); + + lcd.setCursor(8, i); + lcd.print(" "); + //Serial.println(sizeof(String(truhen[i].getCurTemp()))/2); + lcd.setCursor(11 - sizeof(String(truhen[i].getCurTemp()))/2, i); + lcd.setCursor(8, i); + lcd.print(String(truhen[i].getCurTemp())); + lcd.setCursor(11, i); + lcd.print("\337"); + lcd.setCursor(13, i); + if (truhen[i].getStat() == -1) { + lcd.print("-"); + } + else if (truhen[i].getStat() == 1) { + lcd.print("I"); + } + else if (truhen[i].getStat() == 0) { + lcd.print("O"); + } + if(truhen[i].getUpdLcd() == 0){ + lcd.setCursor(15, i); + lcd.print(String("|")); + //Serial.println(String(truhen[i]._name) + " updateLCD("+String(i)+") ."); + truhen[i].setUpdLcd(1); + }else{ + lcd.setCursor(15, i); + lcd.print(String("-")); + //Serial.println(String(truhen[i]._name) + " updateLCD("+String(i)+") "); + truhen[i].setUpdLcd(0); + } } } wdt_reset();