Last active
December 2, 2016 16:30
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
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/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Beispiel der Umsetzung unter: 12 Volt Frostwächter mit Arduino