TinyCLR OS デジタル出力

TinyCLR OSでデジタル出力を試しました。

環境は下記で作ったものを使用します。

matsujirushi.hatenablog.jp

デジタル出力のやり方は、General Purpose Input Output (GPIO)に丁寧に書かれています。素晴らしい。

パッケージソースに追加

デジタル出力するには、プロジェクトにGHIElectronics.TinyCLR.Devices.Gpioのnugetパッケージをインストールする必要があります。

しかし、TinyCLR OSがアルファ版のためか、まだnuget.orgにはアップされていません。

f:id:matsujirushix:20170726212624p:plain

そのため、適当なフォルダに.nupkgを置いて、パッケージソースにそのフォルダを追加することで、インストール可能にします。

ここからダウンロードできる、TinyCLR_Libraries.0.5.0.zipを適当なフォルダに解凍して、Visual Studioのパッケージソースに追加します。

f:id:matsujirushix:20170726213030p:plain

ライブラリをインストー

そして、プロジェクトにGHIElectronics.TinyCLR.Devicesをインストールします。

f:id:matsujirushix:20170726213434p:plain

Windows IoT Coreでお馴染みの、GpioControllerやGpioPinが含まれていますね。

f:id:matsujirushix:20170726213635p:plain

コーディング

プログラムはこんな感じ。

using GHIElectronics.TinyCLR.Devices.Gpio;
using System;
using System.Threading;

namespace TinyCLRApplication1
{
    class Program
    {
        static int PinNumber(char port, byte pin)
        {
            if (port < 'A' || port > 'E') throw new ArgumentException();
            return ((port - 'A') * 16) + pin;
        }

        static void Main()
        {
            for (;;)
            {
                GpioPin led = GpioController.GetDefault().OpenPin(PinNumber('D', 15));
                led.SetDriveMode(GpioPinDriveMode.Output);

                while (true)
                {
                    led.Write(GpioPinValue.High);
                    Thread.Sleep(100);
                    led.Write(GpioPinValue.Low);
                    Thread.Sleep(100);
                }
            }
        }
    }
}

実行

青色LEDが点滅すれば成功です。

f:id:matsujirushix:20170727224540p:plain