自学内容网 自学内容网

2025年1月21日(树莓派点亮呼吸灯第一次修改)

系统信息:

Raspberry Pi Zero 2W
系统版本: 2024-10-22-raspios-bullseye-armhf
Python 版本:Python 3.9.2
已安装 pip3
支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480)
已安装 vim
已安装 git


学习目标:

  • 将功能分离到不同的函数中,增强可维护性和可读性。
    增加变量,方便调节。

学习内容:

将功能分离到不同的函数中,增强可维护性和可读性。
增加变量,方便调节。

import RPi.GPIO as GPIO
import time


def setup_gpio(led_pin):
    """初始化"""
    GPIO.setmode(GPIO.BOARD)  # BOARD 编码
    GPIO.setup(led_pin, GPIO.OUT, initial=GPIO.LOW)  # 输出模式


def adjust_led(pwm, delay, dc, aim_dc, step):
    """
    调整 PWM 占空比
    :param pwm: 实例对象 PWM
    :param delay: 延迟时间
    :param dc: 占空比
    :param aim_dc: 目标占空比
    :param step: 增减步长
    """
    while dc < aim_dc if step > 0 else dc > aim_dc:
        dc += step
        print("当前亮度 %d%%" % dc)
        pwm.ChangeDutyCycle(dc)
        time.sleep(delay)


def cleanup_gpio():
    """清理引脚规则"""
    print("--- 重置引脚规则 ---")
    GPIO.cleanup()  # 释放 GPIO 资源,清除引脚规则


def main():
    """呼吸灯"""
    led_pin = 32  # GPIO 12
    frequent = 50  # 50 Hz
    count = 1  # 循环次数
    delay = 0.05  # 延迟时间

    # 初始化
    setup_gpio(led_pin)
    pwm = GPIO.PWM(led_pin, frequent)

    # 启动 PWM
    pwm.start(0)

    try:
        for _ in range(count):
            adjust_led(pwm, delay, dc=0, aim_dc=100, step=1)  # 增加亮度
            adjust_led(pwm, delay, dc=100, aim_dc=0, step=-1)  # 减少亮度
    except KeyboardInterrupt:  # Ctrl + C
        print("--- 强行停止 ---")
    finally:  # 无论如何最后都会执行
        pwm.stop()  # 停止 PWM 输出
        cleanup_gpio()


if __name__ == "__main__":
    main()


原文地址:https://blog.csdn.net/weixin_50198505/article/details/145288860

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!