raspberry pi (2) GPIO, PWM和双色LED

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guzhou_diaoke/article/details/88833247
  1. PWM
    脉宽调制(PWM)是指用微处理器的数字输出来对模拟电路进行控制,是一种对模拟信号电平进行数字编码的方法。在树莓派上,可以通过对GPIO的编程来实现PWM。
    简单说就是在对应的引脚产生类似于方波似的波形,可以通过设置相应的参数直接来控制波形的周期,以及高电平在整个波形中所占的比例。

  2. 占空比
    占空比(Duty Cycle)有如下含义: 在一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。例如:脉冲宽度1μs,信号周期4μs的脉冲序列,占空比为0.25。 即在一段连续工作时间内脉冲占用的时间与总时间的比值。
    在这里插入图片描述

  3. 频率
    PWM的频率是指每秒钟信号从高电平到低电平再回到高电平的次数,占空比是高电平持续时间和低电平持续时间之间的比例。

  4. 例子

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)

p1 = GPIO.PWM(11, 2)
p1.start(80)

input('press return to stop')

p1.stop()
GPIO.cleanup()

GPIO.PWM(11, 2) 表示频率为2,对应到LED则每秒从高电平到低电平再回到高电平2次;
p1.start(80) 表示占空比为80,每个时钟周期内,高电平:低电平为80:20
运行程序的效果:红色LED每秒闪烁两次。
修改p1.start(20),依然每秒闪烁两次,但红色LED亮的时间:灭的时间比例变小。
修改p1 = GPIO.PWM(11, 10),每秒闪烁10次。

  1. 亮暗变化
import RPi.GPIO as GPIO 
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(12, GPIO.OUT)

p1 = GPIO.PWM(11, 100)
p2 = GPIO.PWM(12, 100)
p1.start(0)
p2.start(0)

try:
    while True:
        for dc in range(0, 101, 5):
            p1.ChangeDutyCycle(dc)
            p2.ChangeDutyCycle(dc)
            time.sleep(0.1)
        for dc in range(100, -1, -5):
            p1.ChangeDutyCycle(dc)
            p2.ChangeDutyCycle(dc)
            time.sleep(0.1)
except KeyboardInterrupt:
    pass    

p1.stop()
p2.stop()
GPIO.cleanup()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/guzhou_diaoke/article/details/88833247