Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

Arduino delay – jak działa, jak używać i jak unikać w kodzie

Czym jest funkcja delay() w arduino?

Funkcja delay() w Arduino jest jedną z podstawowych funkcji, która pozwala na zatrzymanie działania programu na określony czas.

Jest to przydatne narzędzie do sterowania czasem pomiędzy kolejnymi instrukcjami w programie mikrokontrolera Arduino.

W skrócie, po wywołaniu funkcji delay() program Arduino przestaje wykonywać kolejne instrukcje przez określony czas, po czym powraca do normalnego działania.

Jednakże, istnieją pewne kwestie związane z funkcją delay(), które mogą prowadzić do problemów w programach, zwłaszcza w bardziej złożonych projektach.

Jak działa funkcja delay() w arduino?

Podczas gdy funkcja delay() jest aktywna, mikrokontroler Arduino nie wykonuje żadnych innych operacji, po prostu czeka przez określony czas. Dzieje się tak, ponieważ funkcja delay() korzysta z wbudowanego zegara mikrokontrolera, aby mierzyć czas, przez który ma pozostać zatrzymany.

Warto zauważyć, że podczas działania funkcji delay() mikrokontroler nadal działa i zużywa energię, co może mieć znaczenie w aplikacjach, gdzie ważne jest minimalizowanie zużycia energii, jak na przykład w projektach zasilanych bateriami.

Ponadto, funkcja delay() jest blokująca, co oznacza, że podczas jej wykonywania mikrokontroler nie może reagować na żadne zewnętrzne zdarzenia, takie jak naciśnięcie przycisku czy otrzymanie danych z czujnika.

Jak używać funkcji delay() w arduino?

Użycie funkcji delay() jest dość proste. Wystarczy podać jej jako argument czas w milisekundach, przez który program ma zostać zatrzymany. Na przykład, jeśli chcemy zatrzymać program na 1 sekundę, należy użyć delay(1000), ponieważ 1 sekunda to 1000 milisekund.

Oto przykład prostego programu, który mruga diodą co sekundę, korzystając z funkcji delay():


void setup() {
pinMode(LEDBUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED
BUILTIN, HIGH); // Włącz diodę
delay(1000); // Zatrzymaj program na 1 sekundę
digitalWrite(LED_BUILTIN, LOW); // Wyłącz diodę
delay(1000); // Zatrzymaj program na kolejną sekundę
}

Ten prosty program będzie cyklicznie włączał i wyłączał diodę LED, zatrzymując się na każdym stanie przez 1 sekundę.

Jak unikać użycia funkcji delay() w arduino?

Chociaż funkcja delay() jest prosta w użyciu, jej zastosowanie może prowadzić do problemów, szczególnie w bardziej zaawansowanych projektach. Jednym z głównych problemów jest to, że podczas działania funkcji delay() mikrokontroler jest zatrzymany, co uniemożliwia wykonywanie innych operacji w tym czasie.

Aby uniknąć tego problemu, można stosować techniki programowania asynchronicznego lub wykorzystać funkcje timera, które pozwalają na wykonywanie innych operacji w czasie oczekiwania. Przykłady to korzystanie z funkcji millis() do mierzenia czasu lub używanie przerwań (interrupts) do reagowania na zewnętrzne zdarzenia w czasie rzeczywistym.

W ten sposób można tworzyć bardziej responsywne i efektywne programy, które nie są oparte na blokujących funkcjach takich jak delay().

Ogólnie rzecz biorąc, funkcja delay() jest przydatnym narzędziem w prostych projektach, ale należy jej unikać w bardziej zaawansowanych aplikacjach, aby zapewnić płynne działanie i szybką reakcję na zdarzenia.