当前位置: 首页 > news >正文

树莓派4B学习笔记——点亮你的LED

文章目录

  • 树莓派的板载资源
  • 搭建开发环境
    • 编程环境介绍
    • 安装树莓派的Wiring Pi库函数
      • 解决步骤:
  • 点亮你的LED
    • GPIO命令控制LED
    • 使用Python实现闪烁灯
    • 使用C语言点灯
  • 总结
  • 树莓派4B入门学习笔记汇总

树莓派的板载资源

树莓派又被叫做卡片式电脑,而且它缺保留了常用电脑所没有的GPIO接口,有了这些接口,我们就可以很方便的使用树莓派来控制其他的辅助外设了;相信学习树莓派的大部分都是学习过单片机的,在STM32的学习中有重点讲解过GPIO,如果不了解的同学可以自己去补一下这块的知识,在此不再去细说GPIO的输入输出分类那些了。
下图是树莓派的资源分布图:

GPIO是整个嵌入式系统的输入输出端口,通过它们才能采集传感器信号、输出控制量控制外设、利用复用功能与其他外设进行通信。树莓派作为嵌入式中的一大霸主自然是会有这些通用输入输出接口的,如下图所示,树莓派4B一共为我们提供了40个GPIO口,其中包括有电源接口(5V、3.3V、GND)、有复用功能的GPIO口包含I2C接口(SCL、SDA),SPI接口(MISO、MOSI、CLK、CS片选信号SPICE0_N),UART串口接口(TXD、RXD),PWM接口以及普通GPIO口。

上述IO口的脚位以及对应关系如下所示:(图片来自B站树小悉)

打开命令终端输入pinout也可以查看,如下图所示:

搭建开发环境

编程环境介绍

在了解了树莓派的资源后,参照学习单片机的思路,自然是需要开始搭建树莓派的开发环境了;这里需要注意一点,在单片机开发中,我们一般使用的都是keil_MDK、IAR、Visual Studio等一些IDE,所谓IDE就是集成开发环境,他包含了代码编辑器、编译器、调试器和图形用户界面等工具,是具有代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件。由于树莓派的本质还是Linux,所以在开发环境上有些许不同,虽然也安装有配套的C语言和Python的IDE,但是有些代码的开发和运行还是需要借助命令行来执行操作。

在树莓派上编程我们可以使用C语言和Python,官方的系统已经安装Python3,有的版本还安装了Python2,笔者此时使用的是最新系统,尝试了一下是没有Python2;
查验自己的树莓派默认使用的是Python是哪个版本的方法如下:
打开终端串口、输入pyhon,观察返回的版本,笔者此处是3.9.2及默认是Python3。
此时按照Python2的语法输入print “hello world”
会发现出现了提示,按照提示修改成Python3的语法格式后可以正常输出hello world。
要退出此界面,输入exit()回车即可回到终端命名窗口。

除了在终端窗口编程,树莓派还安装了可以桌面编程的应用如下图所示,Geany是C语言编程环境,Thonny是Python的编程环境,有关应用的具体用法参考此视频

安装树莓派的Wiring Pi库函数

有过单片机开发经验的同学都知道,我们要控制单片机的GPIO口,需要使用相应的库进行操作(当然也有直接操作寄存器的,这里不纠结),树莓派要操作GPIO口也是需要借用库函数来实现的,它的名称叫做Wiring Pi,它使用C和C++开发并且可以被python、ruby或者PHP等其他语言包转。有关其具体的函数介绍参考此文。
树莓派的官方系统是没有自带Wiring Pi库的,需要我们自行安装,和之前安装远程桌面xrdp类似,安装步骤如下:
1.打开终端命令窗口,输入 sudo apt-get install wiringpi 回车。

2.重新进入命令窗口说明已经安装完毕,我们使用指令来看一下树莓派的GPIO详细情况。
在命令行输入 gpio readall,如果出现了

但是新版一般会出现下面这种报错,说无法获取管脚状态。

解决步骤:

(1)在命令行中输入以下命令

cd/tmp wget https://project-downloads.drogon.net/wiringpi--latest.deb sudo dpkg-i wiringpi-latest.deb

回车等待再次返回命令终端,如下图所示:

(2)再次输入gpio readall命令,回车就可以看到这张GPIO的表了。

3.至此我们的wiringpi的库就已经安装好了,这里需要补充一点,如上表第一行我们可以看见有BCM、wPi、Physical,这三个下面都对应的是数字,这三个是树莓派GPIO口的三种编码方式,其中Physical是板载编码,与板子上的引脚编号对应,而另外两种编码方式常用于编程操作(Python使用BCM;C语言使用wPi)。

点亮你的LED

笔者使用的是第板载7号管脚wPi编码也是7,BCM编码为4。

GPIO命令控制LED

此方式使用BCM编码
步骤:
(1)打开终端窗口输入:gpio -g mode 4 out
设置管脚为输出模式,-g表示是以BCM编码#如州去掉这个参数表示以wiringPi编码方式
(2)终端窗口输入:gpio -g read 4 读取管脚当前状态

