2 Loops mit unterschiedlichem Delay gleichzeitig ausführen (Arduino)?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Da der Arduino nur einen Rechenkern hat, kannst du keine zwei Sachen parallel ausführen. Wenn deine zweite Funktion ausgeführt wird, muss die erste Funktion warten.

Vielleicht reicht für deinen Fall aber auch folgende Idee erst einmal aus:

unsigned long aLastRunTime = 0;

void setup
{
}

void loop
{
  funktion1();

  if (millis() - aLastRunTime > 100) {
    funktion2();
    aLastRunTime = millis();
  }
}

Die Funktion 1 wird so mit jedem Loop-Aufruf ausgeführt, die Funktion 2 nur, wenn seit dem letzten Aufruf 100ms vergangen sind. Wenn die Funktion 2 nicht allzu zeitaufwändig ist, merkt man von der kurzen Verzögerung bis Funktion 1 erneut aufgerufen wird, meist nichts.

Ansonsten bliebe nur mit zwei Arduinos gleichzeitig zu arbeiten.

Woher ich das weiß:Hobby

Du könntest einfach mit Interrupts arbeiten.

Woher ich das weiß:Berufserfahrung