【树莓派教程】——Python使用PWM

2016-02-033.2万
AI 快速预览详细 收起
本文介绍了如何在树莓派上使用Python进行PWM控制,以实现LED的呼吸灯效果。首先,创建一个PWM实例`p = GPIO.PWM(channel, frequency)`,然后通过`p.start(dc)`启用PWM。接着,可以通过`p.ChangeFrequency(freq)`更改频率,通过`p.ChangeDutyCycle(dc)`更改占空比。最后,通过`p.stop()`停止PWM。示例代码展示了如何使LED每两秒钟闪烁一次以及如何在亮/暗之间切换。
1.树莓派引脚对照表

2.PWM控制呼吸灯
脉宽调制(PWM)是指用微处理器的数字输出来对模拟电路进行控制,是一种对模拟信号电平进行数字编码的方法。在树莓派上,可以通过对GPIO的编程来实现PWM。
创建一个 PWM 实例:
  1. p = GPIO.PWM(channel, frequency)
复制代码
启用 PWM:
  1. p.start(dc)   # dc 代表占空比(范围:0.0 <= dc >= 100.0)
复制代码

更改频率:
  1. p.ChangeFrequency(freq)   # freq 为设置的新频率,单位为 Hz
复制代码

更改占空比:
  1. p.ChangeDutyCycle(dc)  # 范围:0.0 <= dc >= 100.0
复制代码

停止 PWM:
  1. p.stop()
复制代码

注意,如果实例中的变量“p”超出范围,也会导致 PWM 停止。
以下为使 LED 每两秒钟闪烁一次的示例:
  1. import RPi.GPIO as GPIO
  2. GPIO.setmode(GPIO.BOARD)
  3. GPIO.setup(12, GPIO.OUT)
  4.   
  5. p = GPIO.PWM(12, 0.5)
  6. p.start(1)
  7. input('点击回车停止:')  
  8. p.stop()
  9. GPIO.cleanup()
复制代码

以下为使 LED 在亮/暗之间切换的示例:
  1. import time
  2. import RPi.GPIO as GPIO
  3. GPIO.setmode(GPIO.BOARD)
  4. GPIO.setup(12, GPIO.OUT)
  5.   
  6. p = GPIO.PWM(12, 50)  # 通道为 12 频率为 50Hz
  7. p.start(0)
  8. try:
  9.     while 1:
  10.         for dc in range(0, 101, 5):
  11.             p.ChangeDutyCycle(dc)
  12.             time.sleep(0.1)
  13.         for dc in range(100, -1, -5):
  14.             p.ChangeDutyCycle(dc)
  15.             time.sleep(0.1)
  16. except KeyboardInterrupt:
  17.     pass
  18. p.stop()
  19. GPIO.cleanup()
复制代码

【树莓派教程】——Python使用PWM图1


创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(7)
蛋脑花
请问树莓派rpi.gpio库可以更改pwm的占空比范围吗?比如将0到100 提高到 0到1000的范围
蛋脑花
只能通过提高PWM的控制频率来提高控制精度吗
ldsgrh
备用学习
iooops
啊我的树莓派
吹口琴的钢铁侠
同时能有几个PWM
对CPU占用有多少
每个GPIO都可以操作吗
凌风清羽
这个还有待研究一下,我试了两个GPIO都可以~~可能是巧合了,以前看过一篇资源竟然找不到了
孙毅
好问题,我也知道。。。。。等楼主
孙毅
哈哈哈,已经有人准备跟着你玩树莓派了啊。。。哈哈哈
hnyzcj
我的树莓估计年后才能到,要不现在就跟你后面做了。
孙毅
就是,炸的大肾,怎么买 肾7
凌风清羽
凌风清羽
作者
回复hnyzcj
炸了大肾买iPhone7
共9条回复,已加载2条,点击查看更多共9条回复,已加载全部
qq815076543322
沙发 做一个
- 没有更多了 -