返回为0,此时LED未点亮;
(3)终端窗口输入:gpio -g write 4 1设置管脚为高电平为高,LED点亮。
(4)gpio -g write 4 0设置管脚为低电平,关闭LED。

使用Python实现闪烁灯

(1)打开Thonny IDE,输入以下代码:(使用的是BCM编码注意和自己的引脚对应)

import RPi.GPIO as GPIO from time import sleep GPIO.setmode(GPIO.BCM)#采用bcm编号方式 GPIO.setup(4,GPIO.OUT)#指定使用26号端口 for i in range(1,10): GPIO .output(4,GPIO.HIGH) sleep(1) GPIO.output(4,GPIO.LOW) sleep(1) GPIO.cleanup()

Python编程时要注意缩进,由于没有括号,缩进就代表从属。
输入代码后点击保存,命名为led.py路径选择桌面,点击确定。

此时我们可以看见桌面已经有了一个led.py的文件。

点击Run,可以发现LED小灯开始闪烁。

除了此方式,我们也可以使用终端命令来操作,在桌面新建好led.py后,可以打开终端命名窗口输入cd Desktop 回车
然后在输入 python led.py

也可以实现操作。

使用C语言点灯

1.打开GeanyIDE,输入以下代码(使用的是wpi编码注意和自己的引脚对应)

#include <wiringPi.h> #define Pin 7 int main() { if(wiringPiSetup() <0) return 1; pinMode(Pin,OUTPUT); for(int i=0;i<10;i++) { digitalWrite(Pin,1); delay (200); digitalWrite(Pin,0); delay (200); } return 0; }

命名为led.c,保存在桌面。

点击编译,不报错就OK,如下图:

然后打开命令终端,输入cd Desktop,切换至桌面目录,

然后输入gcc -o ledled.c-lwiringPi(led.c要与自己保存的名称一致)
注意此处如果报错,说明语法有问题,需要自行查找。

最后输入sudo ./led,回车后会发现小灯开始闪烁。

总结

有关树莓派点灯的笔记就写到这为止了,欢迎大佬指正不妥之处,师从B站树小悉,很多资源来自他们的课程,有需要的同学自己去学习吧,链接之前已经给过了。

树莓派4B入门学习笔记汇总

树莓派4B学习笔记——系统烧录及初次开机
树莓派4B学习笔记——点亮你的LED
树莓派4B学习笔记——IO输入检测
树莓派4B学习笔记——IO通信篇(I2C)
树莓派4B学习笔记——IO通信篇(SPI)
树莓派4B学习笔记——IO通信篇(1-Wire)
树莓派4B学习笔记——IO通信篇(UART)

http://www.jsqmd.com/news/614448/

相关文章:

  • 痛别张雪峰老师,年仅41岁:那个教别人做对选择的人,却没能为自己选一次“好好活着
  • Git 常用命令速查表(前端开发专属版)
  • P1308 [NOIP 2011 普及组] 统计单词数
  • Windows 7 虚拟机 VMware Tools 安装失败:无法自动安装VSock 驱动程序
  • 第二十五章 CI/CD 演进:在安全与敏捷间走钢丝的发布机制
  • Maxscript必收的自定义函数与方法精选!
  • JavaScript中骨架屏Skeleton在异步数据加载中应用
  • 树莓派4B学习笔记——IO通信篇(SPI)
  • 通用构建优化(编译阶段)+ Vue 专属运行时优化 + React 专属运行时优化
  • All in AI:企业必须关注的7个网络安全技术发展趋势
  • 专注知识产权维权哪家专业 - 品牌企业推荐师(官方)
  • 8大网盘直链解析终极指南:免费解锁5倍下载速度的完整解决方案
  • MindSpore 环境配置完全指南嗽
  • 树莓派4B学习笔记——IO通信篇(1-Wire)
  • 语义分块提升RAG检索精度
  • gopher-os社区贡献指南:从代码提交到功能开发的完整参与流程
  • Redis持久化:从AOF到RDB,如何实现数据不丢失?澈
  • 在嘉兴有靠谱的工业纸筒加工厂吗? - 品牌企业推荐师(官方)
  • 阿里云盘Refresh Token获取工具使用指南:轻松实现云盘授权与自动化管理
  • 011 Linux环境熟悉——IMX6ULL嵌入式开发环境配置
  • 中设智控亮相第二十四届国际TnPM设备运维大会 | AI赋能设备管理一体化解决方案重磅发布 重构设备资产精益管控新生态
  • Golang bytes.Buffer怎么用_Golang Buffer教程【对比】
  • 实测好用!Qwen3-Embedding-4B一键部署教程,轻松搞定长文档向量化
  • 树莓派4B学习笔记——IO通信篇(UART)
  • FastAPI单元测试实战:别等上线被喷才后悔,TestClient用对了真香!找
  • 终极指南:如何免费解锁Cursor Pro高级功能完整教程
  • TF-IDF BM25 原理及应用
  • PDE (Processing D Editor) 三维场景编辑器 · 软件白皮书 · 基于 v..爸
  • Vue-Multiselect 安全防护终极指南:彻底防范 XSS 攻击与数据注入威胁
  • 断崖式下跌!最强AI也搞不定长期开发:代码堆得越多系统崩得越快