Millis() in Switch Case Problem

Hallo,

Hausknecht:

Keine Sorge ich stecke da auch noch mittendrin.

Das ist nur die Zusammensetzung bzw. gemeinsame Nutzung von struct und array. Das vermeidet die Ellenlangen globalen Variablenlisten wo am Ende niemand mehr durchblickt. Jedem Eingang ist ein Ausgang inkl. einer Verzögerungszeit zugewiesen. Die eigentlichen Werte werden mit t_setup KOMBI[] = { ... } initialisiert. Damit man default Werte nicht extra angegeben muss bei der Initialisierung ist im struct noch ein Konstruktor hinzugefügt wurden.

Mit struct baut man sich eigene Datentypen. Zu besseren Erkennung setze ich ein t_ davor.
Mit arrays baut man "Listen" von Werten die aufgefädelt sind.
Array Zugriff auf dessen Elemente erfolgt mit dem Index.
Zugriffe auf eine struct Element erfolgt mit dem Punkt-Operator.
Ich denke soweit ist dir das mit Buch klar.

struct t_setup
{
  byte pin;
  unsigned int delay;
};

Der neue Datentyp besteht aus einem byte Wert und einem unsigned int Wert.

Variablen mit dem neuen Datentyp erstellt man

t_setup var1;
t_setup var3;
t_setup var3;

oder

struct t_setup
{
  byte pin;
  unsigned int delay;
} var;

Zugriff lautet nun var.pin oder var.delay

Wenn du nun 2 struct Arrays angelegt hast, Array Name KOMBI, Datentyp t_setup

t_setup KOMBI[] = {
  {2, 2000},          // Index 0   KOMBI[0].pin oder KOMBI[0].delay
  {3, 3000},          // Index 1   KOMBI[1].pin oder KOMBI[1].delay
};

erfolgt der Zugriff erst mittels Index und dann mit der struct Variablen.
Zum Schluss wird nur noch in einer for Schleife, worin für alle die Indexnummer gleich ist, darauf zugriffen.