Arduino Timer-bibliotheek voor vertraging

Arduino Timer Bibliotheek Voor Vertraging



De timer is een van de belangrijkste componenten van Arduino om tijdgevoelige taken uit te voeren. Arduino-timers gebruiken meestal de delay()-functie om een ​​vertraging of pauze-uitvoering voor kleine tijdsintervallen te bieden. Voor multitasking is echter een speciale bibliotheek voor vertragingsfuncties vereist.

Deze gids behandelt verschillende Arduino-timerbibliotheken voor vertraging met korte beschrijvingen. Laten we eerst de beperking van de functie Arduino delay() begrijpen.







Beperkingen van vertraging()

De functie delay() kan niet worden gebruikt als u verschillende taken tegelijk wilt uitvoeren, aangezien het een blokkerende functie is. Dit betekent dat wanneer de functie delay() wordt gebruikt om de uitvoering van een taak te pauzeren, er in de tussentijd geen andere functie kan worden uitgevoerd. Daarom kan delay() niet worden gebruikt als iemand een programma wil stoppen terwijl andere worden uitgevoerd.



Wat dan te doen?



Arduino Timer Library voor het vertragen van functieoproepen

Om dit probleem op te lossen, moet u speciale bibliotheken gebruiken die zijn ontworpen voor het uitvoeren van vertraging. Met deze bibliotheken kunt u sommige functies in het programma enige tijd onderbreken en andere in de tussentijd uitvoeren. Deze bibliotheken zijn timerbibliotheken die multitasking niet blokkeren. Ze kunnen worden gebruikt om functies aan te roepen wanneer dat nodig is.





Hoe Arduino Timer-bibliotheek in Arduino-code op te nemen

Om de timerbibliotheek op te nemen, moeten we eerst het zipbestand toevoegen door naar het Inclusief bibliotheek sectie in Arduino IDE. Voor een gedetailleerde beschrijving van het toevoegen van Arduino-bibliotheken, kunt u het artikel lezen op hoe bibliotheek in Arduino IDE te installeren .

Stap 1

Eerst moet je de Arduino-timerbibliotheek downloaden.



Stap 2

Na het downloaden van de timerbibliotheek, opent u Arduino IDE en gaat u naar Sketch en vervolgens naar Bibliotheek opnemen en klikt u vervolgens op ZIP-bibliotheek toevoegen.


Arduino wordt weergegeven 'Bibliotheek geïnstalleerd' in de uitvoer.

Stap 3

Nadat u de ZIP-bibliotheek aan Arduino IDE hebt toegevoegd, verschijnt deze in de vervolgkeuzelijst met Include Library-opties in Arduino IDE. Vanaf hier opnemen Timer bibliotheek.


Wanneer u de ‘Timer’ bibliotheek, zal de preprocessor-richtlijn op de schets verschijnen. Anders kunt u stap 4 volgen om de bibliotheek handmatig op te nemen.

# erbij betrekken < Timer.u >

Stap 4

Om de Arduino Timer Library in de Arduino-code op te nemen, moet u de #erbij betrekken richtlijn samen met de (.H) extension timer bibliotheek naam en maak vervolgens een timer zoals hieronder getoond.

#include
automatische timer = timer_create_default ( ) ;


Nadat je een timer hebt gemaakt, moet je een functie maken om die timer aan te roepen. Mogelijk moet u de timer op een bepaald tijdstip, na een korte vertraging of na een bepaalde tijd oproepen. Hieronder vindt u voorbeelden van het oproepen van timers in dergelijke omstandigheden.

Voor het geval u een korte vertraging wilt

timer.in ( vertraging, function_to_call ) ;
timer.in ( delay, function_to_call, argument ) ; // of met een optioneel argument voor function_to_call


In dit geval kunnen we de timer.in() functie om een ​​vertraging in te voeren voordat een specifieke functie wordt aangeroepen. De vertragingsparameter vertegenwoordigt de tijd in milliseconden die we willen wachten voordat de code wordt uitgevoerd.

Na de opgegeven vertraging zal de function_to_call zal gebruikt worden. Er kan ook een argument worden gedefinieerd om door te geven aan de functie op het moment van de aanroep.

Voor het geval u de timer op een specifiek tijdstip wilt bellen

Deze functie stelt een timer in om een ​​specifieke functie op een bepaald tijdstip uit te voeren. De parameter time specificeert het tijdstip waarop de functie moet worden aangeroepen. Dit kan een specifiek tijdstempel zijn of een vertragingswaarde in milliseconden. De function_to_call is de parameter van de functie die moet worden uitgevoerd na het verstrijken van de timer.

timer.at ( tijd , function_to_call ) ;
timer.at ( tijd , function_to_call, argument ) ; // met betoog


timer.at(tijd, function_to_call, argument) functie kan een argument doorgeven aan de functie die wordt aangeroepen. De argumentparameter is de waarde die moet worden doorgegeven in de functie.

Voor het geval u de timer wilt bellen na een tijdsinterval

In dit geval kunt u de functie timer.every() gebruiken om een ​​functie na een bepaald tijdsinterval herhaaldelijk aan te roepen. De intervalparameter toont de tijd in milliseconden tussen uitvoerbare tijdsintervallen.

Specificeer het gewenste interval en de function_to_call zal na dat interval herhaaldelijk worden gebruikt. Net als de vorige gevallen kunt u een optioneel argument opnemen dat aan de functie moet worden doorgegeven wanneer deze wordt aangeroepen.

timer.elke ( interval, function_to_call ) ;
timer.elke ( interval, function_to_call, argument ) ; // Schrijf hier je interval op


U kunt via de link meer informatie vinden over deze methode om een ​​timerbibliotheek te gebruiken voor het vertragen van functieaanroepen Arduino Timer-bibliotheek voor vertragingsfuncties .

Enkele andere bibliotheken voor vertraging in Arduino

De onderstaande link brengt u naar Arduino's timerbibliotheken, waar u de timerbibliotheken kunt installeren voor het vertragen van functieaanroepen.

Timerbibliotheek door Michael Contreras

Er is ook een auteur die zijn eigen gemaakte niet-blokkerende Arduino-timerbibliotheek heeft geleverd voor het vertragen van functieaanroepen. Hij heeft ingebouwde functies van Arduino gebruikt, zoals millis() en micros() om vertragingsfuncties uit te voeren zonder te blokkeren. Een link naar zijn bibliotheek wordt hieronder gegeven:

MichaelUray Arduino Timer-bibliotheek

Conclusie

Hoewel de functie delay() al aanwezig is in Arduino, kan deze niet worden gebruikt om meerdere taken tegelijk uit te voeren. Om meerdere taken tegelijkertijd uit te voeren, zijn er niet-blokkerende timerbibliotheken gemaakt door de Arduino-gemeenschap die naar behoefte kunnen worden gebruikt.