张高兴的 .NET Core IoT 入门指南:(二)GPIO 的使用
什么是 GPIO
GPIO 是 General Purpose Input Output 的縮寫,即“通用輸入輸出”。 Raspberry Pi 有兩行 GPIO 引腳, Raspberry Pi 通過這兩行引腳進行一些硬件上的擴展,與傳感器進行交互等等。
Raspberry Pi B+/2B/3B/3B+/Zero 引腳圖
簡單的講,每一個 GPIO 引腳都有兩種模式:輸出模式(OUTPUT)和輸入模式(INPUT)。輸出模式類似于一個電源,Raspberry Pi 可以控制這個電源是否向外供電,比如打開外部的 LED 小燈,當然最有用的還是向外部設備發送信號。輸入模式相當于電源的陰極,還是以 LED 小燈為例,只不過這次 LED 小燈的陽極接著外部電源,一個電路只有產生電壓差時才會有電流,因此要想讓小燈亮需要讓電流流入 Raspberry Pi 中。和輸出模式相反,輸入模式是接收外部設備發來的信號。
GPIO 通常采用標準邏輯電平,即高電平和低電平,用二進制 0 和 1 表示。在這兩值中間還有閾值電平,即高電平和低電平之間的界限。 Arduino 會將 -0.5 ~ 1.5 V 讀取為低電平,3 ~ 5.5 V 讀取為高電平, Raspberry Pi 未查到相關資料。GPIO 還可用于中斷請求,即設置 GPIO 為輸入模式,值達到相應的要求時進行中斷。
相關類(Class)
此處默認各位是面向對象的程序員,具有一定的 C# 基礎,這里只介紹本人認為常用的方法,介紹將以代碼注釋的形式體現。
GPIO 操作主要依賴于兩個類:?GpioController?、?GpioPin?。這兩個類位于?System.Devices.Gpio?名稱空間下。
GpioController
GpioPin
人體紅外傳感器實驗
示例地址:https://github.com/ZhangGaoxing/dotnet-core-iot-demo/tree/master/src/PIR
人體紅外傳感器是基于周圍區域的紅外熱來檢測運動的,也稱被動紅外傳感器(Passive Infra-Red, PIR)。
這里使用的是 HC-SR501 。當傳感器檢測到人體時,LED 小燈亮,當傳感器未檢測到人體時,LED 小燈滅。
傳感器圖像
HC-SR501
硬件
| HC-SR501 | x1 |
| LED 小燈 | x1 |
| 220 Ω 電阻 | x1 |
| 杜邦線 | 若干 |
電路
HC-SR501
VCC - 5V
GND - GND
OUT - GPIO 17
LED
VCC & 220 Ω resistor - GPIO 27
GND - GND
代碼
打開 Visual Studio ,新建一個 .NET Core 控制臺應用程序,項目名稱為“PIR”。
引入?System.Devices.Gpio?NuGet 包。
新建類?HCSR501,替換如下代碼(此處略有精簡,只為必要的代碼,不包含自定義事件,詳細可查看提供的示例):
?Program.cs?中,將主函數代碼替換如下:
發布、拷貝、更改權限、運行
效果圖
?如何改進?
剔除主函數循環,嘗試在自定義事件中進行檢測,即 GpioPin 的 ValueChanged 事件。
原文地址:https://www.cnblogs.com/zhanggaoxing/p/10327917.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的张高兴的 .NET Core IoT 入门指南:(二)GPIO 的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Reactive Extensions
- 下一篇: C# 8 新提案让泛型 Attribut