【.NET Core】如何點亮樹莓派Raspberry Pi 3b+上的一盞小燈

時隔多日如何使用樹莓派GPIO的教程終於來了,然.NET Core 3.1版本都出來了☺。這次我的樹莓派刷回了官方的Raspbian,因爲openmediavalut實在太難用了。
話不多說先上圖:
在這裏插入圖片描述

1. 準備

  • 一塊樹莓派(本文基於截至發文時最新版的Raspbian)。
  • 一個led小燈(注意輸入的電壓,太高的話要接電阻,本文使用的是一個支持3.3v-5v輸入的小燈)。
  • 若干導線。

2. 樹莓派配置

Raspbian對GPIO的支持,默認是關閉的。所以這裏首先要開啓對GPIO的支持:
▼開啓GPIO
在這裏插入圖片描述
注意:Serial Console一定要設置爲Disable,這是通過串口給樹莓派發送命令用的。串口的使用,下一章節會講到。
開啓之後就到了這張圖,樹莓派的玩家對此再熟悉不過了。
▼GPIO引腳
在這裏插入圖片描述
這裏一共有三種編碼庫,任何一種都可以操作樹莓派的引腳:

  1. Board編碼:就是物理引腳和你樹莓派上的那兩排一一對應,從1-40號。
  2. BCM編碼:芯片製造商博通提供的編號方法。
  3. writingPi編碼:另外一種編碼庫提供的編號方法。

其中,python用的較多的就是Borad編碼和BCM編碼,C語言用的就是writingPi編碼。而我們的C#因爲使用的System.Device.Gpio,經測試這個庫也是使用的BCM編碼。以Board的11號引腳爲例,它對應的BCM引腳爲17號,對應的writingPi引腳爲0號。

注意:本文接下來所說的多少多少號引腳,都將以BCM編碼爲例。

然後將LED的正極接到17號引腳上,負極隨便接到一個GND上。

3.控制小燈

打開Visual Stuido,新建一個控制檯應用程序,選擇.NET Core 3.1 。然後nuge管理器裏搜索安裝System.Device.Gpio。然後修改代碼如下:

 static void Main(string[] args)
 {
     var pin = 17;//使用BCM的17號引腳
     var lightTimeInMilliseconds = 500;
     var dimTimeInMilliseconds = 200;
     Console.ForegroundColor = ConsoleColor.Yellow;
     Console.WriteLine($ "Let's blink an LED!");
     using(GpioController controller = new GpioController())
     {
         controller.OpenPin(pin, PinMode.Output);
         Console.WriteLine($ "GPIO pin enabled for use: {pin}");
         Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs eventArgs) =>
         {
             controller.Dispose();
         };
         while(true)
         {
             Console.WriteLine($ "Light for {lightTimeInMilliseconds}ms");
             controller.Write(pin, PinValue.High);
             Thread.Sleep(lightTimeInMilliseconds);
             Console.WriteLine($ "Dim for {dimTimeInMilliseconds}ms");
             controller.Write(pin, PinValue.Low);
             Thread.Sleep(dimTimeInMilliseconds);
         }
     }
 }

代碼很簡單,看一眼就能懂。編譯沒有問題之後,在項目上右鍵-發佈
在這裏插入圖片描述
選擇發佈到文件夾:
在這裏插入圖片描述
然後點擊編輯,修改配置文件的Deployment Mode爲Self-contained,這樣就不需要樹莓派上安裝.net runtime了,然後Target Runtime選擇linux-arm。
在這裏插入圖片描述
保存關閉之後,開始發佈即可。

發佈成功之後將publish下所有的文件傳到樹莓派上,至於怎麼傳,就各顯神通吧。
在這裏插入圖片描述
然後記得sudo chmod 777 SimpleLight修改文件的可執行權限,最後執行 ./SimpleLight命令blink blink吧。

後記:最初因爲不知道BCM、writinigPi是啥意思,把pin17當成了Board的17號引腳,導致小燈一直都是亮的。最後看了微軟Sample裏的接線圖,才明白pin17是指BCM的17號。☹

參考

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