Code für ansteuerung von Pumpen funktioniert nicht

Nicht schlecht! Gut gemacht.
Deine wichtigste Frage

  return returnWert; // Wo wird der returnWert denn verarbeitet?

Warte ab.

Las mich mal oben anfangen.
Grundsätzlich: Wenn sich Daten nicht verändern können: const.
Immer auf den kleinsten möglichen Wert kürzen!: byte
Ein byte braucht ein byte. Ein int braucht 2 byte (manchmal auch mehr...) und kann negativ sein.
Aus diesem Grund beschreibe Pins wenigstens als uint8_t.
Also unsigned (immer positiver Wert).
So und nu:

  if ((digitalRead(tasterGruen) == LOW) && (pumpenAnsteuerung() == LOW)) // Hier fragst du zusätzlich ab ob die Funktion nicht schon läuft.

Genau.
Ich gehe immer davon aus, das es noch Taste gelb, rot, blau, rosa, regenbogen, pink gibt.

Die Bedingung macht: Wenn Taste gruen nicht gedrückt UND auch keine pumpenansteuerung aktiv, dann darf die Pumpe mit den übergebenen Werten starten.

Danach werden die Werte wie von Dir gewollt gesetzt.
Mit:

    pumpenAnsteuerung();

Wird die Pumpe ausgelöst.
In der Funktion von dir erkannt:

  bool returnWert = false; // Hier definierst du die Variable "returnWert" und setzt sie auf false

Das ist der Ausgangswert.
Dieser wird zurück gegegeben, wenn

    returnWert = true; // Wenn die Pumpen laufen setzt du die Variable auf true. Ich vermute um den zustand der Funktion PumpenAnsteuerung abfragen zu können?!

Na bitte! Richtig erkannt!

Es gibt einen Rückgabewert.
während void nichts ist und auch nichts zurück gibt, ist hier

bool pumpenAnsteuerung()

festgelegt, das ein boolWert zurückgegeben wird. (also true oder false)
das passiert in der letzten Zeile:

  return returnWert; // Wo wird der returnWert denn verarbeitet?

So und wo wird die verarbeitet ist relativ einfach:
An zwei Stellen!

Punkt 1:

  if ((digitalRead(tasterGruen) == LOW) && (pumpenAnsteuerung() == LOW)) // Hier fragst du zusätzlich ab ob die Funktion nicht schon läuft.

Genau. Die Pumpe läuft. Es gibt einen ReturnWert, der true ist - damit darf nicht erneut auf die Taste reagiert werden.
Punkt 2:

  if (pumpenAnsteuerung()) pumpenAnsteuerung(); // Verstehe nicht was hier passiert.

Das ist inhaltlich genau so:

  if (pumpenAnsteuerung()== HIGH) pumpenAnsteuerung();

Solange die Pumpensteuerung (ausgelöst durch irgendwas) läuft, muss gesichert sein, das die auch wieder aus geht.
Die Werte wann Schluss ist, hast Du mit dem Auslöser übergeben.

Verstanden wo ich hin will?

1 Like