再玩树莓派(三)GPIO

前两篇,我们已经把操作系统和软件的运行环境都搭建好了,到这里终于可以开始把正菜端上桌了。那么,下面我们开始探索一下树莓派的GPIO在软件硬件上的接入吧。

GPIO介绍

GPIO (General Purpose Input/Output) 的意思就是通用型输入输出。其实就是板卡上那两行排列整齐的40个针脚,树莓派嫁接外部设备的最重要的通信端口。我做的实验便是打算使用它来连接LED灯管进行信号的输出。
在官开发文档中,方找到了每个针脚说明。(如下图)


再玩树莓派(三)GPIO_第1张图片
Raspberry Pi GPIO 说明图例

总结一下要点:

  1. 引脚有两种索引方式,分别为Logical 和 Board。Logical是图中橙色块标记的数字序号,其排列并没有什么规律;而Board十分简单,是以引脚在板卡上排列的顺序编的。我为了图方个方便,选用了后者。
  2. 用做信号输出(Output),一般正极接入GPIO类的引脚,而负极接入Ground的引脚。
  3. 引脚输出的电平信号有两种:Low(电压0V) 和 High(电压3.3V)。如果将它们对应到LED灯的输出,便是熄灯和亮灯。

硬件的连接

我是这样,把两个LED灯接上去的(如图)。
其实,这样直接用导线接法不够优雅,而且有一定危险性。正确的姿势,一般应用面包板来接。在接线前应该先了解清楚LED灯的参数,例如正常工作的电压、电流是多少。如果有必要还应串联个电阻。以免LED等被击穿。
说回来,我敢这样接,并非乱来。我当然也是测试过了这两颗LED灯的参数,它们所能承受的电压在3-5V之间。


再玩树莓派(三)GPIO_第2张图片
LED接线

软件的驱动

我这里用的是微软官方提供的IoT类库System.Device.Gpio。可以Nuget之~

Install-Package System.Device.Gpio -Version 1.0.0

主要用做GPIO控制的类是GpioController,下面简单来几行代码预热一下吧。

var PinIndex = 11;// 操作的引脚序号
using(var controller = new GpioController(PinNumberingScheme.Board)){ // Board是啥?貌似前面讲过了
    if (!controller.IsPinOpen(PinIndex))
    {
        controller.OpenPin(PinIndex, PinMode.Output); // Output代表输出用的
        controller.Write(PinIndex, PinValue.High); // 输出高电平,灯亮
        Thread.Sleep(1000);
        controller.Write(PinIndex, PinValue.Low); // 一秒钟后,低电平输出,灯灭
    }
}

以上代码很简单吧?下一篇,我们就要开始实战了!

你可能感兴趣的:(再玩树莓派(三)GPIO)