【树莓派+python】实现三色呼吸灯+按钮切换

文章介绍了如何通过树莓派和Python编程实现RGB三色灯的呼吸效果,以及加入按钮后对灯的控制。涉及到GPIO引脚连接、PWM调光技术,以及在VSCode中使用SSH和虚拟环境的配置。
摘要由CSDN通过智能技术生成

Traffic-lights
电路连接
【元件实物图】

图1为Button,按钮的状态控制SIG引脚的电平值。
图2为RGB灯,有三种颜色:R-red、G-green、B-blue。三种颜色需由不同的GPIO引脚控制
图3为连接好按钮、RGB灯的树莓派
【GPIO引脚连线图】

【模拟连线图】

为了方便连接,RGB LED灯的三个引脚接GPIO 2、3、4,GND接GND。按钮的SIG引脚接GPIO 17, GND接GND。

代码实现
算法设计流程图

python环境配置
在Vscode中使用SSH连接树莓派

按Ctrl+Shift+~调用bash

在命令行中输入python -m venv myenv创建虚拟环境,其中myenv是自定义的虚拟环境名称
谢谢杨老板抓虫…之前写成pip了

在命令行中输入source myenv/bin/activate激活虚拟环境

在本次实验中需要安装以下包:

激活虚拟环境后输入以下命令安装包

pip install gpiozero 
pip install rpi-gpio
pip install lgpio

在命令行中输入deactivate退出虚拟环境

三色呼吸灯实现
为了实现呼吸灯,首先需要控制灯的亮度实现渐变。TrafficLights类提供参数pwm,使用PWM 调光实现亮度的渐变。PWM调光的原理如下图所示。通过占空比来改变电子元件的功率。

因此可以写出代码如下,实现效果为:RGB灯以红、绿、蓝的颜色顺序循环呼吸,每个颜色呼吸3秒

# 呼吸灯效果函数
def breathe():
    while breathing:
        red_led.on()
        red_led.pulse()
		sleep(3)
        red_led.off()

        green_led.on()
        green_led.pulse()
		sleep(3)
        green_led.off()


        blue_led.on()
        blue_led.pulse()
		sleep(3)
        blue_led.off()

breathe()

三色呼吸灯+按钮控制
加入按钮后。设置了一个布尔类型的breathing作为标志。当每次按下button的时候,调用button_pressed函数,当此时breathing为False,也就是当时没有在呼吸时,将breathing设为True,并调用breathe函数开始呼吸;当此时breathing为True,也就是当时在呼吸时,将breathing设为False,此时breathe函数内部每0.1秒检查一次breathing的值,此时检查为False则停止呼吸。循环进行,直到下一次按按钮。

实现效果为:

第一次按按钮,RGB开始以红、绿、蓝的顺序开始呼吸
第二次按按钮,呼吸停止
反复循环直至Ctrl+C退出程序

# 是否处于呼吸状态的标志
breathing = False

# 按钮按下时的处理函数
def button_pressed():
    global breathing, breathe_thread
    print(breathing)
    # 创建并启动一个新线程来监视breathing变量的状态
    if breathing==False:
        # 如果不处于呼吸状态,则开始呼吸灯效果
        breathing = True
        # 创建并启动一个新线程来执行呼吸灯效果
        breathe_thread = Thread(target=breathe)
        breathe_thread.start()
        
    else:
        # 否则停止呼吸灯效果
        breathing = False
        red_led.off()
        green_led.off()
        blue_led.off()
# 呼吸灯效果函数
def breathe():
    while breathing:

        red_led.on()
        red_led.pulse()
        for i in range(30):
            sleep(0.1)
            if not breathing:
                return
        red_led.off()
		...

# 创建按钮对象,代表控制按钮
button = Button(12,bounce_time=0.2)
while(True):
    # 当按键被按下时调用button_pressed函数
    button.when_pressed= button_pressed
    # 进入暂停模式,等待中断信号
    pause()

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明vb.net教程C#教程python教程

原文链接:【树莓派+python】实现三色呼吸灯+按钮切换_python 控制 led三色灯-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值