Leírás
A pulseInLong()
a pulseIn()
alternatívája, amely jobban kezeli a hosszú impulzusokat és a megszakításokkal érintett forgatókönyveket.
Kiolvas egy impulzust (HIGH
vagy LOW
) egy tűn. Például, ha az érték HIGH
, a pulseInLong()
megvárja, hogy a kivezetés LOW
-ról HIGH
-ra váltson, elindítja az időzítést, majd megvárja, amíg a kivezetés LOW-ra megy, és leállítja az időzítést. Visszaadja az impulzus hosszát mikroszekundumban, vagy feladja, és 0-t ad vissza, ha nem érkezett teljes impulzus az időtúllépésen belül.
Ennek a függvénynek az időzítését empirikusan határozták meg, és valószínűleg rövidebb impulzusok esetén hibákat fog mutatni. 10 mikroszekundumtól 3 percig terjedő impulzusokon működik. Ez a rutin csak akkor használható, ha a megszakítások aktiválva vannak.
Ezenkívül a legnagyobb felbontást nagy időközökkel érjük el.
Szintaxis
pulseInLong(pin, value)
pulseInLong(pin, value, timeout)
Paraméterek
pin
: annak az Arduino kivezetésnek a száma, amelyen le szeretné olvasni az impulzust. Engedélyezett adattípusok: int
.
value
: az olvasandó impulzus típusa: HIGH vagy LOW. Engedélyezett adattípusok: int
.
timeout
: (opcionális): az impulzus kezdetére várakozás mikromásodperceinek száma; az alapértelmezett egy másodperc. Engedélyezett adattípusok: unsigned long
.
Visszatérési érték
Az impulzus hossza (mikromásodpercben) vagy 0, ha nem indult impulzus az időtúllépés előtt. Adattípus: unsigned long
.