#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 currentDay=1;
int currentTime=0;
int DHTPIN = 3;
DHT DhtSensor (DHTPIN, DHTTYPE);
int Test = 0 ; // 1: Test ; 0: echte Messung
int ZeitVerz = 20;
float deltaT , deltaH;
int t, hum, pos=0;
void setup() {
DhtSensor.begin();
Serial.begin(9600);
Serial.print("Tag-Zeit");
Serial.print(" ; ");
Serial.println("Temperatur/Luftfeuchtigkeit");
for (int i = 0; i < EEPROM.length(); i=i+2) {
Serial.print(i);
Serial.print(": ");
Serial.println(EEPROM.get(i,t));
i=i+2;
Serial.print(i);
Serial.print(": ");
Serial.println(EEPROM.get(i,hum));
}
}
void loop() {
if (Test ==1) {
if (currentDay <= 7){
deltaT = 2*sin (millis()*2*PI/(24*ZeitVerz));
deltaH = 20*sin (millis()*2*PI/(24*ZeitVerz)+PI);
Data.Temperature = DhtSensor.readTemperature()+deltaT;
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("Simulation beendet nach 7 Tagen");
}
}
}
}
else {// SCHREIBEN
// Daten in EEPROM schreiben
// ZeitVerz muss 1 Stunde dann entsprechen
// 2 Bytes pro info : 4 Byte pro Messung
// 4B * 24 * 7 = 672 Bytes
// 1.Temperatur Adresse 0 (Bytes 0 und 1),
// letzte Luftfeuchtigkeit Adresse 670 (Bytes 670 und 671)
if (pos<672){
t=DhtSensor.readTemperature()*100;
hum=DhtSensor.readHumidity()*100;
//Serial.println (t);
EEPROM.put(pos, t);
pos=pos+2;
EEPROM.put(pos, hum);
pos=pos+2;
}
}
delay (ZeitVerz); // dann wieder 5 Sek.
}