Funkcia → pulseInLong()
Popis :
pulseInLong()
je alternatívou k pulseIn(), ktorá lepšie zvláda dlhé impulzy a prerušuje ovplyvnené scenáre. Číta pulz (vysoký alebo nízky) na kolíku. Napríklad, ak je hodnota HIGH, pulseInLong() čaká, kým kolík prejde z LOW na HIGH, spustí časovanie, potom čaká, kým kolík klesne na NÍZKU a zastaví časovanie.
Vráti dĺžku impulzu v mikrosekundách alebo to vzdá a vráti 0, ak počas časového limitu nebol prijatý žiadny úplný impulz.
Časovanie tejto funkcie bolo určené empiricky a pravdepodobne bude vykazovať chyby v kratších impulzoch. Pracuje na impulzoch s dĺžkou od 10 mikrosekúnd do 3 minút. Túto rutinu možno použiť iba vtedy, ak sú aktivované prerušenia. Okrem toho sa najvyššie rozlíšenie dosiahne s veľkými intervalmi.
Syntax :
pulseInLong(pin, value)
pulseInLong(pin, value, timeout)
Parametre :
pin: číslo Arduino pinu, na ktorom chcete čítať pulz. Povolené typy údajov: int. hodnota: typ pulzu, ktorý sa má čítať: buď HIGH alebo LOW. Povolené typy údajov: int. časový limit (voliteľné): počet mikrosekúnd na čakanie na spustenie impulzu; predvolená hodnota je jedna sekunda. Povolené typy údajov: unsigned long.
Returns :
Dĺžka impulzu (v mikrosekundách) alebo 0, ak pred uplynutím časového limitu nezačal žiadny impulz. Typ údajov: unsigned long.
Príklad kódu :
Príklad zobrazí čas trvania impulzu na kolíku 7.
int pin = 7;
unsigned long duration;
void setup() {
Serial.begin(9600);
pinMode(pin, INPUT);
}
void loop() {
duration = pulseInLong(pin, HIGH);
Serial.println(duration);
}
Poznámky :
Táto funkcia sa spolieha na micros(), takže ju nemožno použiť v kontexte noInterrupts().
Pridaj komentár