文章目录

  • 树莓派开发与STM32开发的比较
  • 原理图以及树莓派引脚展示
  • 点灯步骤
  • 读取树莓派布局

树莓派开发与STM32开发的比较

  树莓派和STM32都是常用的嵌入式设备,都可以使用GPIO来控制LED灯。它们的点灯方式和使用的编程语言以及开发环境略有不同:

  • 相同点:

    • 控制LED的原理都是使用GPIO输出高电平或低电平来点亮或关闭LED灯
    • 都需要使用适当的电阻来限制电流,以保护LED和芯片不被烧坏。
    • 在编写控制代码时,都需要设置GPIO口为输出模式,以便灯亮控制。代码都需要类似 GPIO.setup(led_pin, GPIO.OUT) 这样的设置。
  • 差异:

    • 使用树莓派点灯时,可以不用初始化硬件;而STM32点灯时需要初始化的。
    • 树莓派使用的是Linux操作系统,可以用Python等语言在操作系统层面上编写代码,对于开发者来说较为友好,使用编码时依赖的库也较多,开发速度较快。而STM32一般使用 C/C++编程,需要对硬件有一定的理解。
    • 树莓派是一种基于Linux操作系统的开发板,处理能力较为强大,支持较多的软件,可用做很多类似于PC的应用(比如网络通讯、控制、通信等)或某些需要比较高的软件算力运算的应用。而STM32更侧重于与其它电子器件集成、实现控制及数据处理和物联网等,处理能力没有树莓派高。
    • 对于单一的应用领域,STM32芯片电路更为小巧,在成本和功耗两方面的考虑下更加适合于它的应用领域。而树莓派在继承了嵌入式操作与控制的特点后,又兼具了计算机的行为,因而方便开发设计者在树莓派上进行嵌入式和PC操作系统上的软件开发,且可实现具有很大的灵活性。

原理图以及树莓派引脚展示

  • 在 树莓派官网 可查找到下面原理图(已经模拟接上LED):

  • 同样可以在 树莓派官网 可查找到引脚的对照表:

(注:本表格适用于各版本,并且兼容26Pin的树莓派B,树莓派B为26Pin,其引脚对应于上表的前26Pin。)
  这里小编给个建议:开发前最好去看看这个表,因为树莓派在不同编码方式下拥有不用的引脚分配方式。



  通过引脚对照表知:不同的编码方式所对应的引脚是不一样的,例如:在wPi编码格式下引脚8,而BCM编码格式下引脚就改成2,实际的物理引脚就变成4。

  如果大家不能够确定上述两图是否与自己的树莓派引脚是否匹配,也可在命令行中输入gpio readall。若大家第一次使用gpio命令可能会报错bash: gpio: command not found,这个是因为树莓派4自带的wiringPi 库默认是 2.50 ,无法映射到 gpio ,所以需要更新到 2.52 才能与树莓派映射。zero2w 则需要 2.60 。我们可以在命令行中输入下面两台命令解决这个问题:

# 下载 2.52 版本的 wiringPi
wget https://project-downloads.drogon.net/wiringpi-latest.deb# 安装
sudo dpkg -i wiringpi-latest.deb

  然后再输入命令gpio readall即可获得下面结果:

  通过上述三图,不难看出,当树莓派的物理引脚为16时,,BCM编码方式下该引脚为23,wPi编码方式下期引脚为4。

点灯步骤

  • 我们可以使用RPi.GPIO这个库来控制GPIO,导入RPi.GPIO库:
import RPi.GPI0 as GPIO
  • 如果此时运行代出现报错,通过以下命令即可安装:
pip3 install RPi.GPIO
  • 在导入模块后要做的第—件事就是确定所采用的GPIO引脚编码方式:
GPIO.setmode(GPIO.BOARD)

  如果大家想要换一种编码方式,那么只需要将GPIO.setup前两句换成下面两句即可实现相同的功能:

# 设置编码方式
GPIO.setmode(GPIO.BOARD)
# 设置引脚
GPIO_Pin = 16

  (注:使用该编码方式的好处是:树莓派各版本的BOARD编码方式是相同的,所以就算更换了树莓派版本,我们也无需修改代码。)

  • 确定完编码方式之后,我们就要设置所用到的GPIO引脚(先设置,再使用):
#将引脚设置为输入模式
GPIO.setup (GPIO_Pin,GPIO.IN)#将引脚设置为输出模式
GPI0.setup (GPIO_Pin,GPIO.OUT)
  • 设置完之后,我们就可以通过GPIO.input和GPIO.output来接收或者发送高低电平:
#通过GPIO.input方法来判断接收的是高电平还是低电平
if GPIO.input(num) == GPIO.HIGH:print(1)
else:print(0)#通过GPI0.output方法来发送高低电平
GPI0.output(num,GPIO.HIGH)
GPI0.output(num,GPIO.LOw)
  • 使用完GPIO引脚后,我们要调用GPIO.cleanup()来将引脚释放掉:
#释放GPIO引脚资源
GPIo.cleanup ()


  • 完整源码:

  函数ledTest实现LED间隔1s闪烁。

