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.
This commit is contained in:
parent
fd8bdfb967
commit
456542514a
@ -5,7 +5,9 @@
|
||||
|
||||
#include <Wire.h> //Setup LCD
|
||||
#include <LiquidCrystal_I2C.h>
|
||||
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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user