XAMLab(ザムラボ)
ザムラボ - XAML研究室、WPF、Silverlight関連など。

目次

Blog 利用状況
  • 投稿数 - 202
  • 記事 - 1
  • コメント - 1191
  • トラックバック - 43
ニュース

書庫

日記カテゴリ

ギャラリ

なか-chan関連サイト

他の方へのリンク

 

前回は、LEDが自動的にチカチカするだけでしたが、ボタンを押したら、LEDが光るようにします。
ちょうど初音さんも同様の記事を書いているので、ちょっと違う方法で…

netduino公式ページの、projectsというページの一番最後に、光らせ方のビデオがあるので、こちらを参考にします。
ただし、解説は、古い netoduino 1 で行っているので、少々Pinの指定や値が違ったりするようです。

ちなみに、btn.OnInterrupt まで記入したところで、Tabキーを2回押すと、イベントハンドラが自動的に作成されます。
VisualStudio が使えて幸せなところですね。(^^)/ まるで、WPFやWindowsFormで、button1.Click += button1_Click;
とやっているかのように、同じ感覚でボタンクリックの処理が書けます。

InterruptPort変数を作るときに、 Port.InterruptMode.InterruptEdgeBoth を指定すると、
ボタンを押したとき、および離したタイミングの2回、イベントハンドラが呼ばれるようになるようです。
そのとき、data2 に、1(ON)または0(OFF)の情報が渡ってきますので、これをtrueとfalseに変換してセットしてあげます。

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.Netduino;

namespace NetduinoApplication2
{
    public class Program
    {
        static OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);

        public static void Main()
        {
            // 立ち上がりと立ち下がりの両方を検知するように設定
            var btn = new InterruptPort(Pins.ONBOARD_BTN, false, Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeBoth);
           
            // +=まで入力して、TABキーを押すと、ハンドラーを自動で生成できます
            btn.OnInterrupt += btn_OnInterrupt;

            // これがないと、すぐに終了してしまう
            Thread.Sleep(Timeout.Infinite);
        }

        static void btn_OnInterrupt(uint data1, uint data2, DateTime time)
        {
            // 1または0が渡ってくるので、trueまたはfalseに変換して設定
            led.Write(data2 != 0);
        }
    }
}

投稿日時 : 2015年4月5日 17:40
コメント
No comments posted yet.
タイトル
名前
Url
コメント