Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

Arduino: blikanie diodą led bez opóźnień

Zrozumienie problemu opóźnień w arduino

Podczas pracy z platformą Arduino, często napotykamy problem związany z opóźnieniami, zwłaszcza gdy chcemy sterować diodami LED.

Typowe podejście wykorzystuje funkcję delay(), która zawiesza wykonanie programu na określony czas. Niestety, w przypadku bardziej zaawansowanych projektów może to prowadzić do blokowania innych zadań lub niewydajnego wykorzystania zasobów mikrokontrolera.

Na szczęście istnieje sposób na uniknięcie tych opóźnień, co pozwala na płynne działanie programu nawet przy intensywnym korzystaniu z diod LED.

Poznajmy technikę, która pozwala na błyskawiczne miganie diodą LED bez konieczności używania funkcji delay().

Wykorzystanie funkcji millis()

Rozwiązaniem problemu opóźnień jest wykorzystanie funkcji millis(). Ta funkcja zwraca liczbę milisekund, jakie upłynęły od uruchomienia programu Arduino. Dzięki niej możemy śledzić czas bez blokowania dalszego wykonywania programu.

Aby wykorzystać funkcję millis() do migania diodą LED, musimy zapamiętać czas ostatniego zmigania i porównywać go z aktualnym czasem. Jeśli upłynął wystarczający czas, wykonujemy kolejny cykl migania.

Dzięki temu podejściu program może wykonywać inne zadania, nawet podczas migania diodą LED.

Implementacja blikania led bez opóźnień

Poniżej przedstawiamy przykładowy kod Arduino, który demonstruje sposób migania diodą LED bez użycia funkcji delay():


void setup() {
pinMode(LEDPIN, OUTPUT);
}
void loop() {
if (millis() - previousMillis >= interval) {
// Zapisz czas ostatniego migania
previousMillis = millis();
// Zmień stan diody LED
ledState = !ledState;
digitalWrite(LED
PIN, ledState);
}
}

W powyższym kodzie LED_PIN to numer pinu, do którego podłączona jest dioda LED, previousMillis to zmienna przechowująca czas ostatniego migania, a interval to czas, co jaki ma się odbywać migotanie diodą.

Dzięki takiemu podejściu możemy mieć płynne migotanie diodą LED, zachowując jednocześnie responsywność programu.

Unikanie funkcji delay() przy miganiu diodą LED w Arduino jest kluczowe dla projektów wymagających płynnej pracy programu. Wykorzystanie funkcji millis() pozwala na osiągnięcie tego efektu poprzez śledzenie czasu bez blokowania dalszego wykonywania programu. Dzięki temu możemy tworzyć bardziej zaawansowane i responsywne projekty oparte na platformie Arduino.

Zapraszamy do eksperymentowania z tą techniką i implementowania jej w swoich projektach!