入門指引
現在讓我們把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。
