本文部分资料及图片来自网络

一、所需材料

树莓派4B、LED灯、面包板、杜邦线、电阻、Python程序

二、认识硬件材料

这里介绍下LED灯、面包板、杜邦线、电阻

LED灯:LED灯引脚长的一端为正极,短的一端为负极。也可以仔细观察灯珠内部的电极,较小的是正极,大的一端的是负极。

面包板:方便插线,不用手动接线,其特点是中间的插孔竖向是相通的,边缘的插孔横向是相通的。

杜邦线:杜邦线可实现插针式的连接,不用焊接,方便实验连通电路。杜邦线是分公母头的,本实验使用两根公-母杜邦线,用于连接树莓派的正负极

电阻:电阻没啥介绍的,就是增加阻值,防止电源直接接到LED灯给烧了。但这里要说下电阻的识别方法,没错,电阻是可以通过上面画的线条来识别是多大电阻的,如下图所示。

电阻大小=第一段第二段第三段*乘数

注意:第一段第二段第三段,是放在一起组成一个三位数然后和乘数相乘

三、认识树莓派的GPIO

本次实验使用的树莓派为4B,因此这里只介绍4B的GPIO引脚结构,其他版本和4B的引脚定义略有不同,请自行查阅。

说到GPIO,首先了解下什么是GPIO,GPIO英语为General-purpose Input/Output,是通用型输入输出的简称。GPIO的输入输出是可以用过读取寄存器来确定引脚高低点位的,那么解释下什么是输入输出,输出就是控制引脚为高电平或低电平,为我们连接的设备进行供电或不供电,比如连接LED灯,可以设置引脚为高电平为其供电,灯就亮了;输入就是获取引脚的高低电平,判断传感器是否检测到,比如红外人体感应器,当感性到人体后会输出高电平,我们读到高电平则表示有人体。当然还有一些其他引脚,比如作为串口的TX,RX等。

4B的GPIO是40针脚的,引脚定义如下图所示。

树莓派的GPIO在实际使用中,会看到3中命名方案,wiringPi、BOARD和BCM三种方式,使用时选择其中一种即可,只要将针脚对应正确即可生效。其中wiringPi主要是用于C语言中wiringPi模块的编码,BOARD是树莓派板子上的物理引脚的编码,BCM就是BCM自己的编码规则。注意在Python中不支持wiringPi的编码规则,只能使用BOARD和BCM编码方式。

四、直接点亮LED

没看错,这一步是点亮LED,但这里所说的直接点亮是直接给LED供电让其亮起来,因此连接的电路很简单,将GPIO的3.3V引脚使用公母杜邦线连接到面包板,在面包板相通的一个孔插入电阻一端,电阻另一端查到面包板的另一竖列的孔中,然后在该数列的其他孔位插入LED灯的正极,负极插入傍边的空位,然后在该竖列的其他孔位使用公母杜邦线连接负极,LED灯即可点亮。

接线说明

树莓派GPIO3.3v引脚→电阻→LED灯→负极(0v或GND)

成功点亮

五、了解Python操控GPIO

Python要控制GPIO需要使用RPI.GPIO模块,如果安装的是树莓派官方完整的img系统,是自带RPI.GPIO模块的。要想验证是否已安装RPI.GPIO模块,可进入python交互界面,导入该模块,如果不报错即为已安装。

那么在进Python交互界面之前,是可以通过命令查看树莓派输出定义的,在终端使用“pinout”命令可查看当先树莓派的硬件结构,如下图所示。

当然这个不是重点,只是为了方便大家在忘记GPIO对应时可以用该命令查看,这里的中间两列就是BOARD编码,两边的就是BCM编码。

下面言归正传,使用Python控制GPIO,在终端输入“python3”进入Python交互界面(这里不介绍Python如何安装了,如果是树莓派官方系统是自带Python2和Python3的,如果没有安装请自行寻找Python的安装方法),然后输入“import RPI.GPIO as GPIO”,回车后如果没有报错,则表示RPI.GPIO是已安装的,如果报错,则可能是没有安装RPI.GPIO或RPI.GPIO无法正常工作,这是需要重新安装RPI.GPIO模块,命令如下

# 安装rpi.gpio,我这里使用的是python3,Python2的去掉pip后的3即可# sudo pip3 install rpi.gpio# 卸载rpi.gpio,这里提卸载是为了RPI.GPIO无法正常工作时,先卸载再安装# sudo pip3 uninstall rpi.gpio

