Abfrage mehrerer Eingänge, z.B. mittels Drehschalter

Moin,

Serenifly:
[...] Ich wollte dich nur nicht völlig verwirren. [...]

also spätestens jetzt isses soweit :grinning:
Ich find das super als Denkanstoß, denn ich wusste ja nichtmal dass sowas hier möglich ist:

Serenifly:
Was auch mit der Übersichtlichkeit hilft ist Variablen die zusammengehören in eine Struktur zusammenzufasssen. Und dann ein Array daraus zu machen:

struct Stellung

{
  const byte pin;
  const byte relaisZustand[3];
  bool marker = false;
};

Stellung drehknopf[] =
{
  { 3, { 0, 0, 1 } },
  { 4, { 1, 0, 1 } }
};

const byte ANZAHL_STELLUNGEN = sizeof(drehknopf) / sizeof(drehknopf[0]);

void setup()
{
  Serial.begin(9600);

for (byte i = 0; i < ANZAHL_STELLUNGEN; i++)
  {
    Serial.print(drehknopf[i].pin);
    Serial.print(" -> ");
    for (byte j = 0; j < sizeof(drehknopf[0].relaisZustand); j++)
    {
      Serial.print(drehknopf[i].relaisZustand[j]);
      Serial.print(" ");
    }
    Serial.println();
  }

Serial.println();
  //Oder einfacher mit for each. Lese: für jedes Objekt stellung im Array drehknopf mach folgendes
  for (auto& stellung : drehknopf)  //Referenz da es sich um ein Objekt handelt. Dadurch wird keine Kopie angelegt
  {
    Serial.print(stellung.pin);
    Serial.print(" -> ");
    for (auto zustand : stellung.relaisZustand)
    {
      Serial.print(zustand);
      Serial.print(" ");
    }
    Serial.println();
  }

}

void loop()
{
}



EDIT: Arrays für Relais gleich in die Struktur gepackt und Dinge etwas sinnvoller benannt

Das sieht man auch wie viel schöner ein for each ist :)


Ansonsten gibt es auch noch zwei-dimensionale Arrays. Damit lässt sich die Durchnummerierung der Zustände auch vermeiden

Und gewöhne dir an const für Konstanten zu verwenden. Auch deine Relais Pins sind besser so:


const byte Relais_3B = 29;

Ich lasse mein "Progrämmchen" jetzt erstmal so, behalte deinen Vorschlag aber im Hinterkopf.

Vielen Dank für Deine Mühen!!!

Viele Grüße,
Marcus