Arduino Uno Frequenz messen + gleichzeit PWM Signal senden

Hi

40Hz kannst Du doch einfachst pollen (immer wieder abfragen).
40Hz wäre, bei symetrischem Signal, 12,5ms HIGH und 12,5ms LOW.
Der Arduino sollte in dieser Zeit einige tausend Mal den Input-Pin abfragen können und somit auf die Frequenz schließen.
Da eine Auflösung von 12,5 (also 12 oder 13)ms etwas grob sein könnte, kannst Du statt mit millis() (Systemuhr, Milisekunden seit Systemstart, Überlauf nach 49,x Tagen) mit micros() nutzen, Welche Dir eine 250-fache Auflösung ermöglichen (micros() springt in 4er Schritten, deshalb keine 1000-fache Auflösung).

So 'schaust' Du, bis der Pin HIGH ist, merkst Dir die micros(), schaust, bis der Pin LOW ist, merkst Dir die micros().
Jetzt hast Du die Zeit des HIGH-Impuls.
Bei symmetrischem Signal kannst Du jetzt aus der vergangenen Zeit auf die Frequenz schließen.
Wenn HIGH und LOW-Zeiten differieren, kannst Du noch zusätzlich auf das nächste HIGH warten, um eine komplette Periode auszumessen.
Die Rechnung bleibt (bis auf ein x2, da Du jetzt die ganze Periodenlänge und nicht nur einen Impuls hast).

micros() läuft nach einer guten Stunde über, wie Du mit dem Überlauf umgehst, sollte sich bei millis() finden lassen.

MfG