一般用途 I/O(GPIO)引腳可以個別控制。 這對於控制 LED、轉送和其他具狀態裝置很有用。 在本主題中,您將使用 .NET 以及 Raspberry Pi 的 GPIO 針腳來點亮 LED 並使其持續閃爍。
先決條件
- ARM 型 (ARMv7 或更新版本) 單板電腦 (SBC)
- 5 毫米 LED
- 330 Ω電阻
- 麵包板
- 跳線
- Raspberry Pi GPIO 擴展板(可選/建議)
- .NET SDK 8 或更新版本
備註
本教學課程是以Raspberry Pi為目標裝置所撰寫。 不過,本教學課程可用於支援 .NET 的任何 Linux 型 SBC,例如 Orange Pi、ODROID 等等。
確定您的裝置上已啟用 SSH。 針對Raspberry Pi,請參閱Raspberry Pi檔中的設定 SSH 伺服器。
準備硬體
使用硬體元件來建置線路,如下圖所示:
上圖描述下列連線:
- GPIO 18 至 LED 陽極(較長,正引腳)
- LED 陰極(較短,負極引線)接至330 Ω電阻(任一端)
- 330 Ω電阻(另一端)接地
視需要參閱下列接腳圖:
圖片由Raspberry Pi Foundation 提供。
小提示
建議使用 GPIO 分流板搭配麵包板,以簡化與 GPIO 標頭的連接。
建立應用程式
在慣用的開發環境中完成下列步驟:
使用 .NET CLI 或 Visual Studio 建立新的 .NET 控制台應用程式。 將它命名為 BlinkTutorial。
dotnet new console -o BlinkTutorial cd BlinkTutorial
將 System.Device.Gpio 套件新增至專案。 從項目目錄或Visual Studio使用 .NET CLI。
dotnet add package System.Device.Gpio --version 3.2.0-*
使用下列程式碼取代 Program.cs 的內容:
using System; using System.Device.Gpio; using System.Threading; Console.WriteLine("Blinking LED. Press Ctrl+C to end."); int pin = 18; using var controller = new GpioController(); controller.OpenPin(pin, PinMode.Output); bool ledOn = true; while (true) { controller.Write(pin, ((ledOn) ? PinValue.High : PinValue.Low)); Thread.Sleep(1000); ledOn = !ledOn; }
在上述程式碼中:
-
using 宣告會建立的
GpioController
實例。 宣告using
確保物件被處置且硬體資源被正確釋放。 - GPIO 針腳 18 已開啟輸出
-
while
迴圈會無限期執行。 每次迭代- 將值寫入 GPIO 針腳 18。 如果
ledOn
為 true,則會寫入PinValue.High
(on) 。 否則,它會寫入PinValue.Low
。 - 睡眠 1000 毫秒。
- 切換
ledOn
的值。
- 將值寫入 GPIO 針腳 18。 如果
-
using 宣告會建立的
建置應用程式。 如果使用 .NET CLI,請執行
dotnet build
。 若要在 Visual Studio 中建置,請按 Ctrl+Shift+B。將應用程式部署至 SBC 作為獨立應用程式。 如需指示,請參閱 將 .NET 應用程式部署至Raspberry Pi。 請務必使用 提供可執行檔
chmod +x
許可權。切換至部署目錄並執行可執行檔,在Raspberry Pi上執行應用程式。
./BlinkTutorial
LED 會每隔一秒閃爍一次。
按 Ctrl+C 終止程式。
祝賀! 您已使用 GPIO 來閃爍 LED。
取得原始程式碼
本教學課程的來源 可在 GitHub 上取得。