Mahlzeit Allemann,
ich wollte eine kleine Lüftersteuerung basteln, basierend auf der Luftfeuchtigkeit für innen und aussen.
Hatte erst ganz komische Ausgaben über den Seriellen Monitor. Nachdem ich die Baudrate etwas erhöht hatte, bekomme ich lesbare Ausgaben. Wenn ich nun ein paar Serial.println's einfüge, kann ich nachvollziehen, dass das Setup ausgeführt wird, jedoch bekomme ich einen wdt Error. Als wenn der Watchdog den Microcontroller killed -.- Wenn ich einen Beispielsketch nehme mit meinen DHT's, funktioniert das ohne Probleme. Ich scheine was in meinem Sketch verbockt zu haben. Hat da einer eine Idee? Danke im Vorraus!
Hier mal mein Sketch:
#include <DHT.h>
/* Pinout:
*
* Feuchtigkeitssensor Innen Pin 2
* Feuchtigkeitssensor Außen Pin 3
* Relais Pin 4
* Taster Grenzwert Feuchtigkeit Inkrement Pin 5
* Taster Grenzwert Feuchtigkeit Dekrement Pin 6
*
*/
/*Konstanten für die Regelung*/
int maxHum = 70; //Einstellung der maximalen Außenluftfeuchtigkeit Außen in %
const int humStep = 5; //Schrittweite Verstellung maximale Luftfecuhtigkeit Außen
const int offsetHum = 0; //Werteverschiebung für Luftfeuchtigkeit
const int offsetTemp = 0; //Werteverschiebung für Temperatur
//const int intervall = 60*0.5; //Intervall für die Ansteuerung des Lüfters. Wert Sekunden*Minuten
#define DHTTYPE DHT11
#define relais 4
#define humUp 5
#define humDown 6
DHT dht_innen(2, DHT11);
DHT dht_aussen(3, DHT11);
float hum_innen = 0;
float hum_aussen = 0;
float temp_innen = 0;
float temp_aussen = 0;
int cnt=0;
int sek=0;
void setup() {
Serial.begin(115200);
Serial.println("Before DHT begin");
dht_innen.begin();
dht_aussen.begin();
Serial.println("After DHT begin");
pinMode(relais, OUTPUT);
pinMode(humUp, INPUT_PULLUP);
pinMode(humDown, INPUT_PULLUP);
Serial.println("After pinmode");
}
void loop() {
/* erfassen der Werte für Temperatur und Feuchtigkeit und addition des Offset */
Serial.println("Entering Loop");
hum_innen = dht_innen.readHumidity()-offsetHum;
hum_aussen = dht_aussen.readHumidity()-offsetHum;
temp_innen = dht_innen.readTemperature()-offsetTemp;
temp_innen = dht_aussen.readTemperature()-offsetTemp;
/* Verändern der Maximalen Luftfeuchtigkeit aussen */
/*if(!digitalRead(humUp)){
maxHum+=humStep;
} else if(!digitalRead(humDown)){
maxHum-=humStep;
}*/
/* Übermittlung der Werte über den Seriellen Monitor (Funktionstest) alle 15 Sekunden */
if(sek>=15){ //Wert muss kleiner Intervall sein, weil sonst diese Abfrage übersprungen wird.
Serial.print("Innen:");
Serial.print(hum_innen);
Serial.println("%");
Serial.print("Aussen:");
Serial.print(hum_aussen);
Serial.println("%");
Serial.print("Innen:");
Serial.print(temp_innen);
Serial.println("°C");
Serial.print("Aussen:");
Serial.print(temp_aussen);
Serial.println("°C");
Serial.print("Max. Feuchtigkeit: ");
Serial.println(maxHum);
Serial.print("Zeit: ");
Serial.println(sek);
}
/* Zähler. Wenn cnt==1000, dann ca. eine Sekunde rum. Vermutlich +- 50ms */
if(cnt>=1000){
Serial.println(sek); //Ausgabe der vom MC erfassten Sekunden zum Vergleicht mit der tatsächlichen Zeit
sek++;
cnt=0;
}
if(hum_aussen <= maxHum && (hum_innen) > hum_aussen){
digitalWrite(relais, HIGH);
} else {
digitalWrite(relais, LOW);
}
sek=0;
delay(1);
cnt++;
}
