Arduino

HeliOS pro Arduino

HeliOS pro Arduino
Mikrokontroléry Arduina používají jediný program k ovládání všech přepínačů, LED diod a dalších částí systému. První program, který se naučil uživatel Arduina, je obvykle program „Blink“, který pomocí funkce delay zapíná a vypíná LED rovnoměrně. Tento jednoduchý program lze rozšířit na mnoho věcí, ale nemůže zahrnovat multitasking.

U pokročilejších projektů musíte změnit hodnoty a číst data v reálném čase, což u standardní funkce zpoždění v Arduinu není možné. Proto je zapotřebí jiné řešení. Naštěstí může HeliOS pomoci.

Omezení Arduina

Jak bylo zmíněno v úvodu, standardní jazyk Arduina lze použít mnoha způsoby. Existuje však problém: Arduino nemůže provádět více úloh najednou. Například nemůžete nastavit tři různé LED, které budou blikat v nezávislých intervalech. Tuto úlohu nelze provést, protože pokud použijete zpoždění, LED s nejdelším zpožděním zablokuje blikání ostatních LED během čekání na přepnutí stavů.

Standardní dotazování je také problematické, protože kontrola stavu tlačítka vyžaduje provedení akce. Ve standardním Arduinu musíte nastavit funkci dotazování stavu přepínače nebo jiného stavu.

I když existují řešení pro řešení těchto problémů (např.G., hardwarová přerušení, funkce millis, implementace FreeRTOS), ale tato řešení mají také omezení. K překonání problémů těchto řešení vynalezl Mannie Peterson HeliOS. HeliOS je malý a efektivní a může dokonce běžet na 8bitových řadičích.

Zvažte níže uvedený kód, který je v nejlepším případě nespolehlivý, protože příkaz delay zabrání kontrole tlačítka.

int buttonPin = 2; // číslo kolíku tlačítka
int ledPin = 4; // číslo kolíku LED
// proměnné se změní:
int buttonState = 0; // proměnná pro čtení stavu tlačítka
void setup ()
// inicializujte pin LED jako výstup:
pinMode (ledPin, OUTPUT);
pinMode (LED_BUILTIN, VÝSTUP);
// inicializovat tlačítkový kolík jako vstup:
pinMode (buttonPin, INPUT);

void loop ()
// přečíst stav hodnoty tlačítka:
buttonState = digitalRead (buttonPin);
// zkontrolujte, zda je stisknuto tlačítko. Pokud ano, stav tlačítka je VYSOKÝ:
if (buttonState == HIGH)
digitalWrite (ledPin, HIGH); // rozsvítí LED
else
digitalWrite (ledPin, LOW); // zhasne LED

digitalWrite (LED_BUILTIN, HIGH); // rozsvítí LED (HIGH je úroveň napětí)
zpoždění (1000); // počkejte chvíli
digitalWrite (LED_BUILTIN, LOW); // zhasněte LED tím, že nastavíte NÍZKÉ napětí
zpoždění (1000); // počkejte chvíli

Po spuštění tohoto kódu uvidíte, že „ledPin“ bude normálně blikat. Když však stisknete tlačítko, nerozsvítí se, nebo pokud ano, zpozdí sekvenci blikání. Aby tento program fungoval, můžete přepnout na jiné metody zpoždění; HeliOS však poskytuje alternativu.

Linux integrovaný v Arduinu (HeliOS)

Navzdory názvu „OS“ není HeliOS operačním systémem: jedná se o knihovnu multitaskingových funkcí. Implementuje však 21 volání funkcí, které umožňují zjednodušit složité kontrolní úkoly. U úkolů v reálném čase musí systém zpracovávat externí informace tak, jak jsou přijímány. K tomu musí být systém schopen multitaskingu.

Ke zpracování úkolů v reálném čase lze použít několik strategií: strategie založené na událostech, strategie vyvážené za běhu a strategie oznámení úkolů. S HeliOS můžete použít kteroukoli z těchto strategií pro volání funkcí.

