美文网首页零基础学编程互联网科技开源工具技巧
0018 树莓派电脑控制第一个led灯亮起来

0018 树莓派电脑控制第一个led灯亮起来

作者: 学哥量化交易学习 | 来源:发表于2017-02-10 11:39 被阅读344次

    这节课开始,进入树莓派硬件控制传感器的世界,感受软件和硬件结合带来的无穷魅力。

    硬件入手

    根据后续课程的安排,需要入手的硬件零件如下:

    面包板,杜邦线,led灯,蜂鸣器,温湿度传感器,单位数码管,双位数码管

    渠道推荐如下:

    或者是这个:

    以前面一个为例,进入之后,查找以下关键字和对应的型号:

    面包板:

    杜邦线:

    选择“20CM公对母”

    led灯:

    蜂鸣器:

    可以买2个备用。

    温湿度传感器:

    单位数码管:

    双位数码管:

    GPIO介绍

    先来看一下树莓派主板的一些对外的接口,这是反面的情况:

    这是正面的情况:

    重点关注上面有40根排针,这就是树莓派用于控制外部传感器的接口,称之为GPIO

    40根引脚如何进行编号呢,如果按照物理位置来编号,只要掌握一个规则就容易记住:

    最靠近角上的那一根引脚为2号引脚。旁边的就是1号引脚,具体请看上图示意图。

    那么这40根引脚具体的用途和定义是什么呢,请看下面的图:

    这个图是一个比较全面的一个定义,主要是因为对于这40根引脚有不同的编号规则来定义

    虽然不同的规则叫的名字不一样,但实际的用途是一致的

    这里只学习一种编号规则,也就是物理位置编号,这样更容易进行物理连接。

    请看下面这张简图:

    比如:1号引脚,是输出1个3.3伏的电压,也就是如果你拿一个数字万用表去测量这根引脚的电压,会一直测出来是3.3伏。

    比如:2号引脚,是输出1个5伏的电压,也就是如果你拿一个数字万用表去测量这根引脚的电压,会一直测出来是5伏。

    比如:6号引脚,是一个GND,也就是接地,如果测量电压的话,就是0伏。

    比如:11号引脚,是绿色图标,旁边写着GPIO17,其实这个接口就是普通的接口,可以输入也可以输出,如果设置为输出,则可以输出高电压或者低电压。输出高电压就是3.3伏,输出低电压就是0伏。可以通过程序来控制。GPIO17是另外一种编号方式而已,这里我们可以忽略。

    假如需要一个恒定的电压输出到某个电路,则可以选择3.3v或者5v的相应接口。

    假如需要一个变化的电压输出到某个电路,则可以选择绿色的GPIO接口,例如11号,12号,13号,15号等等。

    led灯电路原理

    学过物理的话,应该可以看懂下面的最简单的电路图:

    要让led灯亮起来,需要在led灯的正极输入一个正的电压,led灯的负极接地,这样led灯就可以亮起来了。

    根据前面的GPIO接口的定义,选择6号口GND连接到led灯的负极,然后选择11号口连接到led灯的正极

    这样,通过程序控制11号口,输出一个3.3伏的电压,led灯就亮了,输出一个0伏电压,led灯就灭了。

    硬件连接

    在开始连接硬件电路之前,首先要做的事是将树莓派电脑关机,并断开电源。

    因为如果树莓派主板带电的时候,进行插接电路可能会导致电子元器件的烧毁,所以一定要记住这个原则:

    连接电路的时候主板必须断电。

    取出面包板,2根20cm的公对母杜邦线,1个led灯。

    将杜邦线的母头插到树莓派主板的GPIO接口的6号口和11号口:

    将杜邦线另外一头的公头插入面包板上:

    将led灯的长脚插入11号口线的同一纵排,将led灯的短脚插入6号口线的同一纵排:

    插好之后的样子:

    这样插好之后,全部的电路就连接好了。

    这里大家可以自行去网上搜索一下关于面包板的电路图,看看为何这样就可以把线和led灯连接起来了。

    看看整体连接的效果:

    然后,检查一下电路的接口是否有错误,正确无误之后就可以启动树莓派电脑的电源了:

    程序编写

    电脑启动之后,可以编写程序了:

    启动文本编辑器,输入以下代码,文件保存为led.py

    程序执行

    保存文件之后,运行sudo python led.py看看led灯是否亮了3秒钟之后熄灭。

    如果灯不亮,则按照以下次序进行检查判断:

    1.首先查看树莓派主板上的引脚口的编号

    是否是11号口,接到面包板上的是对着led灯的长脚

    是否是6号口,接到面包板上的是对着led灯的短脚

    2.如果接线没有错误,则有可能是led灯坏了

    可以采取换一个led灯试试看

    或者将11号口的杜邦线的母头拔出来,插入到1号口,看看led灯是否亮,如果亮了则说明灯和线没有问题。

    3.如果电路都没有问题,则可能是程序错误

    逐行检查代码,看看是否有遗漏或者错误。

    4.如果以上都不能让灯亮起来,那只能去qq群里直接提问了。

    看看程序执行结果:

    程序每行说明

    import RPi.GPIO as GPIO

    导入模块RPI.GPIO,命名为别名为GPIO

    如果只写import RPi.GPIO也是可以的,但是后面用的地方就必须用RPi.GPIO.setmode(RPi.GPIO.BOARD)这样写齐全

    用别名的方式可以简化代码

    import time

    导入time模块

    GPIO.setmode(GPIO.BOARD)

    声明GPIO使用物理编号方式,也就是11号口就是物理编号11号口

    GPIO.setup(11,GPIO.OUT)

    声明11号口是用于输出模式

    为何6号口不用声明呢,因为它是GND,不可能变化,也就不可能输入和输出

    GPIO.output(11,True)

    设置11号口为高电压,也就是11号口变为3.3伏

    这行代码执行之后,11号口变为高电压,那么根据电路原理,led灯就会亮起来

    如果后面没有代码了,则led灯会一直亮下去,直到程序修改了输出或者电脑接口断电

    time.sleep(3)

    程序休眠3秒钟

    程序休眠期间,led灯会一直亮着

    GPIO.output(11,False)

    设置11号口为低电压,也就是11号口变为0伏,和GND一样

    这行代码执行之后,11号口变为低电压,那么根据电路原理,led灯就会熄灭

    GPIO.cleanup()

    将所有的GPIO口状态恢复为初始化,一般代码结束都执行此代码,方便后续代码运行都是从初始状态开始。

    程序整体的功能很简单:

    导入必须的模块

    设置GPIO的编号模式

    设置需要用到的GPIO接口的模式

    控制GPIO口的电压状态

    结合时间模块运行出自己想要的结果

    大家要根据以上基本的代码以及说明,思考如何修改程序,改变运行功能

    课后作业

    1.将休眠时间修改为10秒

    2.增加8根线和4个led灯,5个led灯依次亮3秒,循环10次结束

    往期教程

    因为教程是系列教程,前后关联性非常强,请大家按照_|_微_|_信_|_公_|_众_|_号_|_【零基础学编程】的历史消息发布时间先后次序进行阅读。

    Q_Q_群简介

    欢迎大家加入Q_Q_群 603559164 零基础学编程,交流学习,共同进步。

    相关文章

      网友评论

        本文标题:0018 树莓派电脑控制第一个led灯亮起来

        本文链接:https://www.haomeiwen.com/subject/gujgittx.html