MicroPython_ESP32学习笔记三:脉冲宽度调制

什么是脉冲宽度调制?

脉冲宽度调制(PWM)是一种模拟信号控制技术,通过调整数字信号的占空比(即高电平时间与总周期时间的比例)来模拟不同级别的模拟信号。这在电机控制、LED 调光等方面非常有用。

在 MicroPython ESP32 上,你可以使用 PWM 来控制连接到 GPIO 引脚的设备。下面是一个简单的示例,展示如何在 ESP32 上设置和使用 PWM.

  1. 导入必要的库:
from machine import Pin, PWM

  1. 设置 PWM:
    引脚 的初始化
pwm = PWM(Pin(2))

也可以在初始化时设置其频率和占空比如下:
频率设置范围为1HZ~40MHZ(40 000 000HZ)

pwm0 = PWM(Pin(2), freq=5000)
  1. 配置 PWM 参数:
    freq:PWM 的频率(Hz)。
    duty:PWM 的占空比(0 到 1023 的整数)。
# 设置频率为 1000 Hz,占空比为 512 (即 50%)  
pwm.freq(1000)  
pwm.duty(512)

示例1:
PWM调光

import machine,time

# 创建PWM对象
led = machine.PWM(machine.Pin(2), freq=1000)

while True:
    # 占空比从 0 到 1023 增加
    for i in range(0, 1024):
        led.duty(i)
        time.sleep_ms(5)
    # 占空比从 1023 到 0 减少
    for i in range(0, 1024):
        led.duty(1023 - i)
        time.sleep_ms(5)

示例2:控制舵机
舵机的控制信号周期为20ms,所以频率为50(1000ms/50=20ms)。
舵机的信号为500us~2500us,对应角度为0 ~ 180度。占空比的设置范围为0 ~ 1023,对就0 ~ 100%的占空比。

from machine import Pin
from machine import PWM
import time


pwm=PWM(Pin(2))
pwm.freq(50)

def Servo(servo, angle):
    # angle / 180( * 2(0°-180°) + 0.5()/ 20ms * 1023
    servo.duty(int(((angle)/180 *2 + 0.5) / 20 * 1023))    
 
while True:20
	Servo(pwm,0)
	time.sleep_ms(1000)
	Servo(pwm,180)
	time.sleep_ms(1000)

示例3:控制蜂鸣器

import machine
import time
#初始化
pwm = machine.Pin(2, machine.Pin.OUT) 

pwm = machine.PWM(buzzer_pin, freq=5000) #频率为5000
pwm .duty(512)  # 50%的音量
time.sleep(1)  # 延时1秒钟
pwm .deinit()  # 停止蜂鸣器

联系我们
扫码或者点这里加群了解更多!

Created by qdprobot

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值