Du könntest für die Namen eine Enummeration nutzen. Wenn Du verschiedene Zustände haben willst, dann ein Array aus Strukturen, sonst genügt ein Array aus Pinnummern.
Aber, so habe ich es nach langer Suche im Internet verstanden, man kann nicht einfach
mit einem Range Based For Loop über ein enum class iterieren (mit einfachen, mir verständlichen Boardmitteln). Ich habe nur sehr abstrakte Lösungen mit vielen Pointern usw.
gefunden.
Gibt es da einen einfacheren Weg zum Iterieren?
Ich habe noch einen "Hack" mit einem kleinen Codeduplikat gefunden (man baut noch ein array dazu), der es dann möglich macht:
Ich auch nicht viel!
Selbst meinen Vorschlag aus #4 habe ich nie wirklich in der Praxis eingesetzt. Es gab immer "bessere" Alternativen.
Der ist also auch (von mir) abgelehnt.
Mein "Gefühl" sagt mir:
Hier wird versucht ein Problem an der falschen Stelle anzufassen, welches dafür sorgt, dass jede Lösung "ugly" aussieht, egal von welcher Seite man darauf schaut.
Ich möchte darauf wetten, dass man es nur schöner hin bekommt, wenn man 1 bis 2 Schichten tiefer ansetzt.
Manchmal sind ganz einfache "structured arrays" mit member variablen, hier die Led Pins, und member Funktioen, hier die init() Funktion, sehr hilfreich. Weitere Funktionen, wie on(), off() oder blink() lassen sich einfach hinzufügen.
Verstehe ich!
Du bist da auf ein Symptom gestoßen, was dir nicht gefällt.
Jetzt versuchst du das Symptom zu bearbeiten.
Es schöner aussehen zu lassen.
Verstehe ich!
Mein Rat an der Stelle:
Versuche die Ursache für die Symptomatik zu finden!
Wird die Ursache behoben, verschwinden automatisch die Symptome gleich mit.
Wenn ich mich frage, warum "deine" Symptome bei mir nicht/kaum auftauchen, kann ich nur vermuten, dass es ganz stark an meiner OO Sichtweise liegt.
void init(byte pin) {
digitalWrite(pin, HIGH); // Pin nach Reset hochohmig, dann aktivierter PullUp
pinMode(pin, OUTPUT); // Pin auf HIGH, Relais nicht geschaltet bei aktiv LOW Modulen
}