Arduino Timer Library for Delaying

Arduino Timer Library For Delaying



Timeren er en av nøkkelkomponentene til Arduino for å håndtere tidssensitive oppgaver. Arduinos tidtakere bruker vanligvis delay()-funksjonen for å gi en forsinkelse eller pausekjøring i små tidsintervaller. Imidlertid kreves et spesielt bibliotek for å forsinke funksjoner for multitasking.

Denne guiden vil dekke ulike Arduino-timerbiblioteker for forsinkelse med korte beskrivelser. Før det la oss forstå begrensningen til Arduino delay()-funksjonen.







Begrensninger for forsinkelse()

Delay()-funksjonen kan ikke brukes hvis du ønsker å utføre forskjellige oppgaver samtidig, da det er en blokkeringsfunksjon. Det betyr at når delay()-funksjonen brukes til å pause utførelsen av en oppgave, tillater den ikke noen annen funksjon å kjøre i mellomtiden. Derfor, når noen ønsker å stoppe ett program mens andre kjører, kan ikke delay() brukes.



Så hva skal jeg gjøre?



Arduino timerbibliotek for å forsinke funksjonsanrop

For å løse dette problemet, bør du bruke spesielle biblioteker designet for å utføre forsinkelse. Disse bibliotekene lar deg pause noen av funksjonene i programmet en stund og kjøre andre i mellomtiden. Disse bibliotekene er tidtakerbiblioteker som ikke blokkerer multitasking. De kan brukes til å kalle opp funksjoner etter behov.





Hvordan inkludere Arduino Timer Library i Arduino Code

For å inkludere tidtakerbiblioteket må vi først legge til zip-filen ved å gå til Inkluder bibliotek delen i Arduino IDE. For en detaljert beskrivelse av å legge til Arduino-biblioteker, kan du lese artikkelen om hvordan installere biblioteket i Arduino IDE .

Trinn 1

Først må du laste ned Arduino-timerbiblioteket.



Steg 2

Etter å ha lastet ned tidtakerbiblioteket, åpne Arduino IDE og gå til Sketch og deretter Inkluder bibliotek, og klikk deretter på Legg til ZIP-bibliotek.


Arduino vises 'Bibliotek installert' i utgangen.

Trinn 3

Etter at du har lagt ZIP-biblioteket til Arduino IDE, vil det vises i rullegardinlisten over Inkluder bibliotek-alternativer i Arduino IDE. Herfra inkluderer Timer bibliotek.


Når du inkluderer «Timer» bibliotek, vil forbehandlerdirektivet vises på skissen. Ellers kan du følge trinn 4 for å inkludere biblioteket manuelt.

# inkludere < Timer.h >

Trinn 4

For å inkludere Arduino Timer Library i Arduino-koden, må du bruke #inkludere direktiv sammen med (.h) navn på utvidelsestidtakerbiblioteket og deretter opprette en tidtaker som vist nedenfor.

#include
auto timer = timer_create_default ( ) ;


Etter å ha opprettet en tidtaker, må du lage en funksjon for å kalle den tidtakeren. Du må kanskje ringe timeren på et spesifisert tidspunkt, etter en kort forsinkelse eller etter et tidsintervall. Eksempler på å ringe timere under slike forhold er gitt nedenfor.

I tilfelle du ønsker en kort forsinkelse

timer.in ( forsinkelse, funksjon_å_ringe ) ;
timer.in ( delay, function_to_call, argument ) ; // eller med et valgfritt argument til funksjon_å_ringe


I dette tilfellet kan vi bruke timer.in() funksjon for å innføre en forsinkelse før du kaller en spesifikk funksjon. Forsinkelsesparameteren representerer tiden i millisekunder som vi ønsker å vente før vi utfører koden.

Etter den angitte forsinkelsen vil funksjon_å_ringe vil bli brukt. Et argument kan også defineres for å overføres til funksjonen på tidspunktet for samtalen.

I tilfelle du ønsker å ringe timeren på et bestemt tidspunkt

Denne funksjonen setter opp en timer for å utføre en spesifikk funksjon på et bestemt tidspunkt. Tidsparameteren spesifiserer tidspunktet når funksjonen skal kalles. Det kan være et spesifikt tidsstempel eller en forsinkelsesverdi i millisekunder. De funksjon_å_ringe er parameteren til funksjonen som skal utføres etter utløpet av tidtakeren.

timer.at ( tid , funksjon_å_ringe ) ;
timer.at ( tid , funksjon_å_kalle, argument ) ; // med argumentasjon


timer.at(tid, funksjon_å_kalle, argument) funksjon kan sende et argument til funksjonen som kalles. Argumentparameteren vil være verdien som skal sendes i funksjonen.

I tilfelle du ønsker å ringe timer etter et tidsintervall

I dette tilfellet kan du bruke funksjonen timer.every() til å kalle en funksjon gjentatte ganger etter et bestemt tidsintervall. Intervallparameteren viser tiden i millisekunder mellom kjørbare tidsintervaller.

Angi ønsket intervall og funksjon_å_ringe vil bli brukt gjentatte ganger etter dette intervallet. Som de foregående tilfellene kan du inkludere et valgfritt argument som skal sendes til funksjonen når den kalles.

timer.hver ( intervall, funksjon_å_kalle ) ;
timer.hver ( intervall, funksjon_å_kalle, argument ) ; // Skriv intervallet ditt her


Du kan lære mer om denne metoden for å bruke et tidtakerbibliotek for å forsinke funksjonsanrop gjennom lenken Arduino timerbibliotek for forsinkelsesfunksjoner .

Noen andre biblioteker for forsinkelse i Arduino

Lenken nedenfor tar deg til Arduinos timerbiblioteker, hvor du kan installere timerbibliotekene for å forsinke funksjonsanrop.

Timer Library av Michael Contreras

Det er også en forfatter som har levert sitt eget opprettede ikke-blokkerende Arduino-timerbibliotek for å forsinke funksjonsanrop. Han har brukt innebygde funksjoner i Arduino som millis() og micros() for å utføre forsinkelsesfunksjoner uten å blokkere. En lenke til biblioteket hans er gitt nedenfor:

Michael Uray Arduino timerbibliotek

Konklusjon

Selv om delay()-funksjonen allerede er til stede i Arduino, kan den ikke brukes til å utføre flere oppgaver samtidig. For å utføre flere oppgaver samtidig, har ikke-blokkerende timerbiblioteker blitt opprettet av Arduino-fellesskapet som kan brukes når og når det er nødvendig.