タイマーでLEDを点滅させる

環境構築ができてない人はこちらを参照してください。

回路を作る

回路は前回と同じです。

タイマープログラムを書く

今回はプログラムのみ変えます。

MainPage.xaml.csをこのようにしましょう。

public sealed partial class MainPage : Page
{
    GpioController gpio;
    GpioPin pin;
    DispatcherTimer timer;
    bool isOn;

    public MainPage()
    {
        this.InitializeComponent();
        //GPIO初期化
        gpio = GpioController.GetDefault();
        //26番ピンを取得
        var pinId = 26;
        pin = gpio.OpenPin(pinId);
        //26番ピンを出力指定
        pin.SetDriveMode(GpioPinDriveMode.Output);

        isOn = false;

        //タイマー初期化
        timer = new DispatcherTimer()
        {
            //間隔は100ミリ秒
            Interval = TimeSpan.FromMilliseconds(100)
        };
        timer.Tick += (s, e) =>
        {
            //タイマーがスタートしたあと、100ミリ秒間隔でここが呼ばれる
            if (isOn)
            {
                pin.Write(GpioPinValue.High);
            }
            else
            {
                pin.Write(GpioPinValue.Low);
            }

            isOn = !isOn;
        };
        //タイマースタート
        timer.Start();
    }
}

.NetのDispatcherTimerクラスをつかって100ミリ秒間隔でLEDのオンオフを行います。

pin.Write(GpioPinValue.High)で5V出力→LED点灯

pin.Write(GpioPinValue.Low)で0V出力→LED消灯

をisOnフラグを交互に変更することで切り替えています。

imgplay_20150912174816

このようにWindows10 IoT Coreは.NetやWindowsRuntimeの既存の資産を使えるので慣れてる人には便利ですね

2件のコメント

  • 高梨百合 より:

    はじめまして。
    突然ではございますが、デジタルマーティングの分野に従事しております高梨と申します。
    今回こちらの記事を拝見し、電子部品関係メーカーの記事内での紹介等をご依頼させていただければと思いご連絡させていただきました。
    もしよろしければ詳細についてメールにてご説明をさせていただければと思っております。お忙しいところ恐れ入りますが、一度ご連絡をいただけましたら幸いです。
    お返事心よりお待ちしております。
    高梨 百合

  • garicchi より:

    ご連絡ありがとうございます。私の連絡先は xgaricchi(at)gmail.com になります

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください