Biblioteka zegarów Arduino do opóźniania

Biblioteka Zegarow Arduino Do Opozniania



Timer jest jednym z kluczowych elementów Arduino do obsługi zadań wrażliwych na czas. Timery Arduino zwykle używają funkcji delay() do opóźnienia lub wstrzymania wykonania w małych odstępach czasu. Jednak do wielozadaniowości wymagana jest specjalna biblioteka funkcji opóźniających.

Ten przewodnik obejmie różne biblioteki timerów Arduino do opóźniania z krótkimi opisami. Zanim to nastąpi, zrozummy ograniczenia funkcji Arduino delay().







Ograniczenia opóźnienia()

Funkcja delay() nie może być używana, jeśli chcesz wykonywać różne zadania jednocześnie, ponieważ jest to funkcja blokująca. Oznacza to, że ilekroć funkcja delay() jest używana do wstrzymania wykonywania zadania, nie pozwala ona na wykonanie w międzyczasie żadnej innej funkcji. Dlatego, gdy ktoś chce zatrzymać jeden program podczas uruchamiania innych, nie można użyć funkcji delay().



Więc co robić?



Biblioteka zegarów Arduino do opóźniania wywołań funkcji

Aby rozwiązać ten problem, należy użyć specjalnych bibliotek przeznaczonych do wykonywania opóźnień. Biblioteki te umożliwiają wstrzymanie niektórych funkcji w programie na pewien czas i uruchomienie innych w międzyczasie. Biblioteki te są bibliotekami timerów, które nie blokują wielozadaniowości. Można ich używać do wywoływania funkcji w razie potrzeby.





Jak dołączyć bibliotekę zegarów Arduino do kodu Arduino

Aby najpierw dołączyć bibliotekę timera, musimy dodać plik zip, przechodząc do Dołącz bibliotekę sekcja w Arduino IDE. Szczegółowy opis dodawania bibliotek Arduino można znaleźć w artykule pt jak zainstalować bibliotekę w Arduino IDE .

Krok 1

Najpierw musisz pobrać bibliotekę timerów Arduino.



Krok 2

Po pobraniu biblioteki zegarów otwórz Arduino IDE i przejdź do Szkic, a następnie Dołącz bibliotekę, a następnie kliknij Dodaj bibliotekę ZIP.


Arduino wyświetli „Biblioteka zainstalowana” na wyjściu.

Krok 3

Po dodaniu biblioteki ZIP do Arduino IDE pojawi się ona na rozwijanej liście opcji Dołącz bibliotekę w Arduino IDE. Stąd m.in Regulator czasowy biblioteka.


Gdy uwzględnisz 'Regulator czasowy' biblioteka, na szkicu pojawi się dyrektywa preprocesora. W przeciwnym razie możesz wykonać krok 4, aby ręcznie dołączyć bibliotekę.

# włączać < Timer.h >

Krok 4

Aby dołączyć Arduino Timer Library do kodu Arduino, musisz użyć #włączać dyrektywa wraz z (.H) nazwę biblioteki timera rozszerzenia, a następnie utwórz timer, jak pokazano poniżej.

#include
automatyczny timer = timer_create_default ( ) ;


Po utworzeniu timera musisz utworzyć funkcję wywołującą ten timer. Może być konieczne wywołanie licznika czasu w określonym momencie, po krótkim opóźnieniu lub po pewnym czasie. Przykłady wywołania timerów w takich warunkach podano poniżej.

Na wypadek, gdybyś chciał krótkiego opóźnienia

minutnik.w ( opóźnienie, funkcja_do_wywołania ) ;
minutnik.w ( opóźnienie, wywołanie_funkcji, argument ) ; // lub z opcjonalnym argumentem Do funkcja_do_wywołania


W takim przypadku możemy skorzystać z tzw timer.w() funkcji, aby wprowadzić opóźnienie przed wywołaniem określonej funkcji. Parametr opóźnienia reprezentuje czas w milisekundach, który chcemy odczekać przed wykonaniem kodu.

Po określonym opóźnieniu, funkcja_do_wywołania będzie użyty. Argument można również zdefiniować tak, aby był przekazywany do funkcji w momencie wywołania.

W przypadku, gdy chcesz zadzwonić do timera w określonym czasie

Ta funkcja ustawia timer do wykonania określonej funkcji w określonym czasie. Parametr time określa czas, w którym funkcja ma zostać wywołana. Może to być określony znacznik czasu lub wartość opóźnienia w milisekundach. The funkcja_do_wywołania jest parametrem funkcji, która ma zostać wykonana po upływie czasu timera.

minutnik.o godz ( czas , funkcja_do_wywołania ) ;
minutnik.o godz ( czas , wywołanie_funkcji, argument ) ; // z argumentacją


timer.at(czas, wywołanie_funkcji, argument) funkcja może przekazać argument do wywoływanej funkcji. Parametrem argumentu będzie wartość, która ma zostać przekazana w funkcji.

W przypadku, gdy chcesz zadzwonić do timera po pewnym czasie

W takim przypadku możesz użyć funkcji timer.every() do wielokrotnego wywoływania funkcji po określonym czasie. Parametr interwału pokazuje czas w milisekundach między wykonywalnymi interwałami czasu.

Określ żądany interwał i funkcja_do_wywołania będzie używany wielokrotnie po tej przerwie. Podobnie jak w poprzednich przypadkach, możesz dołączyć opcjonalny argument, który zostanie przekazany do funkcji podczas jej wywoływania.

minutnik.każdy ( interwał, funkcja_do_wywołania ) ;
minutnik.każdy ( interwał, wywołanie_funkcji, argument ) ; // Wpisz tutaj swój interwał


Możesz dowiedzieć się więcej szczegółów na temat tej metody korzystania z biblioteki timerów do opóźniania wywołań funkcji za pośrednictwem łącza Biblioteka zegarów Arduino do opóźniania funkcji .

Niektóre inne biblioteki opóźniające w Arduino

Link podany poniżej przeniesie Cię do bibliotek timerów Arduino, gdzie możesz zainstalować biblioteki timerów do opóźniania wywołań funkcji.

Biblioteka timerów autorstwa Michaela Contrerasa

Jest też autor, który stworzył własną, nieblokującą bibliotekę zegarów Arduino do opóźniania wywołań funkcji. Użył wbudowanych funkcji Arduino, takich jak millis() i micros(), aby wykonywać funkcje opóźniające bez blokowania. Link do jego biblioteki znajduje się poniżej:

MichaelUray Biblioteka zegarów Arduino

Wniosek

Chociaż funkcja delay() jest już obecna w Arduino, nie można jej używać do wykonywania wielu zadań jednocześnie. Aby wykonywać wiele zadań w tym samym czasie, społeczność Arduino stworzyła nieblokujące biblioteki timerów, których można używać w razie potrzeby.