Habe mal meine Vermutungen in den Code Kommentiert.
// Forensketch - kompiliert fehlerfrei - reiner Test auf Basis von
// https://forum.arduino.cc/t/code-fur-ansteuerung-von-pumpen-funktioniert-nicht/900401?u=my_xy_projekt
const byte tasterGruen = 12;
const byte relaisSchlauch = 9;
const byte relaisLuft = 8;
unsigned int colaTimer;
unsigned int asbachTimer;
unsigned long lastMillis;
void setup()
{
pinMode(tasterGruen, INPUT_PULLUP);
pinMode(relaisSchlauch, OUTPUT);
pinMode(relaisLuft, OUTPUT);
}
void loop()
{
if ((digitalRead(tasterGruen) == LOW) && (pumpenAnsteuerung() == LOW)) // Hier fragst du zusätzlich ab ob die Funktion nicht schon läuft.
{
asbachTimer = 2000;
colaTimer = 2000;
lastMillis = millis();
pumpenAnsteuerung();
}
if (pumpenAnsteuerung()) pumpenAnsteuerung(); // Verstehe nicht was hier passiert.
}
bool pumpenAnsteuerung()
{
bool returnWert = false; // Hier definierst du die Variable "returnWert" und setzt sie auf false
if ((millis() - lastMillis) <= colaTimer)
{
digitalWrite(relaisLuft, HIGH);
returnWert = true; // Wenn die Pumpen laufen setzt du die Variable auf true. Ich vermute um den zustand der Funktion PumpenAnsteuerung abfragen zu können?!
}
else
{
digitalWrite(relaisLuft, LOW);
}
if ((millis() - lastMillis) <= asbachTimer)
{
digitalWrite(relaisSchlauch, HIGH);
returnWert = true;
}
else
{
digitalWrite(relaisSchlauch, LOW);
}
return returnWert; // Wo wird der returnWert denn verarbeitet?
}