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 <Wire.h> //Setup LCD
|
||||||
#include <LiquidCrystal_I2C.h>
|
#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_lcd_time = 0;
|
||||||
static unsigned long last_mess_time = 0;
|
static unsigned long last_mess_time = 0;
|
||||||
@ -19,67 +21,31 @@ class Truhe {
|
|||||||
int _cur_temp = 0;
|
int _cur_temp = 0;
|
||||||
int _updlcd = 0;
|
int _updlcd = 0;
|
||||||
String _name = "";
|
String _name = "";
|
||||||
|
uint8_t _dhtpin;
|
||||||
public:
|
public:
|
||||||
Truhe(String name, int relay, int dhtpin, int dhttype) {
|
Truhe(String name, int relay, uint8_t dhtpin): _dht(dhtpin, DHT22) {
|
||||||
_name = name;
|
_name = name;
|
||||||
_relay = relay;
|
_relay = relay;
|
||||||
_dht.setup(dhtpin);
|
_dhtpin = dhtpin;
|
||||||
pinMode(_relay, OUTPUT);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.println("Setup " + _name);
|
||||||
|
Serial.println(_dhtpin);
|
||||||
|
pinMode(_relay, OUTPUT);
|
||||||
|
digitalWrite(_relay, HIGH);
|
||||||
|
pinMode(_dhtpin, INPUT);
|
||||||
|
_dht.begin();
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
void mess() {
|
void mess() {
|
||||||
//Serial.println(String(_name) + " mess()");
|
Serial.println(String(_name) + " mess()");
|
||||||
//Serial.print("Minimum Sampling Period: ");
|
//Serial.print("Minimum Sampling Period: ");
|
||||||
//Serial.println(_dht.getMinimumSamplingPeriod());
|
|
||||||
//delay(_dht.getMinimumSamplingPeriod());
|
//delay(_dht.getMinimumSamplingPeriod());
|
||||||
_cur_temp = _dht.getTemperature();
|
_cur_temp = _dht.readTemperature();
|
||||||
//Serial.println(String(_name) + "\t\t" + String(_cur_temp) + " grad gelesen");
|
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) {
|
void schalt(int oT, int uT) {
|
||||||
Serial.print(String(_name) + " schalt() stat: " + String(_stat));
|
Serial.print(String(_name) + " schalt() stat: " + String(_stat));
|
||||||
if (_cur_temp >= oT && _stat != 1) {
|
if (_cur_temp >= oT && _stat != 1) {
|
||||||
@ -93,28 +59,21 @@ class Truhe {
|
|||||||
Serial.println("schalt " + _name + " zu " + String(_stat));
|
Serial.println("schalt " + _name + " zu " + String(_stat));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
int getUpdLcd(){ return _updlcd;};
|
||||||
void printName(){
|
void setUpdLcd(int updlcd){ _updlcd = updlcd;};
|
||||||
//Serial.println(_name);
|
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 truhen[] = {
|
||||||
Truhe("Truhe 1", 2, 8, 0),
|
Truhe("Truhe 1", 2, 8),
|
||||||
Truhe("Truhe 2", 3, 9, 0),
|
Truhe("Truhe 2", 3, 9),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -161,8 +120,12 @@ void setup() {
|
|||||||
logfile.println("t(min)\tTruhe\tT(°C)\tStatus");
|
logfile.println("t(min)\tTruhe\tT(°C)\tStatus");
|
||||||
logfile.close();
|
logfile.close();
|
||||||
lcd.clear();
|
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");
|
Serial.println("Setup fi");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,14 +134,16 @@ void loop() {
|
|||||||
{
|
{
|
||||||
//MESSINTERVALL
|
//MESSINTERVALL
|
||||||
last_mess_time = millis();
|
last_mess_time = millis();
|
||||||
|
File logfile = SD.open("logTruhe.txt", FILE_WRITE);
|
||||||
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
|
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
|
||||||
truhen[i].printName();
|
|
||||||
truhen[i].mess();
|
truhen[i].mess();
|
||||||
|
|
||||||
File logfile = SD.open("logTruhe.txt", FILE_WRITE);
|
//Serial.println(String(_name) + " log()");
|
||||||
truhen[i].log(logfile);
|
String logdata = String(0) + "\t\t" + String(truhen[i].getCurTemp()) + "\t" + String(truhen[i].getStat());
|
||||||
logfile.close();
|
logfile.println(logdata);
|
||||||
}
|
}
|
||||||
|
logfile.println();
|
||||||
|
logfile.close();
|
||||||
}
|
}
|
||||||
//Serial.println("Schaltintervall: "+ String(millis() - last_schalt_time) + " " + String(SCHALT_REFRESH_INTERVAL));
|
//Serial.println("Schaltintervall: "+ String(millis() - last_schalt_time) + " " + String(SCHALT_REFRESH_INTERVAL));
|
||||||
if(millis() - last_schalt_time >= SCHALT_REFRESH_INTERVAL || last_schalt_time == 0)
|
if(millis() - last_schalt_time >= SCHALT_REFRESH_INTERVAL || last_schalt_time == 0)
|
||||||
@ -195,7 +160,39 @@ void loop() {
|
|||||||
//LCD Update INTERVALL
|
//LCD Update INTERVALL
|
||||||
last_lcd_time = millis();
|
last_lcd_time = millis();
|
||||||
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
|
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();
|
wdt_reset();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user