Würde gehen.
Aber eigentlich reicht einer-als "Tick" nimmst du halt die kürzesten Intervalle, die du brauchst.
Und die zählst du einfach hoch, um auf längere zu kommen....
Das hier ist der Timer vom XP2- der tickt jede Sekunde, zählt die aber auch hoch, so dass ich Intervalle von bis zu 20 Sekunden habe.
So hab ich einmal den Sekunden-Takt (tick, tack, tick, tack) , aber eben auch nen 20-Sekunden-Takt (den man auch noch unterteilen könnte, wenn man will).
mit intervallTimer=500 könnte man den auch jede halbe Sekunde ticken lassen, ganz wie man will.
Du musst einfach nur den "kleinsten gemeinsamen Nenner" finden, und den dann als Basis benutzen.
Code:void timer() // ******************************** Bord-Schaltuhr **************************************** { unsigned long aktuelleMillis = millis(); // Millisekunden auf den aktuellen Wert stellen if (aktuelleMillis - vorherigeMillis >= intervallTimer) // immer wenn 1000 Millisekunden um sind { akkuMessFlag=0; //alle gemacht-Flags zurücksetzen serialFlag=0; lichtMessFlag=0; vorherigeMillis = aktuelleMillis; if(sekundeTick==0) // Sekunde-Tick wechselt jede Sekunde zwischen 0 und 1 { sekundeTick=1; } else { sekundeTick=0; } if(timerTick<20) // Timer-Tick zählt hoch bis 20, und fängt dann wieder bei 0 an { timerTick++; } else { timerTick=0; } } }
Lesezeichen