樹梅派應用40:樹莓派 Windows10 IoT Core 開發教程

入門指引

現在讓我們把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歐姆電阻
若干杜邦線和麪包板

components-0

將LED的負極連接到Raspberry Pi2的GPIO 5引腳(Board編號29),正極串聯嗲足後連接到3.3v電源。(請務必注意極性,在直插型封裝的LED中,較長的引腳是正極+,較短的引腳是負極-)

RP2_Pinout-0

breadboard_assembled_rpi2-0

部署應用程序

對於Raspberry Pi2來說,應該在architecture的下拉菜單中選擇ARM。

以上的步驟都做好了以後。可以按下F5,程序會自動運行,然後就可以看到閃爍的LED和下面的模擬界面。

blinky-screenshot-0

可以通過改變滑塊的位置來調整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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章