Arduino Timer Library för fördröjning

Arduino Timer Library For Fordrojning



Timern är en av nyckelkomponenterna i Arduino för att hantera tidskänsliga uppgifter. Arduinos timers använder vanligtvis funktionen delay() för att tillhandahålla en fördröjning eller pauskörning under små tidsintervall. Ett speciellt bibliotek för fördröjning av funktioner krävs dock för multitasking.

Den här guiden kommer att täcka olika Arduino-timerbibliotek för fördröjning med korta beskrivningar. Innan det låt oss förstå begränsningen av Arduino delay()-funktionen.







Begränsningar av fördröjning()

Funktionen delay() kan inte användas om du vill utföra olika uppgifter samtidigt, eftersom det är en blockeringsfunktion. Det betyder att närhelst funktionen delay() används för att pausa exekveringen av en uppgift, tillåter den inte att någon annan funktion körs under tiden. Därför, när någon vill stoppa ett program medan andra körs, kan delay() inte användas.



Vad ska man göra då?



Arduino Timer Library för att fördröja funktionssamtal

För att lösa det här problemet bör du använda speciella bibliotek utformade för att utföra fördröjning. Dessa bibliotek låter dig pausa några av funktionerna i programmet en tid och köra andra under tiden. Dessa bibliotek är timerbibliotek som inte blockerar multitasking. De kan användas för att anropa funktioner vid behov.





Hur man inkluderar Arduino Timer Library i Arduino Code

För att inkludera timerbiblioteket måste vi först lägga till zip-filen genom att gå till Inkludera bibliotek avsnitt i Arduino IDE. För en detaljerad beskrivning av hur du lägger till Arduino-bibliotek kan du läsa artikeln om hur man installerar bibliotek i Arduino IDE .

Steg 1

Först måste du ladda ner Arduino-timerbiblioteket.



Steg 2

Efter att ha laddat ner timerbiblioteket, öppna Arduino IDE och gå till Sketch sedan Inkludera bibliotek och klicka sedan på Lägg till ZIP-bibliotek.


Arduino kommer att visas 'Bibliotek installerat' i utgången.

Steg 3

När du har lagt till ZIP-biblioteket till Arduino IDE, kommer det att visas i rullgardinsmenyn med Inkludera biblioteksalternativ i Arduino IDE. Härifrån inkluderar Timer bibliotek.


När du inkluderar 'Timer' biblioteket kommer förprocessordirektivet att visas på skissen. Annars kan du följa steg 4 för att manuellt inkludera biblioteket.

# omfatta < Timer.h >

Steg 4

För att inkludera Arduino Timer Library i Arduino-koden måste du använda #omfatta direktiv tillsammans med (.h) förlängningstimerbibliotekets namn och skapa sedan en timer som visas nedan.

#include
automatisk timer = timer_create_default ( ) ;


När du har skapat en timer måste du skapa en funktion för att anropa den timern. Du kan behöva ringa timern vid en viss tidpunkt, efter en kort fördröjning eller efter ett visst tidsintervall. Exempel på att ringa timer under sådana förhållanden ges nedan.

Om du vill ha en kort fördröjning

timer.in ( fördröjning, funktion_att_ringa ) ;
timer.in ( delay, function_to_call, argument ) ; // eller med ett valfritt argument för funktion_att_ringa


I det här fallet kan vi använda timer.in() funktion för att införa en fördröjning innan en specifik funktion anropas. Fördröjningsparametern representerar tiden i millisekunder som vi vill vänta innan vi exekverar koden.

Efter den angivna fördröjningen, funktion_att_ringa kommer att användas. Ett argument kan också definieras för att skickas till funktionen vid tidpunkten för anropet.

Om du vill ringa timern vid en viss tidpunkt

Denna funktion ställer in en timer för att utföra en specifik funktion vid en viss tidpunkt. Tidsparametern anger vid vilken tidpunkt funktionen ska anropas. Det kan vara en specifik tidsstämpel eller ett fördröjningsvärde i millisekunder. De funktion_att_ringa är parametern för den funktion som ska utföras efter att timern har gått ut.

timer.at ( tid , funktion_att_ringa ) ;
timer.at ( tid , funktion_att_anropa, argument ) ; // med argument


timer.at(tid, funktion_att_anropa, argument) funktion kan skicka ett argument till den funktion som anropas. Argumentparametern kommer att vara det värde som ska skickas i funktionen.

Om du vill ringa timer efter ett tidsintervall

I det här fallet kan du använda funktionen timer.every() för att upprepade gånger anropa en funktion efter ett visst tidsintervall. Intervallparametern visar tiden i millisekunder mellan körbara tidsintervall.

Ange önskat intervall och funktion_att_ringa kommer att användas upprepade gånger efter det intervallet. Liksom de tidigare fallen kan du inkludera ett valfritt argument som ska skickas till funktionen när den anropas.

timer.varje ( intervall, funktion_att_anropa ) ;
timer.varje ( intervall, funktion_att_anropa, argument ) ; // Skriv ditt intervall här


Du kan lära dig mer detaljer om den här metoden att använda ett timerbibliotek för att fördröja funktionsanrop via länken Arduino timerbibliotek för fördröjningsfunktioner .

Några andra bibliotek för fördröjning i Arduino

Länken nedan tar dig till Arduinos timerbibliotek, där du kan installera timerbiblioteken för att fördröja funktionsanrop.

Timer Library av Michael Contreras

Det finns också en författare som har tillhandahållit sitt eget skapade icke-blockerande Arduino-timerbibliotek för att fördröja funktionsanrop. Han har använt inbyggda funktioner i Arduino som millis() och micros() för att utföra fördröjningsfunktioner utan att blockera. En länk till hans bibliotek finns nedan:

Michael Uray Arduino timerbibliotek

Slutsats

Även om funktionen delay() redan finns i Arduino, kan den inte användas för att utföra flera uppgifter samtidigt. För att utföra flera uppgifter samtidigt har icke-blockerande timerbibliotek skapats av Arduino-communityt som kan användas vid behov.