Netduino Plus: digitální výstupy

Pro prvním seznámení s platformou .NET Micro Framework si hned vytvoříme náš první embedded program. Celý seriál bude zaměřen především na  vývojovou desku Netduino Plus. Jelikož klasické Hello World nepovažuji zde za dostatečné a odpovídající program k němu je v elektronice blikání LED, zkusíme právě to. Téměř každá deska platformy .NET Micro Framework vestavěnou LED, která se dá programově ovládat, již obsahuje.

Blikání ledkou

Výše naznačeným záměrem je rozblikání LED na výstupním pinu mikrokontroléru. Chceme-li nastavit výstupní pin mikrokontroléru v prostředí .NET Micro Frameworku na určenou logickou hodnotu, musíme žádaný pin nejprve inicializovat. Inicializaci pinu můžeme provést dvojím způsobem. První možností je zavolat inicializaci přes knihovnu Microsoft.SPOT.Hardware, která je společná pro všechny desky platformy .NET Micro Framework. Druhou možností je zavolat inicializaci prostřednictvím knihovny výrobce použitého hardwaru; pro Netduino tedy přes knihovnu SecretLabs.NETMF.Hardware.NetduinoPlus. Druhá cesta je mnohem výhodnější, protože popis pinu odpovídá popisu desky výrobce a proto se budeme držet právě jí.

Pak už jen zavoláme na příslušný pin metodu Write(), která jako parametr přijímá požadovaný výstupní stav. Parametr pro metodu je typu boolean a pokud nabude hodnotu true, nastaví se  výstupní pin do logické 1 (H).  Při hodnotě false se nastaví výstupní pin do logické 0 (L).

První příklad nám ukáže, jak na to prakticky. Spusťte program Visual Studio a založte nový projekt pro Netduino Plus. Do tohoto projektu napište kód z výpisu 1. Po jeho spuštění se rozbliká LED, zapojená na desce Netduina Plus.

Výpis 1

using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.NetduinoPlus;

namespace Blink_LED
{
    public class Program
    {
        public static void Main()
        {
            OutputPort _ioLED = new OutputPort(Pins.ONBOARD_LED, false);
                //inicializace vystupniho portu na konkretnim pinu

            while (true) //nekonecna smycka ve ktere Netduino blika LED
            {
                _ioLED.Write(true); //nastaveni logicke 1
                Thread.Sleep(1000); //pauza 1000 ms = 1s

                _ioLED.Write(false); //nastaveni logicke 0
                Thread.Sleep(500); //pauza 500 ms
            }
        }
    }
}

V programu jako první voláme konstruktor třídy OutputPort se dvěma parametry. První parametr je číslo pinu mikrokontroléru a druhý parametr je požadovaný logický stav tohoto pinu. Dále v nekonečné smyčce nastavujeme vysokou (H) a nízkou (L) logickou úroveň na pinu. Mezi jednotlivými změnami je vložena pauza, abychom výsledný stav, zobrazený LED mohli sledovat pouhým okem.

Blikáme opravdovou ledkou

Nyní si ukážeme jak snadno upravit program a rozblikáme si LED, kterou si sami připojíme. Bude nám stačit zcela běžná LED a v ideálním případě ještě 220ohm rezistor. Pokud máte jen ledku, nevadí, pro rychlé odzkoušení, bude stačit. Všimněte si, že ledka má dva vývody, jeden delší než druhý. Ten delší vývod je anoda a připojuje se na kladný pól napájecího zdroje, kratší je katoda a připojujeme jí na záporný pól zdroje. Protože Netduino Plus má vedle sebe na vývodech zem (GND) a výstup číslo 13 využijeme toho a připojíme sem LED, katodou (kratším vývodem) na zemi (GND) a anodou – ideálně přes 220ohmový rezistor – na výstup 13. Nyní zbývá upravit jeden řádek programu a rozblikáme si tak naší ledku. Upravte pouze inicializaci pinu dle výpisu 2.

Výpis 1

OutputPort _ioLED = new OutputPort(Pins.GPIO_PIN_D13, false);

Vidíme, že jediný rozdíl je ve výběru pinu. Místo LED na desce jsme vybrali konkrétní pin a použili ho jako výstupní.

Pamatujte, že u většiny vývojový desek kompilátor nenahlásí chybu, pokud nastavíte obousměrný pin do pouze vstupního módu a naopak. Můžete se dočkat nemilých překvapení, které se obtížně hledají. V případě, že budete chtít inicializovat ten stejný pin znovu na jiném místě programu, je nutné nejprve uvolnit původní inicializaci pinu. Ale o tom až někdy příště.

Nakonec volně stažitelnou verzi Visual Studia 2010 naleznete zde a odpovídající SDK pro vývoj v .NET MF zde. Nakonec je nutné stáhnout si knihovny pro konkrétní desku, zde je to Netduino Plus.

Vybraný hardware pro Microsoft . NET Micro Framework lze zakoupit na shop.snailinstruments.com .