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)!