#include "DHT.h" //DHT Bibliothek laden
#include <EEPROM.h>
#define DHTTYPE DHT22
//DHT11 HW: Mit Blick auf die Vorderseite des DHT11 wird der linke
// Kontakt mit Pin 3,
// der mittlere mit 5V und der rechte mit GND
// am Mikrocontroller verbunden.
struct {
int Tag;
int Zeit;
float Temperature;
float Humidity;
} Data;
int DHTPIN = 3;
DHT DhtSensor (DHTPIN, DHTTYPE);
int currentTime = 0;
int currentDay = 1;
int Test = 0; // 1: Testsimulation ; 0 Wetterstation
int ZeitV = 10;
float deltaT , deltaH;
int t,h;
float T, H;
int buttonPin = 4;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
// Use internal pull-up resistor
DhtSensor.begin();
Serial.begin(9600);
/*Serial.print("Tag Zeit");
Serial.print(" ; ");
Serial.print("Temperatur");
Serial.print(" ; ");
Serial.println("Luftfeuchtigkeit");*/
for (int i=0; i < 672; i= i+2){
Serial.print (i);
Serial.print (" Temp ");
T = EEPROM.get(i,t)/100;
Serial.println (T);
i=i+2;
Serial.print (i);
Serial.print (" Luftfeuchtigkeit ");
H = EEPROM.get(i,h)/100;
Serial.println (H);
}
}
void loop() {
if (Test ==1){
if ( currentDay <= 7 ) {
deltaT = 2*sin(millis()*2*PI/(24*ZeitV));
deltaH = 20*sin (millis()*2*PI/(24*ZeitV)+PI);
Data.Temperature = DhtSensor.readTemperature() + deltaT ;
// n. Mal (random (0,21)-10)/10 am Tagesende addieren
Data.Tag = currentDay;
Data.Zeit = currentTime;
Data.Humidity = DhtSensor.readHumidity() + deltaH;
Serial.print("T");
Serial.print(Data.Tag);
Serial.print(" ");
Serial.print(Data.Zeit);
Serial.print("h");
Serial.print(" ; ");
Serial.print(Data.Temperature);
Serial.print(" ; ");
Serial.print(Data.Humidity);
Serial.println("%");
currentTime ++;
if (currentTime>=24) {
currentTime =0;
currentDay ++;
if (currentDay == 8) {
Serial.println (" Messung beendet : 7 Tagen");
}
}
}
}
else {
while (digitalRead(buttonPin) == HIGH)
{}
for (int pos=0 ; pos < 672; pos = pos+2){
t = DhtSensor.readTemperature()*100;
h = DhtSensor.readHumidity()*100;
EEPROM.put (pos, t);
pos = pos+2;
EEPROM.put (pos, h);
//delay (3600000);
}
//Serial.println("Wetterstation : Code nicht fertig");
}
delay (ZeitV); // dann wieder 5 Sek.
}