pulseIn()

[Advanced I/O]

Beschreibung

Liest einen Wert von einem vorgegebenen Digitalpin ein, entweder HIGH oder LOW. Wenn value z.B. HIGH ist, wartet pulseIn() 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 pulseIn() 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 Impulsen der Länge von 10 Mikrosekunden bis 3 Minuten.

Syntax

pulseIn(pin, value)
pulseIn(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 = pulseIn(pin, HIGH);
  Serial.println(duration);
}

Siehe auch