Periodische Ereignisse mit verschiedenen Triggerfrequenzen managen

Helmuth:
Wie würdet ihr das machen, wenn es um viele (+-50) unabhängige Prozesse (=Variablen) geht?

Arrays und Schleifen.

// multiTimer by 'jurs' for German Arduino Forum
struct timer {unsigned long takt; unsigned long lastMillis; unsigned long count;};

timer multiTimer[10]; // Anzahl der Timer definieren
int timers=sizeof(multiTimer)/sizeof(multiTimer[0]); // Anzahl der Timer aus der Arraygröße berechnen

void updateTimers()
{
  unsigned long now=millis();
  for (int i=0;i<timers;i++) 
  {
    while (now-multiTimer[i].lastMillis>=multiTimer[i].takt)
    {
      multiTimer[i].lastMillis += multiTimer[i].takt;
      multiTimer[i].count++;
    }
  }
}

void showTimers()
{
  for (int i=0;i<timers;i++)
  {
    Serial.print(multiTimer[i].count);
    Serial.print('\t');
  }
  Serial.println();
}


void setup()
{
  Serial.begin(9600);
  // Timer initialisieren auf 1, 2, 3, ... Sekunden
  for (int i=0;i<timers;i++) multiTimer[i].takt=(i+1)*1000;
}

void loop()
{
  updateTimers();
  showTimers();
//  delay(5000);
}

Edit/Nachtrag: Ich habe den Code gerade nochmal leicht abgeändert, so dass wenn Du in der loop längere Delays drin hast, die länger dauern als der kürzeste Takt, beim nächsten "updateTimers();" alle die Zählungen nachgeholt werden, die während des delay angefallen wären.