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.