Linkit en: LTask Blink (2 / 2 steg)
Steg 2: kod
För att installera koden, måste du först innehålla den LTask och vmtimer headers. Jag också ange min PIN-kod för digital utgång.
#include "LTask.h"
#include "vmtimer.h"
int pin = 8.
Klassen LTask hanterar threading för din Arduino kod, till Linkit en OS. Den huvudsakliga metoden du kommer att komma åt i denna klass är den remoteCall funktionen som definieras som:
remoteCall (remote_call_ptr func, void * userdata)
där remote_call_ptr är en typedef:
TypeDef booleska (* remote_call_ptr) (void * user_data);
userdata är alla objekt som du vill skicka till din callback funktion.
Vmtimer huvudet definierar funktionen vm_create_timer, som vi kommer att använda för att skapa en loopande timer som utlöser våra funktion callback som vi registrerar.
VMINT vm_create_timer (VMUINT32 millisekunder, VM_TIMERPROC_T timerproc);
Parametrarna är millisekunder mellan timer callbacks och funktionen att motringning. vm_create_timer returnerar id för timern som skapar en Linkit systemet. Det kommer att vara mindre än noll om systemet inte kunde skapa en timer.
Obs: det kan bara finnas ett max på 10 av dessa timers när som helst i din kod, så om du planerar att använda flera du bör se till du radera timers när du är klar med dem.
void setup()
Starta din följetong, ange din PIN-kod till digital utgång och jag personligen stänga av lampan i början. Viktigast av allt kommer vi att använda LTask remoteCall för att registrera en funktion "createTimer" att ha systemanropet när den är klar att starta en tråd.
LTask.remoteCall ((remote_call_ptr) createTimer, NULL);
void loop()
Gör ingenting, vi kommer inte att använda slingan för detta exempel
I createTimer()
Detta kallas av systemet, eftersom vi har registrerat den här funktionen med LTask.remoteCall(). Vi måste använda remoteCall innan vi kan sätta den vmtimer, som kommer att fungera som våra loop().
VMINT timerId = vm_create_timer (1000, (VM_TIMERPROC_T) timerTick);
VMINT är ett heltal. vm_create_timer har två parametrar, tid i millisekunder som du vill använda timern att vänta innan du anropar funktionen anges i den andra parametern. Funktionen måste matcha en VM_TIMER_PROC_T underskrift, som definieras som en funktion som tar en integer parameter (aktivitets-id)
TypeDef void (* VM_TIMERPROC_T)(VMINT tid);
void timerTick(VMINT tid)
Detta är vår funktion som kommer att kallas varje gång vmtimer utlöser. Det här exemplet växla jag bara LED på eller av med digitalWrite() som vanligt.
om (blinkCount & 1) {
digitalWrite (pin, hög);
Serial.println ("LED på");
}
annat {
digitalWrite (pin, låg);
Serial.println ("LED av");
}
Som var sagt tidigare, det kan alltid bara vara är 10 vmtimer aktiv. Så är det god praxis att ta bort dem när du är klar. Efter 10 upprepningar på timerTick bort jag timern.
vm_delete_timer(tid);
Och det är det!
Jag hoppas detta har hjälpt någon undersöker med hjälp av timern är som tillhandahålls av Linkit en.