嵌入式人工智能(9-基于树莓派4B的PWM-LED呼吸灯)

1、PWM简介

(1)、什么是PWM

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是在具有惯性的系统中利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换和电机控速等的许多领域中。

(2)、PWM参数

        (a)频率 = 1 / Ts(是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期);)

        (b)占空比 = Ton /  Ts(有效电平与周期之比

        (c)分辨率 = 占空比变化步距

2、控制亮度

通过PWM可以改变输出电压,RPi.GPIO库内置了PWM的相关方法,通过它3任意一个GPIO引脚都能进行PWM输出。LED灯的接线仍然不变,接第11脚,GPIO17。

3、代码

import RPi.GPIO as GPIO
import time

PWM_LED = 11
# 指定编号规则为BOARD
GPIO.setmode(GPIO.BOARD)

# 将11号引脚设置为输出模式
GPIO.setup(PWM_LED, GPIO.OUT)

# 创建一个 PWM 实例,需要两个参数:
# 第一个是GPIO端口号,这里我们用12号
# 第二个是频率(Hz),频率越高LED看上去越不会闪烁,相应对CPU要求就越高,设置合适的值就可以
pwm = GPIO.PWM(PWM_LED, 80)

# 启用 PWM,参数是占空比,范围:0.0 <= 占空比 >= 100.0
pwm.start(0)

try:
    while True:
        # 电流从小到大,LED由暗到亮
        for i in range(0, 101, 1):
            # 更改占空比,
            pwm.ChangeDutyCycle(i)
            time.sleep(0.02)

        # 再让电流从大到小,LED由亮变暗
        for i in range(100, -1, -1):
            pwm.ChangeDutyCycle(i)
            time.sleep(0.02)

# 捕捉 Ctrl+C 强制中断的动作,以便于清理GPIO引脚
except KeyboardInterrupt:
    pass

# 停用 PWM
pwm.stop()

# 清理GPIO引脚
GPIO.cleanup()

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 11:40:04       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 11:40:04       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 11:40:04       57 阅读
  4. Python语言-面向对象

    2024-07-17 11:40:04       68 阅读

热门阅读

  1. Linux内存从0到1学习笔记(8.19 ION简介)---更新中

    2024-07-17 11:40:04       20 阅读
  2. D4:知识蒸馏

    2024-07-17 11:40:04       22 阅读
  3. SVN常用命令

    2024-07-17 11:40:04       22 阅读
  4. RedisAtomicLong

    2024-07-17 11:40:04       22 阅读
  5. HTC 10 刷系统 LineageOS 19.1 Android 12

    2024-07-17 11:40:04       25 阅读
  6. php相关

    php相关

    2024-07-17 11:40:04      116 阅读
  7. 为什么微服务需要配置中心?Eureka原理?

    2024-07-17 11:40:04       22 阅读
  8. C++ 入门15:STL 容器之列表(list)

    2024-07-17 11:40:04       23 阅读
  9. Go语言---并发版爬虫

    2024-07-17 11:40:04       22 阅读