kurze Antwort: probier's aus!
lange Antwort:
ich bin bei Arduino mit seinen verschiedenen Compiler-settings für verschiedene Zielplattformen (AVR, SAM, SAMD, ESP8266) vorsichtig geworden.
Die loop() Funktion ist mir da besonders suspekt.
volatile: man weiß nie, was der Code-optimizer rausschmeißt, für welche Zielplattform auch immer, wenn mit den Werten nicht groß was passiert. Ich ging hier im Testcode auf Nummer Sicher, damit es bei dir auch wirklich sicher funktioniert, darauf verzichten kann man nach Test immer noch, aber dieser Punkt ist wschl am unkritischsten.
static: es ist eine lokale Funktion mit einer lokalen Variablen, die innerhalb der Funktion in verschiedenen Durchläufen hochgezählt oder wieder resettet wird. Gerade mit solchen Werten habe ich bereits schlechte Erfahrungen in loop() gemacht, wenn sie nicht als static deklariert waren, insb. Arduino Due (SAM) mit Scheduler und ESP8266.
Aber wie gesagt, muss vlt alles nicht unbedingt sein, probier's einfach aus.
Lesezeichen