600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 树莓派 按键控制小灯

树莓派 按键控制小灯

时间:2018-07-02 13:39:35

相关推荐

树莓派 按键控制小灯

1、实现要求

1.1、运用树莓派设计一个简单的按键控制LED灯点亮系统。通过树莓派控制器读取外部数字信号,使用三个按键分别控制三种颜色的 LED灯,当有按键按下时对应的LED灯会点亮,按键松开后对应的LED灯则熄灭。

1.2、按下三个按键中的一个按键时,可以看到对应的一个LED灯会点亮;同时按下其中两个按键时,对应的两个LED灯会亮起;同时按下三个按键时则三个LED灯同时亮起。

2、涉及技术

2.1、树莓派的输入输出引脚控制

2.2、python 线程的基本操作

3、实现原理

3.1、RGB三色灯有四个引脚,高电平接3.3V,其它三个引脚对应三种色源,对应的引脚输入低电平时灯亮,输入高电平时灯灭。

3.2、轻触开关有两组共4个脚,每组的2根脚是互相联通,电会从这俩脚里流过,按钮的作用就是按下去电路就联通了,否则就断开。

3.3、GPIO有个input模式,如果输入电流到GPIO口,那么编程读取GPIO返回HIGH,如果没有输入电流则返回LOW,从而我们可以检测到按钮的状态变化。

3.4、多线程类似于同时执行多个不同程序,使用线程可以把占据长时间的程序中的任务放到后台去处理。

4、系统组成

系统主要由树莓派、3个轻触开关和3个RGB灯组成,树莓派是整个系统的核心,通过检测按键的开关状态控制相应灯的亮灭。

5、硬件连接

5.1、实物连接图:

5.2、连接原理图:

6、实现步骤

6.1、初始化引脚

设置引脚编号模式为BCM,按键对应引脚为输入模式并使用软件下拉模式,RGB灯相应引脚设为输出模式,并初始化为高电平。

# 采用BCM引脚编号GPIO.setmode(GPIO.BCM)# 关闭警告GPIO.setwarnings(False)# 设置GPIO输入模式, 使用GPIO内置的下拉电阻, 即开关断开情况下输入为LOWGPIO.setup(channel_R, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)GPIO.setup(channel_G, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)GPIO.setup(channel_Y, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)GPIO.setup(LED_R,GPIO.OUT, initial=GPIO.HIGH)GPIO.setup(LED_G,GPIO.OUT, initial=GPIO.HIGH)GPIO.setup(LED_Y1,GPIO.OUT, initial=GPIO.HIGH)GPIO.setup(LED_Y2,GPIO.OUT, initial=GPIO.HIGH)

6.2、新建一个线程事件,监听按键状态

# 开关闭合的处理def on_switch():GPIO.output(LED, GPIO.LOW)def off_switch():GPIO.output(LED, GPIO.HIGH)def thread():try:while True:# 如果检测到电平RISING, 说明开关闭合if GPIO.input(channel):on_switch()else:off_switch()# 可以在循环中做其他检测time.sleep(0.1)# 10毫秒的检测间隔except Exception as e:print(e)

6.3、在主线程里开启三个按键对应的线程

tr=Thread(target=thread_R)tr.start()tg=Thread(target=thread_G)tg.start()ty=Thread(target=thread_Y)ty.start()

7、运行结果

7.1、按下一个按钮时,对应的RGB灯点亮

7.2、按下两个按钮时,对应的两个RGB灯点亮

7.3、按下三个按键时,三个RGB灯都点亮

8、实验总结

1、GPIO输入安全电压应该是3.3V,因此按键使用树莓派的3.3V供电口而不是5V;

2、GPIO引脚悬空时,受周遭环境干扰可能产生微弱电流,导致GPIO输入时高时低,因此程序需要开启GPIO口的下拉或上拉模式。

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