Inaktive Methode überspringen, wenn keine Eingabe erfolgt

Hallo zusammen,

ich habe eine Frage zum Bereich void loop(). Dort habe ich mehrere Methoden, die hintereinander ausgeführt werden. Nach dem ersten Durchlauf würde ich gerne die erste Methode in der Reihe so lange überspringen, bis eine Eingabe in der Methode erfolgt, bzw. die Methode bedient wird.

Hat hier jemand einen Vorschlag für mich, wie ich das realisieren könnte?
Vielen Dank schonmal im Voraus :slight_smile:

Grüße Felix

Du meinst Funktionen, nehme ich an?

Den ersten Durchlauf kannst Du in setup() packen, wenn das Deinen Vorstellungen wirklich entspricht - ich bin mir da aber nicht sicher.

Ansonsten in loop()

if (was auch immer) func();

Und die Abfrage must du vor die entsprechende Funktion setzen.

So wie im Beispiel von DrDiettrich.
So lange er die Funktion nicht ausführen kann, nützt dir die Abfrage in der Funktion auch nichts.

In meinen Programmen wird diese Entscheidung meist IN den Funktionen/Methoden getroffen, und nicht VOR dem Aufruf. Bei mir entscheidet die Funktion/Methode selber, wann sie was tut.

Leitsatz:
Keine Entscheidungen in loop
Keine Schleifen in loop

Dort habe ich mehrere Methoden, die hintereinander ausgeführt werden.

Genau so, sieht es bei mir auch aus.
(meistens)

Übersichtlicher und klarer geht es nicht.

combie:
In meinen Programmen wird diese Entscheidung meist IN den Funktionen/Methoden getroffen, und nicht VOR dem Aufruf. Bei mir entscheidet die Funktion/Methode selber, wann sie was tut.

Ja...stimmt, das geht so auch.

Nur welchen Vorteil hat es, wenn die Entscheidung in der Funktion getroffen wird ?

Kapselung von Zuständigkeiten.

Das fördert die Wiederverwendbarkeit von Code ungemein.
Erleichtert das debuggen.
Klarerer Code
Kürzere Entwicklungszeit

Es gibt natürlich auch Nachteile:
Längere Laufzeit
Mehr Code

Wie immer: Ein Abwägen...

Ok, danke für die Erklärung.

Ich werde das zukünftig versuchen zu berücksichtigen.

Die längere Laufzeit wage ich zu bezweifeln.

Ich mache es übrigens auch so, die Entscheidung bzw. Timer immer in die Funktion.

Die längere Laufzeit wage ich zu bezweifeln.

Der Stackframe wird bei jedem Funktionsaufruf aufgebaut.
Mit seinen Push und anschießenden Pop

Bei ca 30 Registern, können das schon eine Anzahl Takte sein....
Jeder Push oder Pop verbraucht 2 Prozessortakte
Pro Register gehen da also 4 Takte drauf.

So ist jeder Funktionsaufruf mit Kosten verbunden.

Ja, der Kompiller optimiert das auf ein Minimum.
Aber das Prinzip liegt in der Natur der Sache.