Arduino Delay() Tutorial
V tomto návode sa naučíte, ako správne používať funkciu delay() na pridanie oneskorenia medzi 2 akcie vo vašich programoch Arduino. Potom zistíte, prečo použitie delay() často nie je dobrý nápad, keď chcete, aby sa vaše programy škálovali, a ako to opraviť.
Why do you need delays in your Arduino programs?
Program Arduino sa do veľkej miery spolieha na fungovanie externých vstupov / výstupov. Vezmime si jednoduchý príklad: možno budete chcieť monitorovať stav tlačidla 100-krát za sekundu alebo nechať blikať každých 0,5 sekundy.
Ako to môžete dosiahnuť?
- Najprv sa raz vykoná funkcia setup()
- Potom sa funkcia loop() vykonáva znova a znova, kým nevypnete Arduino
Akýkoľvek program, ktorý napíšete, sa spustí plnou rýchlosťou. Ak teda necháte vo svojom kóde blikať , stane sa to, že
bude blikať veľmi vysokou rýchlosťou (najmenej niekoľko tisíckrát za sekundu). Ak chcete ovládať čas – to znamená, že kontrolka
bliká iba každých 0,5 sekundy a nie plnou rýchlosťou – musíte do kódu pridať nejaké oneskorenie.
Funkcia: delay()
Tu je kód na blikanie diódy (tu vyberáme vstavanú
, nie je potrebné pridávať žiadnu externú
) každých 0,5 sekundy – toto je jeden z najbežnejších príkladov, ktoré uvidíte, ak začnete s Arduinom.

- Najprv použijete „define“
- Režim pinu nastavíte na OUTPUT pomocou funkcie pinMode()
Potom vo funkcii loop() :
- 1. Zapnite
.
- 2. Použite delay(500) na prepnutie programu do režimu spánku na 500 milisekúnd.
- 3. Vypnite
.
- 4. Použite delay(500) na opätovné prepnutie programu do režimu spánku na 0,5 sekundy.
- 5. A vráťte sa ku kroku 1, pretože funkcia loop() vykonáva program znova a znova.
Funkcia delay() očakáva, že do režimu spánku dáte niekoľko milisekúnd – nie sekúnd. Ak teda myslíte v sekundách, vynásobte číslo 1000 a máte hodnotu, ktorú potrebujete.
Prečo by ste sa mali vyhnúť používaniu delay()
Keď použijete delay(), vykonávanie vášho programu sa zastaví a obnoví sa až po dokončení oneskorenia.
Je to v poriadku, ak musíte urobiť iba jednu akciu – napríklad: zablikať jednu diódu – ale čo ak sa potrebujete postarať o viacero hardvérových komponentov alebo komunikovať s inými zariadeniami, ako sú dosky Arduino alebo váš vlastný počítač?
Pomocou predchádzajúceho príkladu, ako by ste mohli prinútiť jednu blikať každých 0,5 sekundy a ďalšiu blikať každých 0,8 sekundy? Ak stále chcete použiť delay(), môžete nájsť riešenie, kde použijete kratšie oneskorenia medzi viacerými akciami, ale tým sa váš program skomplikuje zakaždým, keď pridáte novú akciu.
Riešením je jednoducho sledovať čas bez použitia funkcie delay(), v podstate nájsť spôsob, ako reprodukovať správanie delay() bez jej použitia.
Príklad kódu – bez delay()

Pridaj komentár