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 :

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

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Nemôžete kopírovať obsah tejto stránky