Beschreibung
Liest einen Wert von einem vorgegebenen Digitalpin ein, entweder HIGH
oder LOW
. Wenn der Wert z.B. HIGH ist, wartet pulseInLong()
darauf, dass der Pin auf den Wert HIGH wechselt,
startet einen Timer und wartet anschließend darauf, dass der Pin wieder auf LOW wechselt. Daraufhin stoppt pulseInLong()
den Timer. Gibt die Länge des Impulses in Mikrosekunden zurück.
Stoppt und gibt 0 zurück, wenn ein bestimmter Timeout erreicht wird.
Das Timing der Funktion wurde empirisch getestet und wird vermutlich bei einem längeren Impuls falsch messen. Die Funktion funtioniert mit einer Stromstößen der Länge von 10 Mikrosekunden bis 3 Minuten. Bitte beachte auch, dass, wenn ein Pin, der bereits HIGH ist, wenn die Funktion aufgerufen wird, zunächst auf LOW und dann wieder auf HIGH wechselt, bevor die Funktion startet. Diese Routine kann nur benutzt werden, wenn Interrupts aktiviert werden. Die beste Auflösung wird erreicht, wenn große Intervalle verwendet werden.
Syntax
pulseInLong(pin, value)
pulseInLong(pin, value, timeout)
Parameter
pin
: Die Arduino-Pinnummer, an der der Impuls gelesen werden soll. Erlaubte Datentypen: int
.
value
: Welche Art von Impuls gelesen werden soll: Entweder HIGH oder LOW. Erlaubte Datentypen: int
.
timeout
(optional): Die Anzahl an Mikrosekunden, die gewartet werden soll, bis ein Impuls gemessen wurde; Default-Wert ist eine Sekunde. Erlaubte Datentypen: unsigned long
.
Rückgabewert
Die Länge des Impulses (in Mikrosekunden) oder 0, wenn kein Impuls vor dem Timeout gemessen wird. Datentyp: unsigned long
.