入門指引
現在讓我們把LED連接到安裝了Windows10 IoT Core 的硬件設備,並創建一個應用程序來讓它們閃爍。
在Visual Studio中加載工程
首先在這里找到例程,這里有C++和C#的版本可供選擇。本教程僅介紹使用C#的版本。將工程文件夾拷貝到磁盤中,然后用Visual Studio打開。
然后檢查你的Windows IoT設備,確保打開了遠程調試功能(Remote Debugging),可以參考這里的Hello World程序。
請注意如果Windows 10找不到可用的GPIO接口,應用程序將不會工作。比如你將windows10安裝在了VM虛擬機中。
將LED連接到 Windows 10 設備
准備好下面的東西:
一個LED燈
一個阻值220歐姆電阻
若干杜邦線和面包板
將LED的負極連接到Raspberry Pi2的GPIO 5引腳(Board編號29),正極串聯嗲足后連接到3.3v電源。(請務必注意極性,在直插型封裝的LED中,較長的引腳是正極+,較短的引腳是負極-)
部署應用程序
對於Raspberry Pi2來說,應該在architecture的下拉菜單中選擇ARM。
以上的步驟都做好了以后。可以按下F5,程序會自動運行,然后就可以看到閃爍的LED和下面的模擬界面。
可以通過改變滑塊的位置來調整LED閃爍的有效時間
代碼詳解
下面就是這個程序的代碼,基本工作原理是當定時器的時間達到后,調用事件Tick改變LED的狀態。
定時器代碼
這里是設置定時器的C#代碼
public MainPage() { // ... this.timer = new DispatcherTimer(); this.timer.Interval = TimeSpan.FromMilliseconds(500); this.timer.Tick += Timer_Tick; this.timer.Start(); // ... } private void Timer_Tick(object sender, object e) { FlipLED(); }
初始化GPIO引腳
為了能夠驅動GPIO,首先需要對它進行初始化,這里是初始化程序的C#代碼
using Windows.Devices.Gpio; private void InitGPIO() { var gpio = GpioController.GetDefault(); // Show an error if there is no GPIO controller if (gpio == null) { pin = null; GpioStatus.Text = "There is no GPIO controller on this device."; return; } pin = gpio.OpenPin(LED_PIN); // Show an error if the pin wasn't initialized properly if (pin == null) { GpioStatus.Text = "There were problems initializing the GPIO pin."; return; } pin.Write(GpioPinValue.High); pin.SetDriveMode(GpioPinDriveMode.Output); GpioStatus.Text = "GPIO pin initialized correctly."; }
簡單的解釋就是:
~首先,使用GpioController.GetDefault()獲取GPIO控制權限
~如果設備不具有可用的GPIO資源,則返回null
~接下來通過調用GpioController.OpenPin()函數來打開GPIO引腳
~當我們獲取了GPIO的控制權限並打開了GPIO引腳后,使用GpioPin.Write()函數來將LED關閉(參數設置High)
~這里還使用了GpioPin.SetDriveMode()函數將GPIO引腳的工作模式設置為輸出模式。
改變GPIO引腳的狀態
使用GpioPinValue.Low參數打開LED:
this.pin.Write(GpioPinValue.Low);
使用GpioPinValue.High參數關閉LED:
this.pin.Write(GpioPinValue.High);
因為我們將LED的正極連接到了3.3V電源,所以這里通過將GPIO引腳置低電平來打開LED。