PWM(Pulse-Width Modulation)系脉冲宽度调制的简称,为一种模拟信号电平的数字编码技术。该技术通过将连续电信号离散化,实现降低所传递平均功率的目的。依据面积等效原理,通过调整脉冲时间宽度,可有效合成所需幅值与频率的波形,从而实现模拟电路的数字化控制,此举能显著降低系统成本与功耗。当前,众多微控制器及数字信号处理器(DSP)已内置PWM控制器芯片,便于实施数字化控制。PWM信号通过调节占空比,实现对信号、能量等变化的精准调控。尽管PWM输出可通过GPIO输出配合延时模拟实现,但高级微控制器通常配备专用外设。在树莓派平台上,可利用gpiozero库,通过PWMLED类实现PWM信号输出。之前用的RPI.GPIO库只能实现GPIO的输入输出操作。
可以直接按前面的方式连接不动,继续使用3脚GPIO通道,然后新建一个文件为pwmled.py的文件,然后输入如下代码:from gpiozero import PWMLED from time import sleep import math led = PWMLED(3) N=100 x=1 state=True while True: print(x) if state: x += 1 if x==N: state=False led.value = x/N else: x -= 1 if x==1: state=True led.value = x/N sleep(0.01)
效果如下:
这里需要注意,PWMLED使用的引脚用外侧命名规则的编号:
这就很方便了,直接通过python进行控制,也不需要进行太多的配置,使用的库文件实际上把驱动都集成了。