Hallo an alle.
Da ich gerade meine Programmierkenntnisse ein bisschen ausbauen will um die zuverlässigkeit meiner Programme zu verbessern , habe ich mal eine Datenlogger mit eingebunden. Um die Programmabläufe mal mitzuloggen.
Das geht auf so weit ganz gut. Aber wenn ich im Logger die Funktion mit Signal mit einbinde (Der ausgeklammerte Text) geht gar nichts mehr.Hat jemand eine erklärung dafür.
Danke Stefan
#include <LiquidTWI2.h>
LiquidTWI2 lcd(0);
#include "DHT.h"
#define DHTTYPE DHT22
#define DHTTYPE_1 DHT22 // DHT 22
#define DHTTYPE_2 DHT22 // DHT 22
#include <DS3231.h>
DS3231 rtc(SDA, SCL);
#define RTC_I2C_ADDRESS 0x68
#include <SoftwareSerial.h>
#include <SD.h>
#define DHTPIN_1 6 // Datenleitung für den DHT-Sensor 1 (innen)
#define DHTPIN_2 7 // Datenleitung für den DHT-Sensor 2 (außen)
DHT dht1(DHTPIN_1, DHTTYPE_1); //Der Innensensor wird ab jetzt mit dht1 angesprochen
DHT dht2(DHTPIN_2, DHTTYPE_2); //Der Außensensor wird ab jetzt mit dht2 angesprochen
int Relay_Pin01 = 2;
int LedAufz = 4;
int Sirene = 9;
int chipSelect = 10;
char Nummer[6];
File myFile;
int i = 1;
Time time;
int Hor;
int Min;
void setup() {
Serial.begin(9600);
lcd.setMCPType(LTI_TYPE_MCP23017);
lcd.begin(20, 4);
dht1.begin(); // Sensoren starten DHT22 I
dht2.begin(); // Sensoren starten DHT22 A
rtc.begin();//
rtc.setTime(23, 44, 50);//
rtc.setDate(11, 9, 2024);//
pinMode(Relay_Pin01, OUTPUT);
pinMode(Sirene, OUTPUT);
pinMode(LedAufz, OUTPUT);
pinMode(chipSelect, OUTPUT);
Serial.println("KARTE SUCHEN");
delay(1000);
if (!SD.begin(chipSelect)) {
Serial.println("KARTE FEHLT");
delay(1000);
return;
}
Serial.println ("GEFUNDEN");
char filename[] = "LOGGER00.CSV";
for (uint8_t i = 0; i < 100; i++) {
filename[6] = i / 10 + '0';
filename[7] = i % 10 + '0';
if (! SD.exists(filename)) {
myFile = SD.open(filename, FILE_WRITE);
break;
}
}
Serial.println(filename);
delay(1000);
}
void loop()
{
Sensor01();
Sensor02();
Zeitschaltuhr_Uhr();
Zeitschaltuhr_Hum();
Zeitschaltuhr_Sig();
Aufzeichnung();
}
void Sensor01()
{
float t2 = dht2.readTemperature();//AUSSEN
float h2 = dht2.readHumidity(); //AUSSEN
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SENSOR 1 (DHT A)");
lcd.setCursor(0, 1);
lcd.print("TEMP A");
lcd.setCursor(0, 2);
lcd.print("LUFT A");
lcd.setCursor(7, 1);//neu
lcd.print(t2);
lcd.setCursor(13, 1);
lcd.print("C");
lcd.setCursor(7, 2);
lcd.print(h2);
lcd.setCursor(13, 2);
lcd.print("%");
delay(1000);
lcd.clear();
}
void Sensor02()
{
float t1 = dht1.readTemperature();//INNEN
float h1 = dht1.readHumidity();//INNEN
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SENSOR 2 (DHT I)");
lcd.setCursor(0, 1);
lcd.print("TEMP I");
lcd.setCursor(0, 2);
lcd.print("LUFT I");
lcd.setCursor(7, 1);//neu
lcd.print(t1);
lcd.setCursor(13, 1);
lcd.print("C");
lcd.setCursor(7, 2);
lcd.print(h1 );
lcd.setCursor(13, 2);
lcd.print("%");
delay(1000);
lcd.clear();
}
void Zeitschaltuhr_Uhr()
{
time = rtc.getTime();
Hor = time.hour;
Min = time.min;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ZEIT : ");
lcd.print(rtc.getTimeStr());
lcd.setCursor(0, 1);//
lcd.print("DATUM: ");//
lcd.print(rtc.getDateStr());
delay(1000);
lcd.clear();
}
void Zeitschaltuhr_Hum()
{
float h1 = dht1.readHumidity();//INNEN
float h2 = dht2.readHumidity();//AUSSEN
int minhum_on = 30;
int maxhum_on = 38;
if (isnan(h1) || (isnan(h2)))
{
return;
}
if ( h2 > minhum_on && (h2 < maxhum_on))
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("RELAY 01");
lcd.setCursor(0, 2);
lcd.print(" >>>> AN-HUM");
digitalWrite(Relay_Pin01, HIGH);
delay(1000);
lcd.clear();
}
else
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("RELAY 01");
lcd.setCursor(0, 2);
lcd.print(" >>>> AUS-HUM");
digitalWrite(Relay_Pin01, LOW);
delay(1000);
lcd.clear();
}
}
void Zeitschaltuhr_Sig()
{
time = rtc.getTime();
Hor = time.hour;
Min = time.min;
if ( Hor == 23 && (Min == 45))
{
Serial.println("Sirene an SIG");
digitalWrite( Sirene, HIGH);//9
lcd.setCursor(0, 0);
lcd.print("SIRENE EIN");
delay(1000);
lcd.clear();
}
if ( Hor == 23 && (Min == 46))
{
Serial.println("Sirene aus SIG");
digitalWrite( Sirene, LOW);//9
lcd.setCursor(0, 0);
lcd.print("SIRENE AUS");
delay(1000);
lcd.clear();
}
}
void Aufzeichnung()
{
time = rtc.getTime();
Hor = time.hour;
Min = time.min;
int minhum_on = 30;
int maxhum_on = 48;
int minhum_off = 50 ; //50
int maxhum_off = 99 ; //99
float h2 = dht2.readHumidity();
String dataString = "";
digitalWrite(LedAufz, HIGH);//8
myFile.print("MESSUNG");
myFile.print(" ");
sprintf(Nummer, "%05d", i);
i++;
myFile.print(Nummer);
myFile.print(" ");
myFile.print(rtc.getDateStr());
myFile.print(" ");
myFile.print(rtc.getTimeStr());
myFile.println();
myFile.print(dht1.readHumidity ());
myFile.print(" % LUFTF. I");
myFile.println();
myFile.print(dht2.readHumidity());
myFile.print(" % LUFTF. A");
myFile.println();
/*
if ( Hor == 23 && (Min == 45))
{
myFile.print("SIGNAL_EIN");
myFile.println();
myFile.println();
}
if ( Hor == 23 && (Min == 46))
{
myFile.print("SIGNAL_AUS");
myFile.println();
myFile.println();
}
*/
if ( h2 > minhum_on && (h2 < maxhum_on))
{
myFile.print("RELAY_EIN");
myFile.println();
myFile.println();
}
if ( h2 > minhum_off && (h2 < maxhum_off))
{
myFile.print("RELAY_AUS");
myFile.println();
myFile.println();
}
myFile.flush();
lcd.setCursor(0, 0);
lcd.print("AUFZEICHNUNG:");
delay(1000);
lcd.clear();
digitalWrite(LedAufz, LOW);
}