GPIO.PWM 用法
时间: 2024-03-26 10:15:57 浏览: 12
GPIO.PWM 是 Raspberry Pi 的 GPIO 模块中用于产生 PWM(Pulse-Width Modulation)信号的函数,可以用于控制电机、LED 灯等需要模拟输出的设备。
使用 GPIO.PWM 函数的步骤如下:
1. 导入 GPIO 模块:
```
import RPi.GPIO as GPIO
```
2. 设置 GPIO 引脚模式和输出电平:
```
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin, GPIO.OUT)
```
其中 `pin` 为输出 PWM 信号的引脚编号。
3. 创建 PWM 对象:
```
pwm = GPIO.PWM(pin, frequency)
```
其中 `frequency` 为 PWM 信号的频率,单位为 Hz。
4. 启动 PWM:
```
pwm.start(duty_cycle)
```
其中 `duty_cycle` 为 PWM 信号的占空比,范围为 0 到 100,表示高电平时间占总周期的比例。
5. 修改 PWM 的占空比:
```
pwm.ChangeDutyCycle(duty_cycle)
```
可以根据需要修改 PWM 信号的占空比。
6. 停止 PWM:
```
pwm.stop()
```
在不需要 PWM 信号时,可以使用该函数停止 PWM 输出。
最后,记得在程序结束前清理 GPIO 引脚:
```
GPIO.cleanup()
```
完整的示例代码如下:
```
import RPi.GPIO as GPIO
import time
# 设置 GPIO 引脚模式
GPIO.setmode(GPIO.BOARD)
# 设置 GPIO 引脚为输出模式
pin = 12
GPIO.setup(pin, GPIO.OUT)
# 创建 PWM 对象,并设置频率为 50Hz
pwm = GPIO.PWM(pin, 50)
# 启动 PWM,设置占空比为 50%
pwm.start(50)
# 循环修改占空比
try:
while True:
for dc in range(0, 101, 5):
pwm.ChangeDutyCycle(dc)
time.sleep(0.1)
for dc in range(100, -1, -5):
pwm.ChangeDutyCycle(dc)
time.sleep(0.1)
except KeyboardInterrupt:
pass
# 停止 PWM,清理 GPIO 引脚
pwm.stop()
GPIO.cleanup()
```