Taktmerker für Arduino

Hi,

hab mal etwas rumgerechnet, mit deinem (sschultewolter) Vorschlag im Hinterkopf
Dann kam das dabei raus :slight_smile:

boolean takt_05hz;
boolean takt_1hz;

void loop(){
takt_05hz = (long (millis() / 500)) %2;
takt_1hz = (long (millis() / 1000)) %2; 
...
}

Gedankengang:
Ich teile die millis durch die Periodendauer in ms. Durch das Wandeln auf long (abrunden) kommen dann ganze Zahlen für die Dauer einer Periode raus. Diese mit modulo 2 ergibt eine wechselnde 0<->1

Beispiel Takt 0,5Hz:
millis() = 0 - 499 -> 0 -> "0" (LOW)
millis() = 500 - 999 -> 1 -> "1" (HIGH)
millis() = 1000 -1499 -> 2 -> "0" (LOW)
millis() = 1500 -1999 -> 3 -> "1" (HIGH)

Sehe momentan kein Problem damit.

Einwände?


Edit: Wobei 500ms high und 500ms low --> 2Hz sind, oder?