20198浏览
查看: 20198|回复: 19

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

[复制链接]
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()
复制代码

192149vf0su7tlasla6mia.jpg


大连林海  初级技神

发表于 2016-2-3 22:57:55

沙发 做一个
回复

使用道具 举报

hnyzcj  版主

发表于 2016-2-4 08:49:15

我的树莓估计年后才能到,要不现在就跟你后面做了。
回复

使用道具 举报

孙毅  初级技匠

发表于 2016-2-4 09:42:33

哈哈哈,已经有人准备跟着你玩树莓派了啊。。。哈哈哈
回复

使用道具 举报

孙毅  初级技匠

发表于 2016-2-4 09:42:59

hnyzcj 发表于 2016-2-4 08:49
我的树莓估计年后才能到,要不现在就跟你后面做了。

首先是得先学会 vim !!!
回复

使用道具 举报

hnyzcj  版主

发表于 2016-2-4 09:59:59

孙毅 发表于 2016-2-4 09:42
首先是得先学会 vim !!!

O ,来我房间教我
回复

使用道具 举报

孙毅  初级技匠

发表于 2016-2-4 10:28:52

hnyzcj 发表于 2016-2-4 09:59
O ,来我房间教我

@凌风清羽 以后要主动去陈老师房间,“教”他
回复

使用道具 举报

hnyzcj  版主

发表于 2016-2-4 10:40:41

孙毅 发表于 2016-2-4 10:28
啊 @凌风清羽 以后要主动去陈老师房间,“教”他

大肾————————————————————————————
回复

使用道具 举报

吹口琴的钢铁侠  初级技匠

发表于 2016-2-4 12:41:01

同时能有几个PWM
对CPU占用有多少
每个GPIO都可以操作吗
回复

使用道具 举报

孙毅  初级技匠

发表于 2016-2-4 15:35:10

吹口琴的钢铁侠 发表于 2016-2-4 12:41
同时能有几个PWM
对CPU占用有多少
每个GPIO都可以操作吗

好问题,我也知道。。。。。等楼主
回复

使用道具 举报

凌风清羽  中级技匠
 楼主|

发表于 2016-2-4 17:04:18

hnyzcj 发表于 2016-2-4 10:40
大肾————————————————————————————

陈老师带我飞~~~~~
回复

使用道具 举报

凌风清羽  中级技匠
 楼主|

发表于 2016-2-4 17:05:10

吹口琴的钢铁侠 发表于 2016-2-4 12:41
同时能有几个PWM
对CPU占用有多少
每个GPIO都可以操作吗

这个还有待研究一下,我试了两个GPIO都可以~~可能是巧合了,以前看过一篇资源竟然找不到了
回复

使用道具 举报

凌风清羽  中级技匠
 楼主|

发表于 2016-2-4 17:17:55

孙毅 发表于 2016-2-4 10:28
啊 @凌风清羽 以后要主动去陈老师房间,“教”他

今天大家都在我这里炸啦~~
回复

使用道具 举报

hnyzcj  版主

发表于 2016-2-4 18:40:57

凌风清羽 发表于 2016-2-4 17:17
今天大家都在我这里炸啦~~

哈哈,明天炸大肾
回复

使用道具 举报

凌风清羽  中级技匠
 楼主|

发表于 2016-2-4 21:12:04

hnyzcj 发表于 2016-2-4 18:40
哈哈,明天炸大肾

炸了大肾买iPhone7
回复

使用道具 举报

孙毅  初级技匠

发表于 2016-2-4 23:58:51


就是,炸的大肾,怎么买 肾7
回复

使用道具 举报

iooops  中级技匠 来自手机

发表于 2016-2-6 17:32:42

啊我的树莓派
回复

使用道具 举报

ldsgrh  见习技师

发表于 2017-12-1 18:32:41

备用学习
回复

使用道具 举报

蛋脑花  学徒

发表于 2021-7-31 16:36:00

请问树莓派rpi.gpio库可以更改pwm的占空比范围吗?比如将0到100 提高到 0到1000的范围
回复

使用道具 举报

蛋脑花  学徒

发表于 2021-7-31 16:43:37

蛋脑花 发表于 2021-7-31 16:36
请问树莓派rpi.gpio库可以更改pwm的占空比范围吗?比如将0到100 提高到 0到1000的范围 ...

只能通过提高PWM的控制频率来提高控制精度吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail