PumpenSteuerung/src/main.cpp

101 lines
2.3 KiB
C++
Raw Normal View History

2020-01-26 15:37:33 +01:00
#include <Arduino.h>
#include <Ticker.h>
bool allow;
static const uint8_t WasserSensorPin = 14;
static const uint8_t DruckSensorPin = 12;
static const uint8_t SchuetzPin = 13;
Ticker tick;
void pumpeSchalten(bool on) {
// digitalWrite(4,on);
if (allow) {
digitalWrite(SchuetzPin, on);
Serial.println("pumpe wird geschalten");
} else {
Serial.println("Schalten des Schütz gesperrt durch Timeout");
}
}
ICACHE_RAM_ATTR void DruckschalterInt() {
if (digitalRead(DruckSensorPin) == HIGH) {
//pumpe einschalten
Serial.println("Druck Sensor EIN");
pumpeSchalten(true);
} else {
//pumpe ausschalten
Serial.println("Druck Sensor AUS");
pumpeSchalten(false);
}
}
void WasserSensorCheck() {
if (digitalRead(WasserSensorPin) == LOW) {
Serial.println("Wasser Sensor AUS");
//kein Wasser dh timer auf 10min stellen
allow = false;
Serial.println("Schalte pumpe aus");
pumpeSchalten(false);
Serial.println("warte 30min");
tick.detach();
tick.once(1800, []() {
if (digitalRead(WasserSensorPin)) {
allow = true;
Serial.println("Einschalten der Pumpe wieder erlaubt.");
//pruefen ob drucksensor ein
DruckschalterInt();
}
});
} else {
Serial.println("Wasser Sensor EIN");
}
}
ICACHE_RAM_ATTR void WasserSensorInt() {
WasserSensorCheck();
}
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
pinMode(WasserSensorPin, INPUT);
pinMode(DruckSensorPin, INPUT);
digitalWrite(SchuetzPin, LOW); //pumpe anfangs sofort abschalten
pinMode(SchuetzPin, OUTPUT);
Serial.begin(9600);
Serial.println("\n\n\n\nstartup of ESP");
//digitalWrite(LED_BUILTIN, LOW);
//initial measurement of water state
delay(1000);
//allow = digitalRead(WasserSensorPin);
allow=true;
WasserSensorCheck();
DruckschalterInt();
attachInterrupt(digitalPinToInterrupt(DruckSensorPin), DruckschalterInt, CHANGE);
attachInterrupt(digitalPinToInterrupt(WasserSensorPin), WasserSensorInt, CHANGE);
Serial.println("startup sequence complete!\n");
digitalWrite(LED_BUILTIN, HIGH);
}
void loop() {
}