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ť LED 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ť LED, stane sa to, že LED 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 LED bliká iba každých 0,5 sekundy a nie plnou rýchlosťou – musíte do kódu pridať nejaké oneskorenie.

Tu je kód na blikanie LED diódy (tu vyberáme vstavanú LED, nie je potrebné pridávať žiadnu externú LED) každých 0,5 sekundy – toto je jeden z najbežnejších príkladov, ktoré uvidíte, ak začnete s Arduinom.

arduino-funkcia-delay()
  • Najprv použijete „define“
  • Režim pinu nastavíte na OUTPUT pomocou funkcie pinMode()

Potom vo funkcii loop() :

  • 1. Zapnite LED.
  • 2. Použite delay(500) na prepnutie programu do režimu spánku na 500 milisekúnd.
  • 3. Vypnite LED.
  • 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.

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 LED 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 LED 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()

arduino-funkcia-delay()-bez-delay()


Pridaj komentár

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

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