Wer sagt dir denn, das es nicht möglich ist:
curmil1
prevmil1
toggel1
curmil2
prevmil2
toggel2
etc. zu nutzen.
Die Frage ist, wie willst Du es schreiben um es in Funktionen (Methoden) auszulagern? das ist einfach eine Frage des Programmdesigns.
Aber wenn Du bei dem Beispiel noch nicht darauf schließen konntes, das Du das auch mit mehreren Variabeln machen kannst, würde ich Dir für den Moment von Methoden abraten.
Denn wenn Du die selbe Methode aufrufst um damit die Zeiten von z.B. 10 Pins zu verwalten, mußst Du ja auch die 10 Zustände und 10 Zeiten sauber getrennt speichern können.
Das setzt vorraus, das Du mindestns erkennen kannst, das toggelstate und prevmicros auch mit einem Zähler als x verschiedene Variablen vorkommen kann oder das man ein Toggelstate Array und ein prevmicros array erstellt und da dann immer nur das jeweils passende Feld setzt, auswertet, löscht.
Mein Beispiel ist halt erst mal ein Hinweis in die Richtung "Freilaufender Zähler mit millis()".
Wie umfangreich Du das programmieren willst hängt ja von Dir ab.
Du kannst es auch ganz elegant machen und mit Timerinterrupts arbeiten, dann hast Du für jeden IRQ eine ISR, was ja dann auch aus der Loop ausgelagerte Funktionen sind.
Die sind dann sogar ganz präzise. die Varinte mit milis() stellt ja nur Sicher, das mindestens die Zeit und maximal die Zeit plus einmal der komplette Programmdurchlauf vergehen.
Lesezeichen