树莓派Python开发:led实验

    科技2026-04-01  14

    第一课:什么是树莓派 第二课:树莓派能做什么 第三课:购买您的第一个树莓派 第四课:如何安装树莓派系统 第五课:树莓派Python编程手册 第六课:树莓派Python Led实验 视频链接

    从点灯开始

    学一种语言是从hello,world开始的; 学一种硬件编程是从点灯开始的; 学编程语言,大家都从hello,world开始,是因为一个简单的hello,world其实是“五脏俱全”的,包括头文件,主函数,编译,运行,输出; 而控制一个cpu,从点一个灯(led)开始,也是这个道理,你的程序让一个灯亮起来了,说明cpu工作了,板子没问题了,你能够通过程序控制cpu的GPIO口了。 对一些玩过单片机或者arm的开发者来说,可能觉得点一个灯太easy,所以我考虑这篇博客是简单一笔带过,给一段代码,还是站在一个初学者的角度写得浅显易懂呢?最后,我觉得还是要认真写,一来如果简单转发一下别人的博客,不符合我博客的风格,另一个重要原因是:其实我很不喜欢那种蔑视入门知识的人,他们是忘了他们自己是如何走过来的,所以我还是站在一个从来没有接触过树莓派,也没有接触过单片机或者开发板的菜鸟角度来写吧!

    一般用什么样的灯

    我们一般用第一种灯,因为可以显示RGB(红绿蓝)三种颜色,而第二种灯只有单色(要么是白色,或者红色,蓝色,绿色等,下面图片是白色的)

    怎么接线

    这个RGB小模块,不需要接电源,因为Led只需要很小的电流就可以驱动,也就是通过一个树莓派上的IO口就可以驱动它,所以不需要接电源(也就是我们说的正),树莓派有很多个地线,这里的GND都是,GND是ground的缩写。Led模块上的R,G,B分别代表3个led,表示红,绿,蓝。我们一般用杜邦线来连线。

    什么是IO,什么是GPIO

    大家在学习硬件编程的时候,会在各种文章和书籍或者视频上看到**“IO口”,“GPIO”**术语,其实很好理解: IO——是input,output的首字母,表示cpu上引脚具备的两种功能,即你是想把这个引脚作为输入来使用呢?还是作为输出来使用,那么什么是输入,什么是输出呢? 输入和输出是针对cpu来说的,举个例子吧: 比如我们使用的笔记本,哪些是输入设备,哪些是输出设备呢? 很显然,键盘,鼠标是输入设备,显示器是输出设备,说到这个,大家很快就能回答出来,为什么呢,因为你觉得输入就是我们给到比较本的,键盘是用来输入字母和文字的,鼠标是用来点击一些按钮和网页的,这些属于输入概念;显示是输出设备,因为是笔记本里面的cpu把图片送到显示器显示的。所以呢: 输入设备是我们给到cpu的,输出设备是cpu给到我们的,这里的输入和输出是相对cpu来讲的,输入就是输入给cpu,输出是cpu输出给我们。 GPIO——是General Pin Input/Output的缩写,中间那个P也有人译作Purpose——用途,也有人译作port——端口。什么是通用呢,就是这个引脚是作为普通使用的,说明还有特殊用途,这个特殊用途我们后面学到pwm或者串口,i2c,spi的时候再讲。

    开始编程了

    led的编程时最简单了,就像helloworld一样。 但,这里也可以把问题拆分一下,你可以先写程序控制一个灯,一个灯实现了,再控制三个灯。 我们要控制一个IO口,需要下面的几步: 1)包含导入GPIO模块 import RPi.GPIO as gpio #这是第一条语句,不然你不能调用控制IO口的函数 import time #导入时间模块,为了下面做延时用,不然看不到一闪一闪的效果 2) 设置编码模式 gpio.setmode(gpio.BCM)#设置引脚编码模式,c语言一般使用wiringPi编码模式,python一般使用BCM编码模式 #这些函数不知道什么意思的,可以参考第五课:树莓派Python编程手册 3)设置引脚功能 gpio.setup(16,gpio.OUT)#设置引脚16方向输出//设置BCM模式下的第16脚为输出功能 4) 循环控制 while 1: gpio.output(16,gpio.HIGH)#设置16脚输出高电平 time.sleep(1) gpio.output(16,gpio.LOW)#设置16脚输出低电平 time.sleep(1) 最终代码:

    pi@xiajiashan:~/pi-python-blog$ cat led.py #coding:utf-8 #为了写中文注释 import RPi.GPIO as gpio #第一步:导入RPi.GPIO模块 import time #为了后面延时 R = 16 #方便程序修改, gpio.setwarnings(False)#屏蔽警告 gpio.setmode(gpio.BCM)#设置引脚模式 gpio.setup(R,gpio.OUT)#设置引脚16方向输出 while 1: gpio.output(R,gpio.HIGH)#设置16脚输出高电平 time.sleep(1) gpio.output(R,gpio.LOW)#设置16脚输出低电平 time.sleep(1) pi@xiajiashan:~/pi-python-blog$

    编译运行:

    无需编译,直接运行就像这样:

    三色灯RGB的控制

    上面我们实现的是红色灯的控制,如果要实现三个灯的交替亮灭,该怎么办呢? 就是R亮------>R灭------>G亮-------->G灭-------->B亮-------->B灭------>循环 因为硬件原理(如何接线)我已经讲得很详细了(见上面),所以接下来就是编码问题,我就直接贴代码了:

    pi@xiajiashan:~/pi-python-blog$ cat rgb.py #coding:utf-8 import time #导入时间模块,用于延时 import RPi.GPIO as gpio #导入树莓派GPIO模块并取一个别名gpio gpio.setmode(gpio.BCM) #设置树莓派引脚为BCM编码模式 R = 16 #设置红灯为16脚 G = 20 #设置绿灯为20脚 B = 21 #设置蓝灯为21脚 #设置R,G,B为输出 gpio.setup(R,gpio.OUT) gpio.setup(G,gpio.OUT) gpio.setup(B,gpio.OUT) #初始化引脚为低电平,让三个引脚灭 gpio.output(R,gpio.LOW) #设置R为低 gpio.output(G,gpio.LOW) #设置G为低 gpio.output(B,gpio.LOW) #设置B为低 time.sleep(1) while(1): gpio.output(R,gpio.HIGH) #让R亮 time.sleep(1) gpio.output(R,gpio.LOW) #R灭 time.sleep(1) gpio.output(G,gpio.HIGH) #让R亮 time.sleep(1) gpio.output(G,gpio.LOW) #R灭 time.sleep(1) gpio.output(B,gpio.HIGH) #让R亮 time.sleep(1) gpio.output(B,gpio.LOW) #R灭 time.sleep(1) pi@xiajiashan:~/pi-python-blog$

    七彩灯的控制

    因为如何控制灯的硬件原理我已经讲了,七彩灯我这里只讲一下控制原理,详细的大家可以购买我的视频: https://edu.csdn.net/course/play/28043/383516?spm=1002.2001.3001.4143 RGB三种颜色可以组合成8种颜色,R,G,B,RG-,RB-,-GB,RGB,—。---表示不亮了。 注意是组合,不是排列,排列abcd和abdc是不一样的,但是组合是一样的。

    END

    希望对您有帮助,如果有帮助就收藏吧

    第一课:什么是树莓派 第二课:树莓派能做什么 第三课:购买您的第一个树莓派 第四课:如何安装树莓派系统 第五课:树莓派Python编程手册 第六课:树莓派Python Led实验 视频链接

    Processed: 0.017, SQL: 9