Skip to content

Instantly share code, notes, and snippets.

@webghostx
Last active December 2, 2016 16:30
Show Gist options
  • Save webghostx/a14dbf91729aea5eb6bbd07bc2590d72 to your computer and use it in GitHub Desktop.
Save webghostx/a14dbf91729aea5eb6bbd07bc2590d72 to your computer and use it in GitHub Desktop.
12 Volt Frostwächter mit Arduino, DHT11, einem Heizlüfter und einem Relais
/*
12 Volt Frostwächter mit Arduino Nano
http://usysto.net/12-volt-frostwaechter-mit-arduino_390
*/
#include <dht.h> // DHTLib Version 0.1.14 https://github.com/webghostx/Arduino-DHTLib
dht DHT;
const int minTemperature = 5; // (°C) unterhalb dieser Temperatur springt die Heizung an
const int intvalTime = 9 * 60 * 1000; // (ms) Intervalzeit
const int runTime = 3 * 60 * 1000; // (ms) Zeit in welcher innerhalb des Intervalls geheizt werden soll
const int dhtPin = 4; // (digital) Temperatursensor Pin
const int relayPin = 5; // (digital) Relais Pin
const bool isLowActiv = true; // true wenn das Relais Low-Active ist, sonst false
void setup() {
//Serial.begin(9600); // debug
pinMode(dhtPin, INPUT); // Den digitalen Pin für den DHT11 als Eingang festlegen
pinMode(relayPin, OUTPUT); // Den digitalen Pin für das Relais als Ausgang festlegen
relaySwitch(LOW); // verhindern dass das Relais beim Start einschaltet
}
void loop() {
DHT.read11(dhtPin); // Daten des DHT11 lesen
//Serial.println(DHT.temperature, 0); // debug
intval(intvalTime, runTime); // kontinuierlicher Intervall
delay(1000); // kurz warten
}
void intval (unsigned long intvalTime, unsigned long runTime) {
static unsigned long startMillis; // festhalten wann der Intervall gestartet wurde
if (millis() - startMillis > intvalTime ) {
if (DHT.temperature < minTemperature) // Heizung nur starten wenn Temperatur unterschritten
relaySwitch(HIGH);
startMillis = millis();
}
if (millis() - startMillis > runTime )
relaySwitch(LOW);
}
void relaySwitch(bool state) {
if (isLowActiv == true)
state = !state; // Status umkehren wenn Relais Low-Active ist
//Serial.println(state); // debug
if (digitalRead(relayPin) != state)
digitalWrite(relayPin, state);
}
// end - http://usysto.net/
@webghostx
Copy link
Author

Beispiel der Umsetzung unter: 12 Volt Frostwächter mit Arduino

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment