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.
This commit is contained in:
parent
fd8bdfb967
commit
8d1a43ceb8
@ -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();
|
||||
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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user