入門指引
現在讓我們把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#代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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#代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
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。