我想问在这个程序之中,进入循环之后,PWM的频率发生了怎样的变化?

我是外星人 2019-08-141353 次点击
在http://shumeipai.nxez.com/2014/11/13/rpi-gpio-module-pwm-basic-function.html 网页里面有这样一个程序:
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.OUT)

p = GPIO.PWM(12, 50) # 通道为 12 频率为 50Hz
p.start(0)
try:
while 1:
for dc in range(0, 101, 5):
p.ChangeDutyCycle(dc)
time.sleep(0.1)
for dc in range(100, -1, -5):
p.ChangeDutyCycle(dc)
time.sleep(0.1)
except KeyboardInterrupt:
pass
p.stop()
GPIO.cleanup()
可见这个程序一开始的时候通过“p = GPIO.PWM(12, 50) ”定义了通道为12,频率为50Hz的PWM。
但后面又进入了循环:
for dc in range(0, 101, 5):
p.ChangeDutyCycle(dc)
time.sleep(0.1)
for dc in range(100, -1, -5):
p.ChangeDutyCycle(dc)
time.sleep(0.1)
这个频率显然很可能不是原来那个了。
求问进入这个循环的频率如何计算?并且通道的大小有没有变化?
这将有利于我分析其他类似的情况。
收藏 ♥ 感谢
Spoony 小组长 2019-08-15  ♥ 1
两个循环分别是让LED全亮,再让LED全暗。
频率 50Hz,这个可以自己设定。关键是 dc 这个变量,用来定义 PWM 的震荡幅度。
深入理解建议啃一下文档 https://code.google.com/p/raspberry-gpio-python/wiki/PWM

另外还有一个例子
http://shumeipai.nxez.com/2017/06/01/raspberry-pi-gpio-control-rgb-color-led-lights.html

登录注册 后可回复。