Stap 2: Code
Inrichten van de code, moet u eerst ook de hoofding bevat LTask en vmtimer. Ook geef ik mijn pin voor de digitale uitgang.
#include "LTask.h"#include "vmtimer.h" int pin = 8;
De LTask klasse behandelt draadsnijden voor de Arduino code, de Linkit één OS. De belangrijkste methode die u zal toegang worden in deze klasse is de remoteCall functie, die wordt gedefinieerd als:
remoteCall(remote_call_ptr func, void* userdata)
waar is remote_call_ptr een typedef:
typedef boolean (*remote_call_ptr)(void* user_data);
en userdata is elk object dat u wilt doorgeven aan uw callback functie.
De vmtimer-header geeft aan de vm_create_timer functie, die we gebruiken zullen om het maken van een lus voorziende timer die als trigger fungeert onze callback functie die wij registreren.
VMINT vm_create_timer(VMUINT32 millisec, VM_TIMERPROC_T timerproc);
De parameters zijn de milliseconden tussen timer callbacks en de functie voor het terugbellen. vm_create_timer geeft het id van de timer die het Linkit één systeem wordt gemaakt. Het zal worden kleiner dan nul als het systeem kan niet het maken van een timer.
Opmerking: er kan alleen worden een maximum van 10 van deze timers op elk gewenst moment in uw code, dus als u van plan met behulp van meerdere je moet ervoor zorgen dat u timers verwijderen wanneer u klaar met hen bent.
VOID Setup
Start uw seriële, uw pincode instellen met digitale uitgang en mij persoonlijk zwenking vandoor naar de LED aan het begin. Belangrijkst zullen we gebruiken LTask remoteCall registreren van een functie "createTimer" dat de system call wanneer het klaar om te beginnen een draad.
LTask.remoteCall((remote_call_ptr)createTimer, NULL);
void loop
Niets doen, we zullen niet de lus gebruiken voor dit voorbeeld
In createTimer()
Dit heet door het systeem, omdat we deze functie hebt ingeschreven met LTask.remoteCall(). We moeten remoteCall gebruiken voordat we de vmtimer, die als onze loop fungeren zal kunt instellen.
VMINT timerId = vm_create_timer(1000, (VM_TIMERPROC_T)timerTick);
VMINT is een geheel getal. vm_create_timer neemt twee parameters, de tijd in milliseconden die u wilt dat de timer moet worden gewacht voordat het aanroepen van de functie die is opgegeven in de tweede parameter. De functie moet overeenkomen met de handtekening van de VM_TIMER_PROC_T, die is gedefinieerd als een functie die een integer parameter (de taak-id neemt)
typedef void (*VM_TIMERPROC_T)(VMINT tid);
VOID timerTick(VMINT tid)
Dit is onze functie die wordt aangeroepen telkens wanneer de vmtimer wordt gegenereerd. Voor dit voorbeeld schakelen ik alleen de LED in- of uitschakelen met de digitalWrite() als normaal.
if (blinkCount & 1) { digitalWrite(pin, HIGH); Serial.println("LED On"); } else { digitalWrite(pin, LOW); Serial.println("LED Off"); }
Zoals vóór, kan alleen ooit er is 10 vmtimer actief. Het is dus verstandig om ze te verwijderen wanneer u klaar bent. Ik verwijder na 10 herhalingen op de timerTick, de timer.
vm_delete_timer(tid);
En thats it!
Ik hoop dat dit heeft geholpen dat iedereen op zoek naar het gebruik van de timer is geboden door de Linkit One.