Win10 IoT C#開發 2 - GPIO Pin 控制發光二極體

來源:互聯網
上載者:User

標籤:

Windows 10 IoT Core 是微軟針對物聯網市場的一個重要產品,與以往的Windows版本不同,是為物聯網裝置專門設計的,硬體也不僅僅限於x86架構,同時可以在ARM架構上運行。

上一篇文章我們詳細介紹了Raspberry安裝Win 10 IoT Core系統及搭建開發環境的過程,如果還不熟悉安裝搭建過程可以參考  Win10 IoT C#開發 1 - Raspberry安裝IoT系統及搭建開發環境(http://www.cnblogs.com/cloudtech/p/5562120.html)。

這次要通過對Pin的操作來類比交通燈的切換,流程很簡單。首先紅燈亮起 -> 紅燈10秒後熄滅 -> 黃燈亮起 -> 黃燈3秒後熄滅 -> 綠燈亮起 -> 綠燈10秒後熄滅,然後開始下一個迴圈。每次燈亮時會向遠程伺服器推送當前哪盞燈亮的訊息。

準備工作:

刷好Win 10 IoT Core系統的 Raspberry Pi 2

部署Visual Studio 2015開發環境的PC

紅,黃,綠 3種顏色的發光二極體

220R電阻

GPIO擴充板

IDC排線

杜邦線

麵包板

1.安裝元器件

首先將 GPIO擴充板 安裝到麵包板上,再通過 IDC排線 與 Raspberry Pi 2 的 GPIO 介面串連。

下面開始串連發光二極體,為了保證二極體不被燒壞需要加裝限流電阻,我們假定三種二極體的壓降均是1.8V,額定電流15mA,通過公式可以算出213.3Ω=(5V-1.8V)/0.015A , 所以我們選用220R的電阻。

發光二極體引腳長的一端為正極與5V電源相聯,中間加裝220R的電阻。紅色的負極與GPIO21串連,黃色的負極與GPIO25串連,綠色的負極與GPIO20串連。

2.編寫代碼

開啟 Visual Studio 2015建立 IoT 項目,將發光二極體的控制功能封裝到一個名為LED的類中,該類包含兩個主要方法,Open方法點亮二極體,Close方法熄滅二極體。主進程通過LED控制類的紅,黃,綠三個執行個體來操作發光二極體的迴圈切換,每次切換時使用HttpClient向遠程伺服器推送訊息。

完整代碼:

namespace CloudTechIot2{       //http://www.cnblogs.com/cloudtech    public sealed class StartupTask : IBackgroundTask    {        public void Run(IBackgroundTaskInstance taskInstance)        {            //初始化Pins            var pins = new LED[] { new LED(Colors.Red, 10), new LED(Colors.Yellow, 3), new LED(Colors.Green, 10) };            //迴圈            while (true)            {                //依次操作LED                foreach (var pin in pins)                {                    pin.Open();                    //通知遠程伺服器LED的切換                    SendMsg(pin.Color.ToString());                    //期間(秒)                    Task.Delay(TimeSpan.FromSeconds(pin.Interval)).Wait();                    pin.Close();                }            }        }        //輸出結果        private void SendMsg(string res)        {            //列印            Debug.WriteLine(res);            //推送到伺服器            HttpClient httpClient = new HttpClient();            //伺服器程式地址及連接埠192.168.1.5:8099            httpClient.GetAsync(new Uri(string.Format("http://192.168.1.5:8099/{0}", res)));        }    }    //LED顏色    public enum Colors : int    {        Red = 21,        Yellow = 25,        Green = 20    }    //LED控制類    public sealed class LED    {        //GPIO        private static GpioController _gpio;        private Colors _color;        //顏色        public Colors Color        {            get            {                return _color;            }        }        private GpioPin _pin;        //Pin        public GpioPin Pin        {            get            {                return _pin;            }        }        private ushort _interval;        //期間        public ushort Interval        {            get            {                return _interval;            }        }        //建立Pin        public LED(Colors led, ushort interval)        {            _color = led;            _pin = _gpio.OpenPin((int)_color);            _pin.SetDriveMode(GpioPinDriveMode.Output);            _interval = interval;        }        //初始化GPIO        static LED()        {            _gpio = GpioController.GetDefault();            if (null == _gpio)            {                throw new Exception("GPIO initial failed");            }        }        //開啟LED        public void Open()        {            _pin.Write(GpioPinValue.Low);        }        //關閉LED        public void Close()        {            _pin.Write(GpioPinValue.High);        }    }}

 3.調試代碼

這裡我們用Nodejs寫了一個類比伺服器的程式,監聽8099連接埠接收IoT裝置推送來的訊息並列印到Console中,在PC (IP:192.168.1.5) 上啟動該程式開始監聽。

 

接通Raspberry電源,等待 Win 10 IoT Core 啟動結束後使用Remote Machine部署我們剛才寫的程式。

程式運行後發光二極體按照我們的流程開始依次切換,紅燈亮起 -> 紅燈10秒後熄滅 -> 黃燈亮起 -> 黃燈3秒後熄滅 -> 綠燈亮起 -> 綠燈10秒後熄滅,然後開始下一個迴圈。

每一次切換的同時,伺服器收到了IoT裝置推送的切換通知。

到這裡通過GPIO控制發光二級管切換及推播通知的過程就完成了,如果對代碼有最佳化的建議,歡迎留言或發郵件給我([email protected])。也可以加我的號查看以前的文章。

Win10 IoT C#開發 3 - UART 串口通訊(http://www.cnblogs.com/cloudtech/p/5518306.html)

Win10 IoT C#開發 2 - GPIO Pin 控制發光二極體

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.