• ESP8266——PWM


    1.脉冲宽度调制(PWM)

      脉冲宽度调制 (PWM) 是一种在数字引脚上获取人工模拟输出的方法。它通过快速切换引脚从低到高来实现这一点。有两个参数与此相关:切换频率和占空比。占空比定义为与单个周期长度(低加高时间)相比,销的高度。最大占空比是引脚一直高时,最小值是一直低时。

    在 ESP8266 上,引脚 0、2、4、5、12、13、14 和 15 均支持 PWM。限制是它们必须都在同一频率,并且频率必须介于 1Hz 和 1kHz 之间。

    要在引脚上使用 PWM,必须首先创建引脚对象,例如:

    >>> import machine
    >>> p12 = machine.Pin(12)

    然后使用以下功能创建 PWM 对象:

    >>> pwm12 = machine.PWM(p12)

    您可以使用以下功能设置频率和占空比:

    >>> pwm12.freq(500)
    >>> pwm12.duty(512)

    请注意,占空比介于 0(全部关闭)和 1023(全部打开)之间,512 为 50% 的关税。超出此最小值/最大值的值将被剪切。如果打印 PWM 对象,它将告诉您其当前配置:

    >>> pwm12
    PWM(12, freq=500, duty=512)

    还可以调用 和 方法,无需任何参数来获取其当前值。freq()duty()

    引脚将继续处于 PWM 模式,直到您使用以下方式取消初始化:

    >>> pwm12.deinit()

     2.指示灯褪色

    让我们使用 PWM 功能淡化 LED。假设主板的 LED 连接到引脚 2(ESP-12 模块连接),我们可以使用:

    >>> led = machine.PWM(machine.Pin(2), freq=1000)

    请注意,我们可以在 PWM 构造函数中设置频率。

    对于下一部分,我们将使用计时和一些数学,所以导入这些模块:

    >>> import time, math

    然后创建一个函数来脉冲 LED:

    >>> def pulse(l, t):
    ...     for i in range(20):
    ...         l.duty(int(math.sin(i / 10 * math.pi) * 500 + 500))
    ...         time.sleep_ms(t)

    您可以使用:

    >>> pulse(led, 50)

    为了获得良好的效果,您可以连续多次脉冲:

    >>> for i in range(10):
    ...     pulse(led, 20)

    请记住,您可以使用 ctrl-C 来中断代码。

    3.控制业余伺服

      使用 PWM 可以控制霍比伺服电机。它们需要 50Hz 的频率,然后需要大约 40 到 115 之间的关税,其中 77 是中心值。如果将伺服连接到电源和接地引脚,然后将信号线连接到引脚 12(其他引脚也能正常工作),则可以使用以下方式控制电机:

    >>> servo = machine.PWM(machine.Pin(12), freq=50)
    >>> servo.duty(40)
    >>> servo.duty(115)
    >>> servo.duty(77)
  • 相关阅读:
    easyui 之ComboTree 用法Demo
    sql like in 语句获取以逗号分割的字段内的数据
    基于Lumisoft.NET组件的POP3邮件接收和删除操作
    如何在滚动报表时保持标题可见 (Reporting Services)
    5个最顶级jQuery图表类库插件-Charting plugin
    无限极分类查询
    JS编码,解码. asp.net(C#)对应解码,编码
    JQuery.Ajax之错误调试帮助信息
    项目经理需要具备的11项人际关系软技能
    jquery easyui DataGrid 动态的改变列显示的顺序
  • 原文地址:https://www.cnblogs.com/iBoundary/p/11987436.html
Copyright © 2020-2023  润新知