Diese Seite ist auch in 2 anderen Sprachen verfügbar.
Sprache wechseln  

pulseInLong()

[Advanced I/O]

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.

Beispielcode

Das Beispiel gibt den Zeitraum eines Impulses auf Pin 7 aus.

int pin = 7;
unsigned long duration;

void setup() {
  Serial.begin(9600);
  pinMode(pin, INPUT);
}

void loop() {
  duration = pulseInLong(pin, HIGH);
  Serial.println(duration);
}

Anmerkungen und Warnungen

Diese Funktion verlässt sich auf micros() und kann somit in noInterrupts() Kontexten nicht verwendet werden.

Siehe auch