Arduino Timer-bibliotek til forsinkelse

Arduino Timer Bibliotek Til Forsinkelse



Timeren er en af ​​nøglekomponenterne i Arduino til at håndtere tidsfølsomme opgaver. Arduinos timere bruger normalt funktionen delay() til at give en forsinkelse eller pause udførelse i små intervaller. Der kræves dog et særligt bibliotek til at forsinke funktioner til multitasking.

Denne guide vil dække forskellige Arduino-timerbiblioteker til forsinkelse med korte beskrivelser. Før det, lad os forstå begrænsningen af ​​Arduino delay()-funktionen.







Begrænsninger af forsinkelse()

Delay()-funktionen kan ikke bruges, hvis du vil udføre forskellige opgaver samtidigt, da det er en blokeringsfunktion. Det betyder, at når delay()-funktionen bruges til at sætte udførelsen af ​​en opgave på pause, tillader den ikke nogen anden funktion at udføre i mellemtiden. Derfor, når nogen ønsker at stoppe et program, mens andre kører, kan delay() ikke bruges.



Hvad skal man så gøre?



Arduino timerbibliotek til at forsinke funktionsopkald

For at løse dette problem skal du bruge specielle biblioteker designet til at udføre forsinkelse. Disse biblioteker giver dig mulighed for at sætte nogle af funktionerne i programmet på pause i nogen tid og køre andre i mellemtiden. Disse biblioteker er timerbiblioteker, der ikke blokerer for multitasking. De kan bruges til at kalde funktioner efter behov.





Sådan inkluderes Arduino Timer Library i Arduino Code

For at inkludere timerbiblioteket først skal vi tilføje zip-filen ved at gå til Inkluder bibliotek sektion i Arduino IDE. For en detaljeret beskrivelse af tilføjelse af Arduino-biblioteker kan du læse artiklen om hvordan man installerer bibliotek i Arduino IDE .

Trin 1

Først skal du downloade Arduino timerbiblioteket.



Trin 2

Når du har downloadet timerbiblioteket, skal du åbne Arduino IDE og gå til Sketch og derefter Inkluder bibliotek, og klik derefter på Tilføj ZIP-bibliotek.


Arduino vises 'Bibliotek installeret' i outputtet.

Trin 3

Når du har tilføjet ZIP-biblioteket til Arduino IDE, vises det i rullelisten over Inkluder biblioteksindstillinger i Arduino IDE. Herfra omfatter Timer bibliotek.


Når du medtager 'Timer' bibliotek, vil præprocessordirektivet fremgå af skitsen. Ellers kan du følge trin 4 for manuelt at inkludere biblioteket.

# omfatte < Timer.h >

Trin 4

For at inkludere Arduino Timer Library i Arduino-koden skal du bruge #omfatte direktiv sammen med (.h) udvidelsestimerbibliotekets navn, og opret derefter en timer som vist nedenfor.

#include
auto timer = timer_create_default ( ) ;


Når du har oprettet en timer, skal du lave en funktion for at kalde den timer. Du skal muligvis ringe til timeren på et bestemt tidspunkt, efter en kort forsinkelse eller efter et tidsinterval. Eksempler på at kalde timere under sådanne forhold er givet nedenfor.

Hvis du ønsker en kort forsinkelse

timer.in ( forsinkelse, funktion_at_kalde ) ;
timer.in ( forsinkelse, funktion_at_kalde, argument ) ; // eller med et valgfrit argument til funktion_at_kalde


I dette tilfælde kan vi bruge timer.in() funktion for at indføre en forsinkelse, før en bestemt funktion kaldes. Forsinkelsesparameteren repræsenterer den tid i millisekunder, vi ønsker at vente, før vi udfører koden.

Efter den angivne forsinkelse vil funktion_at_kalde vil blive brugt. Et argument kan også defineres til at overføres til funktionen på tidspunktet for opkaldet.

Hvis du ønsker at ringe til timeren på et bestemt tidspunkt

Denne funktion sætter en timer op til at udføre en specifik funktion på et bestemt tidspunkt. Tidsparameteren angiver det tidspunkt, hvor funktionen skal kaldes. Det kan være et bestemt tidsstempel eller en forsinkelsesværdi i millisekunder. Det funktion_at_kalde er parameteren for den funktion, der skal udføres efter udløbet af timeren.

timer.at ( tid , funktion_at_kalde ) ;
timer.at ( tid , funktion_at_kalde, argument ) ; // med argumentation


timer.at(tid, funktion_til_kalde, argument) funktion kan sende et argument til den funktion, der kaldes. Argumentparameteren vil være den værdi, der skal sendes i funktionen.

I tilfælde af at du ønsker at ringe til timeren efter et tidsinterval

I dette tilfælde kan du bruge timer.every()-funktionen til gentagne gange at kalde en funktion efter et bestemt tidsinterval. Intervalparameteren viser tiden i millisekunder mellem eksekverbare tidsintervaller.

Angiv det ønskede interval og funktion_at_kalde vil blive brugt gentagne gange efter dette interval. Ligesom de tidligere tilfælde kan du inkludere et valgfrit argument, der skal sendes til funktionen, når den kaldes.

timer.hver ( interval, funktion_at_kalde ) ;
timer.hver ( interval, funktion_at_kalde, argument ) ; // Skriv dit interval her


Du kan lære flere detaljer om denne metode til at bruge et timerbibliotek til at forsinke funktionsopkald via linket Arduino Timer-bibliotek til forsinkelsesfunktioner .

Nogle andre biblioteker til forsinkelse i Arduino

Linket nedenfor fører dig til Arduinos timerbiblioteker, hvor du kan installere timerbibliotekerne til at forsinke funktionsopkald.

Timer Library af Michael Contreras

Der er også en forfatter, der har leveret sit eget oprettede ikke-blokerende Arduino-timerbibliotek til at forsinke funktionsopkald. Han har brugt indbyggede funktioner i Arduino som millis() og micros() til at udføre forsinkelsesfunktioner uden at blokere. Et link til hans bibliotek er givet nedenfor:

Michael Uray Arduino timerbibliotek

Konklusion

Selvom delay()-funktionen allerede er til stede i Arduino, kan den ikke bruges til at udføre flere opgaver samtidigt. For at udføre flere opgaver på samme tid er der oprettet ikke-blokerende timerbiblioteker af Arduino-fællesskabet, som kan bruges efter behov.