Mehrere „void loops“?

Hallo,

ich würde gerne wissen ob man bei einem Arduino mehrere Void Loops einsetzten kann.
Denn ich habe ein Ampel Modell gebaut und möchte jetzt das per Tastendruck eine davon unabhängige Led leuchtet.

Ihr Beitrag wurde an seinen aktuellen Speicherort verschoben, da er besser geeignet ist.

Nein.

Du kannst zusätzliche Funktionen integrieren oder z.B. switch den case dann entsprechend der Taste.

Zeig was Du an code hast und schreib, was Du Dir vorstellst.

Sie können mehrere Funktionen haben, aber nur eine wird an einem bestimmten Punkt ausgeführt.

Sie sollten "Blink Without Delay" erkunden und verstehen (Modifié)Restaurer la traduction d'origine

ja geht. Mach eine void loopA() und ein void loopB()

Durchaus

void loop1();
void loop2();
void loop3();

usw.

Aber was du suchst, nennt sich vermutlich Multitasking, oder so...
Auch endliche Automaten könnten dir eine Hilfe sein.

Hallo
Diesen Sketch kannst du für dein Projekt als Vorlage nehmen und entsprechend aufbohren und/oder feinschleifen.

void loop0() { Serial.println(__func__); }
void loop1() { Serial.println(__func__); }
void loop2() { Serial.println(__func__); }
void (*loops[]) () {loop0, loop1, loop2};
void setup()
{
  Serial.begin(9600);
  delay(500);
}
void loop() {
  for (auto loop_:loops) loop_(), delay(1000);  // for testing only
}

Ich wünsche einen geschmeidigen Abend und viel Spass beim Programmieren in C++.

:wink:

Anfängerversion

void loop0() { Serial.println("loop0"); }
void loop1() { Serial.println("loop1"); }
void loop2() { Serial.println("loop2"); }

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

void loop() {
  loop0(); delay(1000);  // for testing only
  loop1(); delay(1000);  // for testing only
  loop2(); delay(1000);  // for testing only
}

Anfängerversion V1.2.3.4.5 mit Multitasking für doofe.

#include <INTERVAL.h> // die Lib findest du im Forum

void loop0()
{
  INTERVAL(200)  Serial.println("loop0");
}
void loop1()
{
  INTERVAL(333)  Serial.println("loop1");
}
void loop2()
{
  INTERVAL(1000)  Serial.println("loop2");
}

void yield()
{
  loop0();
  loop1(); 
  loop2(); 
}




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

void loop()
{
  delay(4711); // alternativ: yield();
}


:japanese_ogre: :japanese_ogre:
:hole: :hole: