1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 树莓派GPIO入门(一):点亮一个LED灯

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

时间:2018-09-08 22:18:16

相关推荐

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

一、实验要求

点亮一个LED灯是电子开发最常见的入门实验。本次实验分为三个小实验:

(1)点亮单个LED灯,并让其亮暗闪烁

(2)通过脉宽调制(PWM)点亮单个LED灯,并让其亮暗闪烁

(3)让LED灯从暗到亮缓慢变化,再从亮到暗缓慢变化,不断循环

二、实验材料

LED灯1个电阻1个杜邦线若干树莓派4B、RPi.GPIO库

三、实物连接

本次实验的树莓派GPIO采用BCM编号方式。LED灯的正极与树莓派4B的13号引脚连接,实物连接中电阻的作用是作为保护电阻。

四、实验代码

4.1点亮单个LED灯,并让其亮暗闪烁

import RPi.GPIO as GPIOimport timeGPIO.setmode(GPIO.BCM)#引脚采用BCM编号方式GPIO.setup(13, GPIO.OUT) #13号引脚设置为输出模式GPIO.output(13, GPIO.LOW) #初始化,13号引脚置低电平,默认状态下LED暗while True:GPIO.output(13, GPIO.HIGH) #13号引脚置高电平,此时LED灯被点亮time.sleep(0.3) #持续0.3sGPIO.output(13, GPIO.LOW) #13号引脚置低电平,此时LED灯熄灭time.sleep(0.3) #持续0.3s

4.2通过脉宽调制(PWM)点亮单个LED灯,并让其亮暗闪烁

import RPi.GPIO as GPIOimport timeGPIO.setmode(GPIO.BCM)#引脚采用BCM编号方式GPIO.setup(13, GPIO.OUT) #13号引脚设置为输出模式GPIO.output(13, GPIO.LOW) #初始化,13号引脚置低电平,默认状态下LED暗p = GPIO.PWM(13, 1) #在13号引脚处调制频率为1Hz的脉冲p.start(50) #占空比为50%的脉冲开始输出time.sleep(6)#持续时间6Sp.ChangeDutyCycle(100)#把输出脉冲的占空比设置为100%time.sleep(4)#持续时间4Sp.stop()#停止输出脉冲GPIO.cleanup() #清理GPIO口资源

代码分析:

4.3让LED灯从暗到亮缓慢变化,再从亮到暗缓慢变化,不断循环

import timeimport RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM) #引脚采用BCM编号方式GPIO.setup(13, GPIO.OUT)#13号引脚设置为输出模式GPIO.output(13, GPIO.LOW) #初始化,13号引脚置低电平,默认状态下LED暗p = GPIO.PWM(13, 100) #在13号引脚处调制频率为100Hz的脉冲p.start(0) #占空比为0的脉冲开始输出try:while 1:for dc in range(0, 101, 5): #从0到100,每次循环加5p.ChangeDutyCycle(dc) #把输出脉冲的占空比设置为dc%time.sleep(0.1)#持续时间0.1Sfor dc in range(100, -1, -5):#从100到0,每次循环减5p.ChangeDutyCycle(dc) #把输出脉冲的占空比设置为dc%time.sleep(0.1)#持续时间0.1Sexcept KeyboardInterrupt: #按键盘Ctrl+C会中止程序passp.stop()GPIO.cleanup()

为什么这部分代码的实验现象是:LED灯从暗到亮缓慢变化,再从暗到亮缓慢变化?

简单的说,PWM技术就是不停的通断电路并控制通断持续的时间片段长度来控制用电器在单位时间内实际得到的电能。这么说好像还是复杂了,再简单点说,如果你的手足够快,打开电灯开关后马上关闭,如果这个时间间隔足够短,灯丝还没有全部亮起来就暗下去了。你再次打开电灯再关闭,再打开再关闭。如果你一直保持相同的频率,那么电灯应该会保持一个固定的亮度不变。理论上,你可以通过调整开灯持续的时间长度和关灯持续的时间长度的比例就能得到不同亮度了。这个比例被称为“占空比”。

平均电压的角度来分析,假设占空比为10%,那么这10块时间里,只有1块的时间让LED导通,剩下9块的时间里LED截止。假设PWM信号的幅值是5V,那么在导通的1块时间里LED电压的确是5V的,但是在剩下9块时间里,它的电压却是0V。也就是说从一个周期整体看来,LED的平均电压只有5*0.1+0*0.9=0.5V。PWM信号频率很高的,我们无法通过肉眼来观察到每一个周期LED灯亮灭的变化过程,所以只好通过平均电压这样一种方式来决定这个LED的亮的程度了。

所以在PWM技术中,可以通过调节占空比来控制LED灯的亮暗程度。

五、视频演示

5.1点亮单个LED灯,并让其亮暗闪烁

5.2通过脉宽调制(PWM)点亮单个LED灯,并让其亮暗闪烁

5.3让LED灯从暗到亮缓慢变化,再从亮到暗缓慢变化,不断循环

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。