Danke für die Aufklärung mir ging es zunächst um
constexpr was für mich auf eine Konstante spricht.
Ich habe das Buch Arduino das umfassende Handbuch ( Claus Kühnel )
Dort sind die Datentypen auch beschrieben.
Danke für die Aufklärung mir ging es zunächst um
constexpr was für mich auf eine Konstante spricht.
Ich habe das Buch Arduino das umfassende Handbuch ( Claus Kühnel )
Dort sind die Datentypen auch beschrieben.
Guten Abend ich habe den sketch erweitert jetzt werden die Werte auf die SDkarte geschrieben.
ohne die Delay`s wurde alles in eine Zeile geschrieben.
Als nächstes werde ich einen BMP280 für den Luftdruck integrieren.
Dann das Programm so ändern das die Aufzeichnung nur alle 30min erfolgt
oder wenn der Lüfter schaltet.
Dazu habe ich bereits nach dem Zeitstempel ( Timestamp ) hier gesucht und gefunden.
/*
https://forum.arduino.cc/t/anderungen-im-setup-programm-startet-neu/1406435/15
code my_xy_projekt
*/
// Dieser Code benötigt zwingend die folgenden Libraries:
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <avr/wdt.h>
#include <RTClib.h>
/* für den Kartenleser */
#include <SD.h>
const int chipSelect = 10;
// File für SD Karte
File dataFile;
// DS3231 RTC Modul
RTC_DS3231 rtc;
DateTime now;
uint8_t lastSecond = 255;
constexpr uint8_t RELAIPIN{ 4 }; // Anschluss des Lüfter-Relais
constexpr uint8_t DHTPIN_1{ 5 }; // Datenleitung für den DHT-Sensor 1 (innen)
constexpr uint8_t DHTPIN_2{ 6 }; // Datenleitung für den DHT-Sensor 2 (außen)
constexpr bool RELAIS_EIN{ LOW };
constexpr bool RELAIS_AUS{ !RELAIS_EIN };
#define DHTTYPE DHT11 // DHT 22 geändert DHT11
// ******* Korrekturwerte der einzelnen Sensorwerte *******
constexpr uint8_t Korrektur_t_1{ 0 }; // Korrekturwert Innensensor Temperatur
constexpr uint8_t Korrektur_t_2{ 0 }; // Korrekturwert Außensensor Temperatur
constexpr uint8_t Korrektur_h_1{ 0 }; // Korrekturwert Innensensor Luftfeuchtigkeit
constexpr uint8_t Korrektur_h_2{ 0 }; // Korrekturwert Außensensor Luftfeuchtigkeit
//***********************************************************
constexpr uint8_t SCHALTmin{ 5 }; // minimaler Taupunktunterschied, bei dem das Relais schaltet
constexpr uint8_t HYSTERESE{ 1 }; // Abstand von Ein- und Ausschaltpunkt
constexpr int8_t TEMP1_min{ 10 }; // Minimale Innentemperatur, bei der die Lüftung aktiviert wird
constexpr int8_t TEMP2_min{ -10 }; // Minimale Außentemperatur, bei der die Lüftung aktiviert wird
DHT dht1(DHTPIN_1, DHTTYPE); //Der Innensensor wird ab jetzt mit dht1 angesprochen
DHT dht2(DHTPIN_2, DHTTYPE); //Der Außensensor wird ab jetzt mit dht2 angesprochen
constexpr uint8_t sensors{ 2 };
struct SENS {
DHT s;
int16_t t;
uint8_t h;
int8_t kH;
int8_t kT;
int8_t tMin;
};
SENS sens[sensors]{
{
dht1,
0,
0,
Korrektur_h_1,
Korrektur_t_1,
TEMP1_min,
},
{
dht2,
0,
0,
Korrektur_h_2,
Korrektur_t_2,
TEMP2_min,
},
};
constexpr uint8_t row{ 20 };
constexpr uint8_t col{ 4 };
LiquidCrystal_I2C lcd(0x27, row, col); // LCD: I2C-Addresse und Displaygröße setzen
constexpr uint32_t dataIntervall{ 10000 }; // 10 Sekunden
uint32_t lastDataTime;
void setup() {
Serial.begin(9600); // Serielle Ausgabe, falls noch kein LCD angeschlossen ist
Serial.println(F("Teste Sensoren.."));
pinMode(RELAIPIN, OUTPUT); // Relaispin als Output definieren
digitalWrite(RELAIPIN, RELAIS_AUS); // Relais ausschalten
lcd.init();
lcd.backlight();
lcd.setCursor(2, 0);
lcd.print(F("Teste Sensoren.."));
byte Grad[8] = { B00111, B00101, B00111, B0000, B00000, B00000, B00000, B00000 }; // Sonderzeichen ° definieren
lcd.createChar(0, Grad);
byte Strich[8] = { B00100, B00100, B00100, B00100, B00100, B00100, B00100, B00100 }; // Sonderzeichen senkrechter Strich definieren
lcd.createChar(1, Strich);
SDInit();
for (byte b = 0; b < sensors; b++) { sens[b].s.begin(); }
// DS3231 initialisieren
if (!rtc.begin()) {
Serial.println(F("Fehler beim Initialisieren des DS3231 RTC Moduls!"));
while (1)
;
}
}
void loop() {
if (millis() - lastDataTime > dataIntervall) {
lastDataTime = millis();
getSensorData();
printDisplay();
actor();
SDWerte();
}
//now = rtc.now();
// if (now.second() != lastSecond) {
// lastSecond = now.second();
// Serial.print(now.hour());
// Serial.print(':');
// Serial.print(now.minute());
// Serial.print(':');
// Serial.println(now.second());
// }
}
//
//
void serialDisplay() {
// Werteausgabe auf Serial Monitor
for (byte b = 0; b < sensors; b++) {
Serial.print(F("Sensor-"));
Serial.print(b + 1);
Serial.print(F("1: Luftfeuchtigkeit: "));
Serial.print(sens[b].h);
Serial.print(F("% Temperatur: "));
Serial.print(sens[b].t);
Serial.print(F("°C "));
Serial.print(F(" Taupunkt: "));
Serial.print(taupunkt(sens[b].t, sens[b].h));
Serial.println(F("°C "));
}
for (byte b = 0; b < 60; b++) { Serial.print('-'); }
//Serial.println("\r\n\r\n");
}
//
void printDisplay() {
static uint32_t lastDisplayTime = 0;
static uint8_t displayType = 0;
if (millis() - lastDisplayTime > 5000) {
serialDisplay();
lcd.clear();
displayType++;
if (errcheck() == true) { displayType = 2; }
switch (displayType) {
case 0:
displayOne();
break;
case 1:
displayTwo();
break;
case 2:
displayThree();
break;
default:
displayType = 0;
break;
}
}
}
//
void displayOne() {
for (byte b = 0; b < sensors; b++) {
lcd.setCursor(0, b);
lcd.print('S');
lcd.print(b + 1);
lcd.print(": ");
lcd.print(sens[b].t);
lcd.write((uint8_t)0); // Sonderzeichen °C
lcd.print('C');
lcd.write((uint8_t)1); // Sonderzeichen |
lcd.print(sens[b].h);
lcd.print(F(" %"));
lcd.setCursor(0, b + 2);
lcd.print(F("Taupunkt "));
lcd.print(b + 1);
lcd.print(": ");
lcd.print(taupunkt(sens[b].t, sens[b].h));
lcd.write((uint8_t)0); // Sonderzeichen °C
lcd.print('C');
}
}
//
void displayTwo() {
lcd.setCursor(0, 0);
lcd.print(F("Lueftung "));
if (digitalRead(RELAIPIN) == RELAIS_EIN) {
lcd.print("AN");
} else {
lcd.print(F("AUS"));
}
lcd.setCursor(0, 1);
lcd.print(F("Delta TP: "));
lcd.print(taupunkt(sens[0].t, sens[0].h) - taupunkt(sens[1].t, sens[1].h));
lcd.write((uint8_t)0); // Sonderzeichen °C
lcd.write('C');
}
//
void displayThree() {
for (byte b = 0; b < sensors; b++) {
if (isnan(sens[b].h) || isnan(sens[b].t) || sens[b].h > 100 || sens[b].h < 1 || sens[b].t < -40 || sens[b].t > 80) {
Serial.print(F("Fehler beim Auslesen vom "));
Serial.print(b + 1);
Serial.println(F(". Sensor!"));
lcd.setCursor(0, b + 1);
lcd.print(F("Fehler Sensor "));
lcd.print(b + 1);
} else {
lcd.setCursor(0, b + 1);
lcd.print(F("Sensor "));
lcd.print(b + 1);
lcd.print(F(" in Ordnung"));
}
}
}
//
float taupunkt(float t, float r) {
float a = 7.5, b = 237.3;
if (t < 0) {
a = 7.6;
b = 240.7;
}
// Sättigungsdampfdruck in hPa
float sdd = 6.1078 * pow(10, (a * t) / (b + t));
// Dampfdruck in hPa
float dd = sdd * (r / 100);
// v-Parameter
float v = log10(dd / 6.1078);
// Taupunkttemperatur (°C)
float tt = (b * v) / (a - v);
return { tt };
}
//
//
void actor() {
bool val = false;
float DeltaTP = taupunkt(sens[0].t, sens[0].h) - taupunkt(sens[1].t, sens[1].h);
if (DeltaTP > (SCHALTmin + HYSTERESE)) { val = true; }
if (DeltaTP < (SCHALTmin)) { val = false; }
for (byte b = 0; b < sensors; b++) {
if ((sens[b].t < sens[b].tMin) || isnan(sens[b].h) || isnan(sens[b].t) || sens[b].h > 100 || sens[b].h < 1 || sens[b].t > 80) { val = false; }
}
if (val == true) { digitalWrite(RELAIPIN, RELAIS_EIN); } // Relais einschalten
else {
digitalWrite(RELAIPIN, RELAIS_AUS);
}
}
bool errcheck() {
bool ret = false;
for (byte b = 0; b < sensors; b++) {
if (isnan(sens[b].h) || isnan(sens[b].t) || sens[b].h > 100 || sens[b].h < 1 || sens[b].t < -40 || sens[b].t > 80) { ret = true; }
}
return ret;
}
//
//
void SDInit() {
// SD-Karte initialisieren
Serial.print(F("SD Karte "));
if (!SD.begin(chipSelect)) {
Serial.println(F("konnte nicht initialisiert werden."));
return;
}
Serial.println(F("bereit."));
// Neue Datei erstellen oder bestehende öffnen
dataFile = SD.open("daten.csv", FILE_WRITE);
if (dataFile) {
dataFile.println(F("Datei erstellen im Setupteil des Sketches"));
dataFile.println(millis()); // Zeile kann entfallen war zum Test da Programm immer neu startete
dataFile.print(F("Datum,Uhrzeit,")); // Überschrift der Tabelle
dataFile.print(F("Temp innen (C),Luftfeuchtigkeit (%),Taupunkt (C),"));
dataFile.print(F("Luftdruck (hPa),"));
dataFile.print(F("Temp außen (C),Luftfeuchtigkeit (%),Taupunkt (C),"));
dataFile.println(F("Lüfter ein,Lüfter aus,Lüfterzeit"));
Serial.println(F("Erstellen der Datei"));
} else {
Serial.println(F("Fehler beim Erstellen der Datei."));
}
dataFile.close();
}
//
void SDWerte() {
// SD-Karte initialisieren
Serial.print(F("SD Karte Werte schreiben"));
if (!SD.begin(chipSelect)) {
Serial.println(F("konnte nicht initialisiert werden."));
return;
}
Serial.println(F("bereit."));
// Neue Datei erstellen oder bestehende öffnen
dataFile = SD.open("daten.csv", FILE_WRITE);
if (dataFile) {
//dataFile.println(F("Datei erstellen im Setupteil des Sketches"));
//dataFile.println(millis()); // Zeile kann entfallen war zum Test da Programm immer neu startete
dataFile.print(F(", , ")); // Platzhalter
delay(5);
dataFile.print(sens[0].t); // Temp innen (C),(%),Taupunkt (C),"));
delay(5);
dataFile.print(F(","));
delay(5);
dataFile.print(sens[0].h); // Luftfeuchtigkeit
delay(5);
dataFile.print(F(", , , ")); // Platzhalter
delay(5);
dataFile.print(sens[1].t); // Temp außen (C),(%),Taupunkt (C),"));
delay(5);
dataFile.print(F(","));
delay(5);
dataFile.println(sens[1].h); // Luftfeuchtigkeit
Serial.println(F("Erstellen der Datei"));
} else {
Serial.println(F("Fehler beim Erstellen der Datei."));
}
dataFile.close();
}
//
void getSensorData() {
for (byte b = 0; b < sensors; b++) {
sens[b].h = sens[b].s.readHumidity() + sens[b].kH;
sens[b].t = sens[b].s.readTemperature() + sens[b].kT;
}
}
Probier mal.
Ich habs kommentiert.
/*
https://forum.arduino.cc/t/anderungen-im-setup-programm-startet-neu/1406435/15
code my_xy_projekt
*/
// Dieser Code benötigt zwingend die folgenden Libraries:
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <avr/wdt.h>
#include <RTClib.h>
/* für den Kartenleser */
#include <SD.h>
const int chipSelect = 10;
// File für SD Karte
File dataFile;
// DS3231 RTC Modul
RTC_DS3231 rtc;
DateTime now;
uint8_t lastSecond = 255;
constexpr uint8_t RELAIPIN{ 4 }; // Anschluss des Lüfter-Relais
constexpr uint8_t DHTPIN_1{ 5 }; // Datenleitung für den DHT-Sensor 1 (innen)
constexpr uint8_t DHTPIN_2{ 6 }; // Datenleitung für den DHT-Sensor 2 (außen)
constexpr bool RELAIS_EIN{ LOW };
constexpr bool RELAIS_AUS{ !RELAIS_EIN };
bool lastRelaisState; // Merker für Schaltzustand Relais
constexpr uint32_t sdWriteIntervall {30000}; // schreibintervall SD-Karte
uint32_t sdLastWriteTime; // letzte Zeit wann geschrieben wurde
#define DHTTYPE DHT11 // DHT 22 geändert DHT11
// ******* Korrekturwerte der einzelnen Sensorwerte *******
constexpr uint8_t Korrektur_t_1{ 0 }; // Korrekturwert Innensensor Temperatur
constexpr uint8_t Korrektur_t_2{ 0 }; // Korrekturwert Außensensor Temperatur
constexpr uint8_t Korrektur_h_1{ 0 }; // Korrekturwert Innensensor Luftfeuchtigkeit
constexpr uint8_t Korrektur_h_2{ 0 }; // Korrekturwert Außensensor Luftfeuchtigkeit
//***********************************************************
constexpr uint8_t SCHALTmin{ 5 }; // minimaler Taupunktunterschied, bei dem das Relais schaltet
constexpr uint8_t HYSTERESE{ 1 }; // Abstand von Ein- und Ausschaltpunkt
constexpr int8_t TEMP1_min{ 10 }; // Minimale Innentemperatur, bei der die Lüftung aktiviert wird
constexpr int8_t TEMP2_min{ -10 }; // Minimale Außentemperatur, bei der die Lüftung aktiviert wird
DHT dht1(DHTPIN_1, DHTTYPE); //Der Innensensor wird ab jetzt mit dht1 angesprochen
DHT dht2(DHTPIN_2, DHTTYPE); //Der Außensensor wird ab jetzt mit dht2 angesprochen
constexpr uint8_t sensors{ 2 };
struct SENS
{
DHT s;
int16_t t;
uint8_t h;
int8_t kH;
int8_t kT;
int8_t tMin;
};
SENS sens[sensors]
{
{
dht1,
0,
0,
Korrektur_h_1,
Korrektur_t_1,
TEMP1_min,
},
{
dht2,
0,
0,
Korrektur_h_2,
Korrektur_t_2,
TEMP2_min,
},
};
constexpr uint8_t row{ 20 };
constexpr uint8_t col{ 4 };
LiquidCrystal_I2C lcd(0x27, row, col); // LCD: I2C-Addresse und Displaygröße setzen
constexpr uint32_t dataIntervall{ 10000 }; // 10 Sekunden
uint32_t lastDataTime;
void setup()
{
Serial.begin(9600); // Serielle Ausgabe, falls noch kein LCD angeschlossen ist
Serial.println(F("Teste Sensoren.."));
pinMode(RELAIPIN, OUTPUT); // Relaispin als Output definieren
digitalWrite(RELAIPIN, RELAIS_AUS); // Relais ausschalten
lcd.init();
lcd.backlight();
lcd.setCursor(2, 0);
lcd.print(F("Teste Sensoren.."));
byte Grad[8] = { B00111, B00101, B00111, B0000, B00000, B00000, B00000, B00000 }; // Sonderzeichen ° definieren
lcd.createChar(0, Grad);
byte Strich[8] = { B00100, B00100, B00100, B00100, B00100, B00100, B00100, B00100 }; // Sonderzeichen senkrechter Strich definieren
lcd.createChar(1, Strich);
SDInit();
for (byte b = 0; b < sensors; b++)
{
sens[b].s.begin();
}
// DS3231 initialisieren
if (!rtc.begin())
{
Serial.println(F("Fehler beim Initialisieren des DS3231 RTC Moduls!"));
while (1)
;
}
}
void loop()
{
if (millis() - lastDataTime > dataIntervall)
{
lastDataTime = millis();
getSensorData();
printDisplay();
actor();
if (millis() - sdLastWriteTime > sdWriteIntervall)
{ SDWerte(); }
}
//now = rtc.now();
// if (now.second() != lastSecond) {
// lastSecond = now.second();
// Serial.print(now.hour());
// Serial.print(':');
// Serial.print(now.minute());
// Serial.print(':');
// Serial.println(now.second());
// }
}
//
//
void serialDisplay()
{
// Werteausgabe auf Serial Monitor
for (byte b = 0; b < sensors; b++)
{
Serial.print(F("Sensor-"));
Serial.print(b + 1);
Serial.print(F("1: Luftfeuchtigkeit: "));
Serial.print(sens[b].h);
Serial.print(F("% Temperatur: "));
Serial.print(sens[b].t);
Serial.print(F("°C "));
Serial.print(F(" Taupunkt: "));
Serial.print(taupunkt(sens[b].t, sens[b].h));
Serial.println(F("°C "));
}
for (byte b = 0; b < 60; b++)
{
Serial.print('-');
}
//Serial.println("\r\n\r\n");
}
//
void printDisplay()
{
static uint32_t lastDisplayTime = 0;
static uint8_t displayType = 0;
if (millis() - lastDisplayTime > 5000)
{
serialDisplay();
lcd.clear();
displayType++;
if (errcheck() == true)
{
displayType = 2;
}
switch (displayType)
{
case 0:
displayOne();
break;
case 1:
displayTwo();
break;
case 2:
displayThree();
break;
default:
displayType = 0;
break;
}
}
}
//
void displayOne()
{
for (byte b = 0; b < sensors; b++)
{
lcd.setCursor(0, b);
lcd.print('S');
lcd.print(b + 1);
lcd.print(": ");
lcd.print(sens[b].t);
lcd.write((uint8_t)0); // Sonderzeichen °C
lcd.print('C');
lcd.write((uint8_t)1); // Sonderzeichen |
lcd.print(sens[b].h);
lcd.print(F(" %"));
lcd.setCursor(0, b + 2);
lcd.print(F("Taupunkt "));
lcd.print(b + 1);
lcd.print(": ");
lcd.print(taupunkt(sens[b].t, sens[b].h));
lcd.write((uint8_t)0); // Sonderzeichen °C
lcd.print('C');
}
}
//
void displayTwo()
{
lcd.setCursor(0, 0);
lcd.print(F("Lueftung "));
if (digitalRead(RELAIPIN) == RELAIS_EIN)
{
lcd.print("AN");
}
else
{
lcd.print(F("AUS"));
}
lcd.setCursor(0, 1);
lcd.print(F("Delta TP: "));
lcd.print(taupunkt(sens[0].t, sens[0].h) - taupunkt(sens[1].t, sens[1].h));
lcd.write((uint8_t)0); // Sonderzeichen °C
lcd.write('C');
}
//
void displayThree()
{
for (byte b = 0; b < sensors; b++)
{
if (isnan(sens[b].h) || isnan(sens[b].t) || sens[b].h > 100 || sens[b].h < 1 || sens[b].t < -40 || sens[b].t > 80)
{
Serial.print(F("Fehler beim Auslesen vom "));
Serial.print(b + 1);
Serial.println(F(". Sensor!"));
lcd.setCursor(0, b + 1);
lcd.print(F("Fehler Sensor "));
lcd.print(b + 1);
}
else
{
lcd.setCursor(0, b + 1);
lcd.print(F("Sensor "));
lcd.print(b + 1);
lcd.print(F(" in Ordnung"));
}
}
}
//
float taupunkt(float t, float r)
{
float a = 7.5, b = 237.3;
if (t < 0)
{
a = 7.6;
b = 240.7;
}
// Sättigungsdampfdruck in hPa
float sdd = 6.1078 * pow(10, (a * t) / (b + t));
// Dampfdruck in hPa
float dd = sdd * (r / 100);
// v-Parameter
float v = log10(dd / 6.1078);
// Taupunkttemperatur (°C)
float tt = (b * v) / (a - v);
return { tt };
}
//
//
void actor()
{
bool val = false;
float DeltaTP = taupunkt(sens[0].t, sens[0].h) - taupunkt(sens[1].t, sens[1].h);
if (DeltaTP > (SCHALTmin + HYSTERESE))
{
val = true;
}
if (DeltaTP < (SCHALTmin))
{
val = false;
}
for (byte b = 0; b < sensors; b++)
{
if ((sens[b].t < sens[b].tMin) || isnan(sens[b].h) || isnan(sens[b].t) || sens[b].h > 100 || sens[b].h < 1 || sens[b].t > 80)
{
val = false;
}
}
if (val == true)
{
digitalWrite(RELAIPIN, RELAIS_EIN); // Relais einschalten
}
else
{
digitalWrite(RELAIPIN, RELAIS_AUS);
}
if (digitalRead(RELAIPIN) != lastRelaisState) // relaisstatus geändert
{
lastRelaisState = digitalRead(RELAIPIN); // status merken
SDWerte(); // Daten schreiben
}
}
bool errcheck()
{
bool ret = false;
for (byte b = 0; b < sensors; b++)
{
if (isnan(sens[b].h) || isnan(sens[b].t) || sens[b].h > 100 || sens[b].h < 1 || sens[b].t < -40 || sens[b].t > 80)
{
ret = true;
}
}
return ret;
}
//
//
void SDInit()
{
// SD-Karte initialisieren
Serial.print(F("SD Karte "));
if (!SD.begin(chipSelect))
{
Serial.println(F("konnte nicht initialisiert werden."));
return;
}
Serial.println(F("bereit."));
// Neue Datei erstellen oder bestehende öffnen
dataFile = SD.open("daten.csv", FILE_WRITE);
if (dataFile)
{
dataFile.println(F("Datei erstellen im Setupteil des Sketches"));
dataFile.println(millis()); // Zeile kann entfallen war zum Test da Programm immer neu startete
dataFile.print(F("Datum,Uhrzeit,")); // Überschrift der Tabelle
dataFile.print(F("Temp innen (C),Luftfeuchtigkeit (%),Taupunkt (C),"));
dataFile.print(F("Luftdruck (hPa),"));
dataFile.print(F("Temp außen (C),Luftfeuchtigkeit (%),Taupunkt (C),"));
dataFile.println(F("Lüfter ein,Lüfter aus,Lüfterzeit"));
Serial.println(F("Erstellen der Datei"));
}
else
{
Serial.println(F("Fehler beim Erstellen der Datei."));
}
dataFile.close();
}
//
void SDWerte()
{
sdLastWriteTime = millis();
// SD-Karte initialisieren
Serial.print(F("SD Karte Werte schreiben"));
// Neue Datei erstellen oder bestehende öffnen
dataFile = SD.open("daten.csv", FILE_WRITE);
if (dataFile)
{
//dataFile.println(F("Datei erstellen im Setupteil des Sketches"));
//dataFile.println(millis()); // Zeile kann entfallen war zum Test da Programm immer neu startete
dataFile.print(F(", , ")); // Platzhalter
delay(5);
dataFile.print(sens[0].t); // Temp innen (C),(%),Taupunkt (C),"));
delay(5);
dataFile.print(F(","));
delay(5);
dataFile.print(sens[0].h); // Luftfeuchtigkeit
delay(5);
dataFile.print(F(", , , ")); // Platzhalter
delay(5);
dataFile.print(sens[1].t); // Temp außen (C),(%),Taupunkt (C),"));
delay(5);
dataFile.print(F(","));
delay(5);
dataFile.println(sens[1].h); // Luftfeuchtigkeit
Serial.println(F("Erstellen der Datei"));
}
else
{
Serial.println(F("Fehler beim Erstellen der Datei."));
}
dataFile.close();
}
//
void getSensorData()
{
for (byte b = 0; b < sensors; b++)
{
sens[b].h = sens[b].s.readHumidity() + sens[b].kH;
sens[b].t = sens[b].s.readTemperature() + sens[b].kT;
}
}
Ich habe den BMP280 zugefügt und Led`s jetzt ist ein DHT verstorben,wenn ich Ersatz bekomme machte ich weiter.Dann möchte ich die LCD Anzeige noch anpassen oder entfernen Fehler dann über LED kombinationen ausgeben gestalten.Jetzt kompiliert mit 89% Programspeicher und 65% dynamischer Speicher.
Gruß
Walter