使用Python控制GPIO的几个主要操作:

  1. 导入RPi.GPIO模块 import RPi.GPIO as GPIO
  2. 设置引脚编码模式 GPIO.setmode(GPIO.BOARD)/GPIO.setmode(GPIO.BCM)
  3. 设置引脚的操作模式(即输出还是输入) GPIO.setup(2, GPIO.OUT)/GPIO.setup(2, GPIO.IN)
  4. 设置引脚的高低电平 GPIO.output(2, GPIO.HIGH)/GPIO.output(2, GPIO.LOW)

六、使用Python控制LED灯

现在要是用Python控制LED灯的话,要将引脚的连接位置改动下才能使用,硬件连接要按以下方式连接

树莓派GPIO引脚→电阻→LED灯→负极(0v或GND)

连接好后,可以直接打开终端程序,按以下命令一行行输入,即可看到效果

$python3
>>> import RPi.GPIO as GPIO
>>> GPIO.setmode(GPIO.BOARD) # 设置编码模式
>>> GPIO.setup(3,GPIO.OUT) # 将通道(即引脚)3设置为输出模式,此时LED灯为熄灭状态
>>> GPIO.output(3,GPIO.HIGH) # 将通道3操作为高电平,此时LED灯为点亮状态
>>> GPIO.output(3,GPIO.LOW) # 将通道3操作为低电平,此时LED灯为熄灭状态
>>> GPIO.cleanup() # 重置所有通道的模式,传入通道的话,只重置输入的通道

七、控制LED灯闪烁

之前只是简单的将灯点亮,如果我们要想让灯闪烁怎么做呢,可以通过高低电平来控制,当然肯定不能在交互界面实现了,手动输入太慢了,我们要建立一个led.py文件,在文件中实现控制LED灯的闪烁,文件内容如下:

# coding:utf-8
import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD)
GPIO.setup(10, GPIO.OUT) # 这里使用的是10引脚,请根据自己使用的引脚编号修改
n = 0 # 用于控制闪烁次数
while n < 30: GPIO.output(10, GPIO.HIGH) GPIO.output(10, GPIO.LOW) n += 1
print('end')

在终端使用下面命令可以执行该文件

>>>python3 led.py

也许你会发现,当文件执行完后,灯不仅没亮,还报了个警告,如下图

没事不要着急,这个警告是因为咱们控制通道的频率太高了,该通道响应不过来了,因此,我们需要在每次操作高低电平的语句后面加上延时,这个需要导入time模块,这个是Python自带的,下面将上面led.py文件代码进行下修改

# coding:utf-8
import RPi.GPIO as GPIO
import time GPIO.setmode(GPIO.BOARD)
GPIO.setup(10, GPIO.OUT) # 这里使用的是10引脚,请根据自己使用的引脚编号修改
n = 0 # 用于控制闪烁次数
while n < 30: GPIO.output(10, GPIO.HIGH) time.sleep(0.05) GPIO.output(10, GPIO.LOW) time.sleep(0.05) n += 1
print('end')

这是再执行文件,发现灯可以闪烁了,其实我们目的就已经达到了,但是同时发现那个警告还是存在的,有强迫症的人看到这个警告就会不爽了,总以为是报错。其实仔细读下那个警告,就会发现,其实警告中已经提示我们如何关闭它了,就是用GPIO.setwarnings(False)来禁止其输出,下面在修改下led.py的代码,如下

# coding:utf-8
import RPi.GPIO as GPIO
import time GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(10, GPIO.OUT) # 这里使用的是10引脚,请根据自己使用的引脚编号修改
n = 0 # 用于控制闪烁次数
while n < 30: GPIO.output(10, GPIO.HIGH) time.sleep(0.05) GPIO.output(10, GPIO.LOW) time.sleep(0.05) n += 1
print('end')

这时我们在运行,发现警告已经没有了,灯也开始闪烁了。

