Taimer on üks Arduino põhikomponente ajatundlike ülesannete täitmiseks. Arduino taimerid kasutavad tavaliselt viivituse () funktsiooni, et anda viivitus või peatada täitmine väikesteks ajavahemikeks. Multitegumtööks on aga vaja spetsiaalset funktsioonide viivitamiseks teeki.
See juhend hõlmab erinevaid Arduino taimeriteeke viivitamiseks koos lühikirjeldustega. Enne seda mõistame Arduino delay() funktsiooni piiranguid.
Viivituse piirangud ()
Funktsiooni delay() ei saa kasutada, kui soovite korraga täita erinevaid ülesandeid, kuna see on blokeerimisfunktsioon. See tähendab, et kui funktsiooni delay() kasutatakse ülesande täitmise peatamiseks, ei luba see vahepeal ühelgi teisel funktsioonil käivitada. Seega, kui keegi soovib peatada ühe programmi teiste käivitamise ajal, ei saa delay() kasutada.
Mida siis teha?
Arduino taimeriteek funktsioonikõnede viivitamiseks
Selle probleemi lahendamiseks peaksite kasutama spetsiaalseid viite sooritamiseks loodud teeke. Need teegid võimaldavad mõneks ajaks peatada mõned programmi funktsioonid ja vahepeal käitada teisi. Need teegid on taimeriteekid, mis ei blokeeri multitegumtöötlust. Neid saab kasutada funktsioonide helistamiseks vastavalt vajadusele.
Kuidas kaasata Arduino taimeri raamatukogu Arduino koodi
Taimeri teegi kaasamiseks peame esmalt lisama ZIP-faili, minnes aadressile Kaasa raamatukogu jaotis Arduino IDE-s. Arduino teekide lisamise üksikasjaliku kirjelduse saamiseks lugege artiklit kuidas installida raamatukogu Arduino IDE-sse .
Samm 1
Esiteks peate alla laadima Arduino taimeri raamatukogu.
2. samm
Pärast taimeri teegi allalaadimist avage Arduino IDE ja minge Sketch, seejärel Include Library ja seejärel klõpsake nuppu Lisa ZIP-teek.
Arduino kuvatakse 'Teek on installitud' väljundis.
3. samm
Pärast ZIP-teegi lisamist Arduino IDE-sse kuvatakse see Arduino IDE-s valikute Kaasa teegi ripploendis. Siit kaasa arvatud Taimer raamatukogu.
Kui lisate 'Taimer' teeki, ilmub visandile eelprotsessori direktiiv. Vastasel juhul võite teegi käsitsi kaasamiseks järgida 4. sammu.
4. samm
Arduino taimeri raamatukogu lisamiseks Arduino koodi peate kasutama #kaasa direktiiv koos (.h) laiendustaimeri teegi nimi ja seejärel looge taimer, nagu allpool näidatud.
#includeauto taimer = timer_create_default ( ) ;
Pärast taimeri loomist peate selle taimeri kutsumiseks tegema funktsiooni. Võimalik, et peate helistama taimerile teatud ajahetkel, pärast lühikest viivitust või teatud aja möödumist. Allpool on toodud näited taimerite helistamiseks sellistes tingimustes.
Kui soovite lühikest viivitust
timer.in ( viivitus, kõne_funktsioon ) ;
timer.in ( viivitus, kõne_funktsioon, argument ) ; // või valikulise argumendiga jaoks funktsioon_to_call
Sel juhul saame kasutada timer.in() funktsiooni viivituse sisseviimiseks enne konkreetse funktsiooni kutsumist. Viivituse parameeter tähistab aega millisekundites, mille tahame enne koodi käivitamist oodata.
Pärast määratud viivitust, funktsioon_to_call kasutatakse. Argumendi saab määratleda ka nii, et see edastaks funktsioonile väljakutse ajal.
Kui soovite taimerile kindlal ajal helistada
See funktsioon seadistab taimeri konkreetse funktsiooni täitmiseks kindlal ajal. Ajaparameeter määrab aja, millal funktsioon tuleks välja kutsuda. See võib olla konkreetne ajatempel või viiteväärtus millisekundites. The funktsioon_to_call on funktsiooni parameeter, mis tuleb käivitada pärast taimeri aegumist.
taimer.at ( aega , funktsioon_to_call ) ;taimer.at ( aega , kutsutav_funktsioon, argument ) ; // argumendiga
timer.at(aeg, funktsioon_kõne_kõneks, argument) funktsioon saab kutsutavale funktsioonile argumendi edastada. Argumendi parameeter on väärtus, mis tuleb funktsioonis edasi anda.
Kui soovite pärast teatud ajavahemikku taimerile helistada
Sel juhul saate funktsiooni timer.every() abil teatud aja tagant funktsiooni korduvalt välja kutsuda. Intervalli parameeter näitab aega millisekundites käivitatavate ajavahemike vahel.
Määrake soovitud intervall ja funktsioon_to_call kasutatakse pärast seda intervalli korduvalt. Nagu eelmistel juhtudel, saate lisada valikulise argumendi, mis edastatakse funktsiooni kutsumisel.
taimer.iga ( intervall, kõne_funktsioon ) ;taimer.iga ( intervall, funktsioon_kutsuda, argument ) ; // Kirjutage oma intervall siia
Lisateavet selle meetodi kohta, kuidas funktsioonikutsete viivitamiseks kasutada taimeri teegi, saate lingi kaudu Arduino taimeriteek funktsioonide viivitamiseks .
Mõned muud raamatukogud Arduino viivitamiseks
Allpool toodud link viib teid Arduino taimeriteekidesse, kus saate installida funktsioonikõnede edasilükkamiseks taimeriteeke.
Taimeri raamatukogu Michael Contreras
Samuti on autor, kes on funktsioonikõnede viivitamiseks pakkunud enda loodud mitteblokeeriva Arduino taimeriteeki. Ta on kasutanud Arduino sisseehitatud funktsioone, nagu millis() ja micros(), et viivitada ilma blokeerimata. Allpool on link tema raamatukogule:
MichaelUray Arduino taimeri raamatukogu
Järeldus
Kuigi funktsioon delay() on Arduinos juba olemas, ei saa seda kasutada mitme ülesande samaaegseks täitmiseks. Mitme ülesande samaaegseks täitmiseks on Arduino kogukond loonud mitteblokeerivad taimeriteekid, mida saab vajaduse korral kasutada.