Leírás
A pulseInLong() a pulseIn() alternatívája, amely jobban képes kezelni a hosszú impulzust.
Beolvassa az impulzust (logikai MAGAS vagy ALACSONY) a megadott lábon. Például, ha az érték magasra van állítva, akkor a pulseInLong() megvárja, hogy a láb állapota logikai alacsonyról magasra váltson, elkezdi a mérést, majd amikor ismét alacsony szintre kerül, akkor leállítja az időzítést. Visszaadja az impulzus hosszát mikroszekundumokban, vagy 0-t ad vissza, ha az időkorláton belül nem kapott teljes impulzust.
Ennek a funkciónak az időzítését tapasztalati úton határozták meg, és valószínűleg hibákat fog mutatni rövidebb impulzusoknál. 10 mikroszekundumtól 3 percig terjedő impulzusokon működik. Ez a parancs csak akkor használható, ha a megszakítások be vannak kapcsolva. Ezenkívül a legnagyobb felbontást nagy intervallumokkal érik el.
Szintaxis
pulseInLong (pin, érték)
pulseInLong (pin, érték, időtúllépés)
paraméterek
pin: annak a lábnak a száma, amelyen az impulzust le szeretné olvasni. Megengedett adattípusok: int.
érték: az olvasandó impulzus típusa: vagy HIGH (magas), vagy LOW (alacsony). Megengedett adattípusok: int.
időtúllépés (opcionális): az impulzus maximális hossza, alapértelmezés egy másodperc. Engedélyezett adattípusok: unsigned long.
Eredmény
Az impulzus hossza (mikroszekundumokban) vagy 0, ha az impulzus ért véget az időkorlát előtt. Adattípus: unsigned long.
Példaprogram
A példa a 7. lábon mért impulzus hosszat kiírja a soros portra.
Megjegyzések és figyelmeztetések
Ez a funkció a micros() függvénye, tehát nem használható a noInterrupts()-al egyidőben.