[RPi]树莓派GPIO入门之控制LED灯相关推荐

  1. python控制树莓派led_Python 控制树莓派 GPIO 输出:控制 LED 灯

    树莓派 GPIO 控制输出的入门应该都是从控制 LED 灯开始的吧. 树莓派版本:Model 3B+ 树莓派系统:Raspbian Stretch with desktop and recommend ...

  2. python控制灯_Python 控制树莓派 GPIO 输出:控制 LED 灯

    树莓派 GPIO 控制输出的入门应该都是从控制 LED 灯开始的吧. 树莓派版本:Model 3B+ 树莓派系统:Raspbian Stretch with desktop and recommend ...

  3. python控制树莓派gpioled,Python 控制树莓派 GPIO 输出:控制 LED 灯

    树莓派 GPIO 控制输出的入门应该都是从控制 LED 灯开始的吧. 树莓派版本:Model 3B+ 树莓派系统:Raspbian Stretch with desktop and recommend ...

  4. FPGA(1)基础入门 -- 按键控制led灯

    目录 效果说明 1.配置输入输出变量 2.变量赋值 3.配置引脚(输入输出变量) 代码 效果说明 key1按键按下,led1被点亮. key2按键按下,led2被点亮. 1.配置输入输出变量 inpu ...

  5. FPGA:基础入门按键控制LED灯

    题目概述: 使用按键控制LED灯亮灭. 无按键按下--LED全灭 按下KEYO--从右向左的流水灯效果 按下KEY1--从左向右的流水灯效果 按下KEY2--LED闪烁 按下KEY3--LED全亮 编 ...

  6. 树莓派GPIO入门(一):点亮一个LED灯

    一.实验要求 点亮一个LED灯是电子开发最常见的入门实验.本次实验分为三个小实验: (1)点亮单个LED灯,并让其亮暗闪烁 (2)通过脉宽调制(PWM)点亮单个LED灯,并让其亮暗闪烁 (3)让LED ...

  7. 树莓派GPIO入门(三) :多种模式的LED控制器

    一.实验要求 通过LED控制器可以在流水点亮.间隔点亮.追逐点亮.全部亮并闪烁这四种模式中选择点亮LED灯的方式. 其中,↓表示有键按下,1 表示无键按下,x 表示不管有没有按键: 流水点亮即为 LE ...

  8. 利用声音传感器控制led灯功能_云中树莓派(4):利用声音传感器控制Led灯

    1. 声音传感器及其配置 声音传感器如下图所示: 将 VCC 引脚接入树莓派 5V 引脚,将 GND 引脚接入树莓派 GND 引脚,将 OUT 引脚接入树莓派 GPIO20. 要注意,模块在环境声音强 ...

  9. 按键控制led灯python程序_树莓派使用threading函数实现多按键控制LED灯

    讲两个知识点.一个是关于上拉和下拉,另一个是关于threading函数. 1.上拉电阻和下拉电阻 上拉就是把一个不确定的信号通过一个电阻连接到高电位,这样在开关断开是信号为高电位,开关合上时信号为低电 ...

最新文章

  1. eoLinker AMS 专业版V3.3发布:分享项目可以测试并选择分享内容等
  2. 接口级故障的应对方法
  3. UI设计实战篇——利用Bootstrap框架制作查询页面的界面
  4. java hbase创建_hadoop组件介绍及python 连接Hbase
  5. 图形驱动程序和显卡驱动什么区别_专业图形显卡和游戏显卡的区别以及建模和渲染的性能要求...
  6. Console-算法[for,if]-(大马-小马-马驹托砖)
  7. 如何在时间紧迫情况下进行机器学习:构建标记的新闻 数据 库 开发 标记 网站 阅读1629 原文:How we built Tagger News: machine learning on a
  8. 100 计算机网络概述小结
  9. 生存分析简介:Kaplan-Meier估计器
  10. List和Set集合使用
  11. First Bad Version
  12. 软件工程 可行性分析与需求分析
  13. python爬取酷狗音乐json数据为空_python使用beautifulsoup4爬取酷狗音乐
  14. 超市管理系统java代码,超市管理系统完整+源代码
  15. 几种闪存技术:eMMC、UFS2.1、UFS3.0、SSD
  16. SQL UNION运算符
  17. 互联网正在消灭中产阶级
  18. Linux设备上时间不准确?使用chrony服务配置时间服务器实现Linux时间同步以及实现主从设备时间同步
  19. 算法提高课学习——2.搜索——2.1.Flood Fill算法
  20. 【计算机组成与结构】主存储器

热门文章

  1. php展厅播控系统,展厅中控系统
  2. 《麻省理工科技评论》发布2019全球十大突破性技术 阿里巴巴成唯一上榜中国公司...
  3. # Python基础笔记(未完待续)
  4. 图像质量评估(3) -- 噪声
  5. 高中学历学python能找到工作吗-高中学历学完Python就能干人工智能?后院活动部...
  6. GIS应用水平考试2013年度第一次全国统一考试
  7. 人体神经元细胞核分布图,神经元细胞有细胞核吗
  8. easyui combobox实现onClick方法
  9. 基于Python的Stacking集成机器学习实践
  10. 23种设计模式--状态模式