def ledTest():""" 在树莓派上制作LED闪烁  时间间隔为1s """# 设置编码方式GPIO.setmode(GPIO.BCM)# 设置引脚GPIO_Pin = 23# 设置GPIO引脚GPIO.setup(GPIO_Pin, GPIO.OUT)while True:# 用16号引脚输出一个高电平,灯亮GPIO.output(GPIO_Pin, GPIO.HIGH)# 等1秒time.sleep(1)# 用16号引脚输出一个低电平,灯灭GPIO.output(GPIO_Pin, GPIO.LOW)# 等1秒time.sleep(1)# 使用结束,释放引脚GPIO.cleanup()

读取树莓派布局

如果大家想要获取树莓派更多布局信息可以输入命令pinout,其会给出结果:

  • PCB布局
  • 一些说明

  • 对外开放的引脚

闪亮登场!在树莓派上点亮LED灯的简单详细方法相关推荐

  1. android客户端控制树莓派GPIO点亮LED灯

    首先需要android客户端与树莓派进行连接,树莓派与android客户端利用wifi连接并进行socket通信请参考我的另一片文章:https://mp.csdn.net/postedit/7991 ...

  2. 第5章 用树莓派点亮LED灯

    用树莓派点亮一个LED灯是非常简单的事情,但却非常重要,是利用GPIO控制外部硬件设备的基础,机器人的大部分功能都可以通过操纵GPIO来实现的.换句话说,能控制一个LED灯,就能让机器人动起来.本章将 ...

  3. 树莓派点亮LED灯需要几行代码?3行。小孩子都能学会

    [TOC] 点亮LED灯 硬件连接 找一个LED灯,连接如上图,注意长短引脚,经过这些年的狂轰乱炸,大家对于这个应该不漠视,毕竟Arduino都进教材了. 代码 我们先来看图形化的版本: from g ...

  4. 嵌入式开发学习之--点亮LED灯(上)

    在嵌入式学习里,点亮LED灯的地位就如同编程语言学习里的"hello world",是每个初学者都必须经历的一关,因为点亮了LED灯,至少可以说明几件事: 1.开发环境没问题,包括 ...

  5. 树莓派:双色LED灯实验

    树莓派:双色LED灯实验 简介 一.实验效果 二.组件 三.实验原理 四.实验步骤 五.代码实现 简介 双色LED灯(双基色 LED灯),是指模块只能显示2种颜色,一般是红色和绿色,可以有三种状态:灭 ...

  6. 实例2:树莓派GPIO控制外部LED灯闪烁

    实例2:树莓派GPIO控制外部LED灯闪烁 实验目的 通过背景知识学习,了解四足机器人mini pupper搭载的微型控制计算机:树莓派. 通过树莓派GPIO操作的学习,熟悉GPIO的读写控制. 通过 ...

  7. 30个物联网传感器小实验:三行代码点亮LED灯

    30个物联网传感器小实验:三行代码点亮LED灯 三行代码点亮LED灯 LED灯闪烁 LED灯调亮度 LED淡入淡出 不写一行代码点亮LED灯 全彩RGB灯 面包板 30个物联网传感器小实验:三行代码点 ...

  8. 和12岁小同志搞创客开发:手撕代码,点亮LED灯

    目录 1.Arduino编程架构 2.点亮LED灯 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_381069 ...

  9. Raspberry PI 系列 —— 裸机点亮LED灯

    Raspberry PI 系列 -- 裸机点亮LED灯 背景 近期刚买了Raspberry PI B+,配置执行了官方提供的Raspbian系统,折腾了一周Linux系统,感觉没啥意思,于是就试着想了 ...

最新文章

  1. boost::histogram::axis::option::growth_t用法的测试程序
  2. 提高编程技能最有效的方法
  3. 自动驾驶车辆控制 最终项目作业 实现分析
  4. 知识图谱商业应用 、介绍
  5. 打印显示服务器脱机win10,如何在Win10中将打印机状态从脱机更改为联机
  6. Groovy简介与使用
  7. 3.3v稳压芯片有哪些
  8. 魔术方法、5个类的魔术属性和单态
  9. MONGODB的压力测试
  10. 怎么压缩gif图大小?试试这个图片压缩攻略
  11. 如何通过发送短信唤起三方app?
  12. python中怎么统计英文字符的个数_python怎样实现字符串中字符分类及个数统计
  13. 办理广东林业调查规划设计资质最新申报标准
  14. 所有学习资源都给你你汇总好啦!
  15. 密集创投迎来爆发期 今年会是链游之年么?
  16. IRP_MJ_SET_INFORMATION
  17. Connecting the Dots: Multivariate Time Series Forecasting with Graph Neural Networks
  18. Python爬虫实战(一) — Pixabay图片下载器
  19. java游戏编程原理与实践教程_第18章青蛙过河游戏(Java游戏编程原理与实践教程课件).ppt...
  20. Ajax+php上传图片

热门文章

  1. 好用的在线客服系统有哪些
  2. python 创意项目_选择创意项目您需要知道的7个步骤
  3. FLIR Systems获得美国陆军士兵随身传感器项目价值3960万美元的“黑黄蜂”个人侦察系统合同
  4. 明史类毕业论文文献都有哪些?
  5. 常见的 5 种绩效评估方法
  6. 云计算技术基础【7】
  7. 电脑设定为插上耳机有声 拔掉耳机扬声器无声 win10 专业版
  8. 计算机与书法专业,厉害了!计算机应用专业的他获省级书法比赛一等奖
  9. 【附源码】计算机毕业设计SSM小学英语学习系统
  10. macbookpro接口叫什么_USB-C接口是什么 苹果MacBook新型接口分析【详解】