Stejně jako FreeRTOS vylepšuje HeliOS možnosti multitaskingu řadičů. Vývojáři, kteří plánují složitý projekt zásadního významu, však musí použít FreeRTOS nebo něco podobného, ​​protože HeliOS je určen pro nadšence a fandy, kteří chtějí prozkoumat sílu multitaskingu.

Instalace HeliOS

Při použití knihoven Arduino lze s IDE instalovat nové knihovny. Pro verze 1.3.5 a výše vyberete použít Správce knihoven.


Případně si můžete stáhnout soubor zip z webové stránky a použít jej k instalaci HeliOS.


Než budete moci začít používat HeliOS, musíte do kódu zahrnout.

Příklad

Níže uvedený kód lze použít k blikání LED jednou za sekundu. Ačkoli jsme přidali kód HeliOS, konečný efekt je stejný jako u úvodního kurzu.

Hlavní rozdíl zde spočívá v tom, že musíte vytvořit úkol. Tento úkol je uveden do stavu čekání a je nastaven časovač, který úkolu řekne, kdy má být spuštěn. Smyčka navíc obsahuje pouze jeden příkaz: xHeliOSLoop (). Tato smyčka spouští veškerý kód definovaný v nastavení () kódu. Když plánujete svůj kód, musíte nastavit všechny piny, konstanty a funkce v horním nastavení.

#zahrnout
// Slouží k uložení stavu LED
volatile int ledState = 0;
volatile int buttonState = 0;
const int buttonPin = 2;
const int ledPin = 4;
// Definujte blikající úlohu
void taskBlink (xTaskId id_)
if (ledState)
digitalWrite (LED_BUILTIN, LOW);
ledState = 0;
else
digitalWrite (LED_BUILTIN, HIGH);
ledState = 1;



// Definujte úlohu čtení tlačítka
void buttonRead (xTaskId id_)
buttonState = digitalRead (buttonPin);
// zkontrolujte, zda je stisknuto tlačítko. Pokud ano, stav tlačítka je VYSOKÝ:
if (buttonState == HIGH)
// rozsvítí LED:
digitalWrite (ledPin, HIGH);
else
// zhasne LED:
digitalWrite (ledPin, LOW);


void setup ()
// id sleduje úkoly
xTaskId id = 0;
// Tím se inicializují datové struktury Helios
xHeliOSSetup ();
pinMode (LED_BUILTIN, VÝSTUP);
pinMode (ledPin, OUTPUT);
// inicializovat tlačítkový kolík jako vstup:
pinMode (buttonPin, INPUT);
// Přidejte a poté počkejte taskBlink
id = xTaskAdd ("TASKBLINK", & taskBlink);
xTaskWait (id);
// Interval časovače pro 'id'
xTaskSetTimer (id, 10 000 000);
id = xTaskAdd ("TLAČÍTKO", & buttonRead);
xTaskStart (id);

void loop ()
// Toto a pouze toto je při použití Heliosu vždy ve smyčce
xHeliosLoop ();

S tímto kódem můžete naprogramovat LED tak, aby kdykoli blikali, aniž byste se museli starat o zpoždění Arduina.

Závěr

Tento projekt je skvělý pro lidi, kteří s Arduinem začínají, protože vám umožňuje používat běžný kód Arduino ke zpracování úkolů v reálném čase. Metoda popsaná v tomto článku je však určena pouze pro fandy a výzkumníky. U vážnějších projektů jsou nutné jiné metody.

Přemapujte tlačítka myši odlišně pro jiný software pomocí ovládání myší X-Mouse
Možná potřebujete nástroj, který by mohl změnit ovládání myši u každé aplikace, kterou používáte. V takovém případě můžete vyzkoušet aplikaci s názvem...
Recenze bezdrátové myši Microsoft Sculpt Touch
Nedávno jsem četl o Microsoft Sculpt Touch bezdrátová myš a rozhodl se ji koupit. Po chvíli používání jsem se rozhodl se s ním podělit o své zkušenost...
Trackpad a ukazatel myši AppyMouse na obrazovce pro tablety Windows
Uživatelé tabletů často postrádají ukazatel myši, zejména když obvykle používají notebooky. Dotykové smartphony a tablety mají mnoho výhod a jediným o...