Schalter Funktion nur einmal ausführen

Hallo Zusammen,

für ein Arduino Projekt habe ich 8 (Schiebe-)Schalter welche ich vor Inbetriebnahme des Arduino entsprechend schalten möchte um nur bestimmte Skriptteile laufen zu lassen. Jetzt habe ich das Problem das die Skripte immer und immer wieder durchlaufen, was ich nicht möchte. Sie sollten nur einmal durchlaufen und dann nichts mehr machen. Früher hatte ich das mit Taster gelößt, aber das ist zu umständlich diese dann nacheinander zu drücken.

Ich würde mich sehr freuen wenn mir jemand ein passendes Stichwort gibt.

Habe schon bei Google gesucht aber keine lösung gefunden (vll Falsch gesucht, dann Sorry)

Auf jedenfall schon mal Vielen Dank

Bierfreund

Hallo,könntes du bitte deinen Code posten.
Mit einem “merker” zb könnte man sich den aktuellen Zustand speichern (merken) und mit einer if anweisung bedingungen setzen, wenn du sowas suchst…

Im Prinzip sollte so ein MicroController ewig laufen und immer was sinnvolles machen.
Wenn du das nicht willst, sondern es so willst, dass nichts gemacht wird, ausser kurz nach Reset, geht das aber auch:

boolean fertig;
byte startauswahl;
void setup()
{  
   fertig = false;
   startauswahl = readInput();  // Einmalig 8 Schiebeschalter lesen und als Wert 0 ... 255 ablegen
}

void loop()
{
    if (! fertig)
    {
      switch (startauswahl)
      {
        case 1:
           fertig = func1();
           break; 
        ...
      }
    }
    else
    {
        // nichts tun
    } 
}

boolean func1()
{
    // Funktion bei Schiebeschalterstellung 0000 0001
   //   kann beliebig oft drankommen um "Multitasking" (hier nicht erforderlich) zu ermöglichen
   //   endet mit true, wenn fertig, sonst false
   ...
   if ( Endebedingung_erreicht() ) return true;
   return false;   
}
...

Ein mögliches Codegerüst

Der else Zweig kann natürlich genausogut ganz weggelassen werden, und ist nur zur Klarheit, für den Kommentartext, da

Hallo Zusammen,

vielen Dank für eure Hilfe. Das hat mich sehr weiter gebracht, wollte gerade mein Script posten, aber ich glaube das reicht mir erst einmal. Vielen Dank :-)