truhensteuerung/Steuerung_Truhen.ino
Simon Zeyer 263b9a1a56 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.
2022-07-04 21:52:50 +02:00

107 lines
3.0 KiB
C++

#include <DHT.h> //Setup Sensoren
#include <Wire.h> //Setup LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2); //0x3F = Adresse des Displays
#include "Truhe.h"
#include "Settings.h"
static unsigned long last_lcd_time = 0;
static unsigned long last_mess_time = 0;
static unsigned long last_schalt_time = 0;
void setup_lcd() {
//LCD
lcd.init();
lcd.backlight(); //Beleuchtung des Displays einschalten
lcd.blink();
lcd.clear();
lcd.setCursor(0, 0); //...(Zeichen,Zeile);
lcd.print("Init LCD");
lcd.setCursor(0, 1);
lcd.print("abgeschlossen!");
Serial.println("Init LCD abgeschlossen!");
delay(SETUPTIMEOUT);
}
void setup() {
Serial.begin(9600);
Serial.println();
Serial.println();
setup_lcd();
lcd.clear();
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
truhen[i].setup();
}
wdt_enable(WDTO_4S); // Watchdog auf 4 s stellen
delay(3000);
Serial.println("Setup fi");
}
void loop() {
if(millis() - last_mess_time >= MESS_REFRESH_INTERVAL || last_mess_time == 0)
{
//MESSINTERVALL
last_mess_time = millis();
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
truhen[i].mess();
}
}
//Serial.println("Schaltintervall: "+ String(millis() - last_schalt_time) + " " + String(SCHALT_REFRESH_INTERVAL));
if(millis() - last_schalt_time >= SCHALT_REFRESH_INTERVAL || last_schalt_time == 0)
{
//SCHALTINTERVALL
Serial.println("SCHALTINTERVALL");
last_schalt_time = millis();
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
truhen[i].schalt(oT, uT);
}
}
if(millis() - last_lcd_time >= LCD_REFRESH_INTERVAL || last_lcd_time == 0)
{
//LCD Update INTERVALL
last_lcd_time = millis();
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); 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");
}
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("|"));
//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();
}