#include //Setup Sensoren #include //Setup SD SDK=D13, MOSI=D11, MISO=D12 #include //Setup LCD #include #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_sd() { //Initialsierugn SD lcd.clear(); lcd.setCursor(0, 0); //...(Zeichen,Zeile); lcd.print("Init SD"); if (!SD.begin(4)) { //Init SD_Karte mit CS auf Pin D4 lcd.setCursor(0, 1); lcd.print("fehlgeschlagen!"); Serial.println("Init SD fehlgeschlagen!"); delay(SETUPTIMEOUT); return; } else { lcd.setCursor(0, 1); lcd.print("abgeschlossen!"); Serial.println("Init SD abgeschlossen!"); delay(SETUPTIMEOUT); } } void setup_lcd() { //LCD lcd.begin(16, 2); //Starten des LCD, 16 Zeichen, 2 Zeilen 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(); setup_sd(); File logfile = SD.open("logTruhe.txt", FILE_WRITE); //Erstelle bzw. öffne log-Datei 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_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(); File logfile = SD.open("logTruhe.txt", FILE_WRITE); for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) { truhen[i].mess(); //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) { //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"); } 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(); }