上一节我们讲了树莓派可以通过输入输出(I/O)来与现实世界进行沟通。今天我们实际操作一下,通过树莓派的GPIO来控制发光二极管,体验计算机如何通过程序来控制实际的电路。
需要的材料
要完成本节的实验,需要准备如下的电子原件:
下面我们来逐个介绍一f下这些原器件,已经知道的同学可以跳过。
发光二极管
是二极管的一种,二极管的主要特性是整流,既电流只能正向流过,反方向会被阻断。发光二极管也叫LED,当电流正向流过时可以发光,有很多颜色可选,主要用途是标识电路的工作状态,最常见的是各种电器电源指示灯,表示现在电器已经通电正在工作中。在电路中二极管的符号如下
电阻
顾名思义,电阻主要是阻挡电流通过,控制电路中电流的大小。用欧姆(符号是Ω)来表示电阻大小,今天我们使用的1K欧姆电阻可以帮助保护树莓派,发光二极管正向电阻基本为0,如果没有电阻保护,二极管发光时的电流过大,会烧毁树莓派。电阻的符号有如下2种:
面包板
是用于实验和设计电路的特别好的工具,它上面有很多小插孔,可以插入各种电子元件,非常适合进行电路调试和设计。
面包板上下标有+,-符号的是电源区,每行是相通的,用来连接外部的电源,通常用上面的+连接外部电源正极,下面的-连接电源负极。中间部分标有ABCD...的是元件区,ABCDE是竖着相通的,下面的FGHIJ也是竖着相通的。
跳线
跳线是用来连接不同元件的,有公对公,公对母,母对母三种。
如果不用面包板,用跳线直接连GPIO时,跳线的一端必须是母头,以插到GPIO的引脚上,我们使用面包板和GPIO扩展,所以使用的公对公跳线。
树莓派GPIO扩展组件
直接让元器件直连GPIO虽然可行,但容易出现短路,连接不牢等问题,所以最好使用扩展组件+面包板的组合,这样搭起电路来更方便。市场上的GPIO扩展组件比较多,我使用的是一个扩展电路板+扩展排线的方式。下图中扩展电路板已经与排线连好了。
好,现在我们的全部元器件都准备好了。
现在我们按下面的电路把这些元器件连起来
引脚1是3.3V的电源,GND可以连接GPIO的引脚6或者14等(标识为GND的引脚都可以)。
这时给树莓派通电开机,连接电路后可以看到二极管亮起来。这样做的目的是确保电路连接正常,方便接下来的程序控制。
接下来我们把连接电源的跳线(上图为红色线)换到GPIO27(第12号引脚),LED灯熄灭了,因为GPIO默认为输入,现在是低电压,没法让灯亮起来。
控制LED的Python程序
现在让我们开始编写代码来控制连接到GPIO27的LED电路吧。代码如下:
import RPi.GPIO as GPIO #需要使用别人写好的类库
from time import sleep #需要使用别人写好的类库
GPIO.setmode(GPIO.BCM)
GPIO.setup(27,GPIO.OUT) #这2句把GPIO27设置为输出模式
while True:
GPIO.output(27,True) #在GPIO输出高电位1,此时LED亮
sleep(1) #等1秒
GPIO.output(27,False) #在GPIO输出低电位0,此时LED灭
sleep(1) #等待1秒
用上面的程序,可以让LED亮1秒暗1秒,直到程序退出。如果你连接的不是GPIO27,请把上面代码的27换成你实际连接的GPIO编号。(你也可以尝试修改sleep的时间,比如改为0.2, 3等来试一下不同的LED闪烁效果)
现在我们体会到了用程序和GPIO控制实际电路是怎么回事了,你可能对上面的Python代码还不了解,下一讲我们将对此进行详细讲解,同时换另一种更简介的代码来控制LED。
全部0条评论
快来发表一下你的评论吧 !