【雕爷学编程】MicroPython手册之 WiPy 特定端口库 wipy.machine.TimerWiPy.pulse_width_percent()

MicroPython是为了在嵌入式系统中运行Python 3编程语言而设计的轻量级版本解释器。与常规Python相比,MicroPython解释器体积小(仅100KB左右),通过编译成二进制Executable文件运行,执行效率较高。它使用了轻量级的垃圾回收机制并移除了大部分Python标准库,以适应资源限制的微控制器。

MicroPython主要特点包括:
1、语法和功能与标准Python兼容,易学易用。支持Python大多数核心语法。
2、对硬件直接访问和控制,像Arduino一样控制GPIO、I2C、SPI等。
3、强大的模块系统,提供文件系统、网络、图形界面等功能。
4、支持交叉编译生成高效的原生代码,速度比解释器快10-100倍。
5、代码量少,内存占用小,适合运行在MCU和内存小的开发板上。
6、开源许可,免费使用。Shell交互环境为开发测试提供便利。
7、内置I/O驱动支持大量微控制器平台,如ESP8266、ESP32、STM32、micro:bit、掌控板和PyBoard等。有活跃的社区。

MicroPython的应用场景包括:
1、为嵌入式产品快速构建原型和用户交互。
2、制作一些小型的可 programmable 硬件项目。
3、作为教育工具,帮助初学者学习Python和物联网编程。
4、构建智能设备固件,实现高级控制和云连接。
5、各种微控制器应用如物联网、嵌入式智能、机器人等。

使用MicroPython需要注意:
1、内存和Flash空间有限。
2、解释执行效率不如C语言。
3、部分库函数与标准版有差异。
4、针对平台优化语法,订正与标准Python的差异。
5、合理使用内存资源,避免频繁分配大内存块。
6、利用原生代码提升速度关键部位的性能。
7、适当使用抽象来封装底层硬件操作。

总体来说,MicroPython让Python进入了微控制器领域,是一项重要的创新,既降低了编程门槛,又提供了良好的硬件控制能力。非常适合各类物联网和智能硬件的开发。
在这里插入图片描述

MicroPython 是一种适用于微控制器的 Python 语言的精简实现,它可以让开发者使用 Python 语法和标准库来编写嵌入式应用程序。WiPy 是一种基于 ESP32 芯片的无线开发板,它支持运行 MicroPython 固件。MicroPython 特定于 WiPy 的库是一组为 WiPy 设计的模块,它们提供了 WiPy 的特有功能和硬件接口的访问。MicroPython 特定于 WiPy 的库的主要特点如下:

1、它包含了一些与 WiPy 相关的模块,如 machine, network, pycom, uos 等,它们分别提供了 WiPy 的机器级别控制,网络连接,灯光控制,操作系统接口等功能。
2、它还包含了一些通用的 MicroPython 模块,如 binascii, hashlib, math, random, struct, time 等,它们提供了一些常用的数据处理,加密,数学,随机数,数据结构,时间等功能。
3、它遵循了 MicroPython 的设计原则,即简洁,高效,可移植和兼容。

在这里插入图片描述
MicroPython的 wipy.machine.TimerWiPy.pulse_width_percent() 是一个用于设置或获取定时器通道的占空比的方法。占空比是指PWM信号在一个周期内处于高电平的时间占总时间的比例,用百分数表示。PWM信号是一种脉冲宽度调制的信号,可以用来控制电机、LED等设备的输出功率或亮度。

wipy.machine.TimerWiPy.pulse_width_percent() 的主要特点有:

它是 wipy.machine.TimerChannel 类的一个方法,需要先创建一个 TimerWiPy 对象和一个 TimerChannel 对象,然后调用该方法。
它的参数是一个整数,表示要设置的占空比,单位是百分数乘以100。例如,如果要设置占空比为50%,则参数为5000。
它的返回值也是一个整数,表示当前的占空比,单位是百分数乘以100。
它只适用于 PWM 模式的定时器通道,其他模式下无效。
它可以与 wipy.machine.TimerWiPy.freq() 或 wipy.machine.TimerWiPy.period() 配合使用,来控制 PWM 信号的频率或周期。

wipy.machine.TimerWiPy.pulse_width_percent() 的应用场景有:

控制电机的转速。通过设置定时器通道的占空比,可以调节电机的输出功率,从而改变电机的转速。例如,如果要让电机以最大速度旋转,可以设置占空比为100%,如果要让电机停止旋转,可以设置占空比为0%。
控制 LED 的亮度。通过设置定时器通道的占空比,可以调节 LED 的亮度。例如,如果要让 LED 全亮,可以设置占空比为100%,如果要让 LED 全暗,可以设置占空比为0%,如果要让 LED 呼吸灯效果,可以设置占空比为变化的值。
生成音乐。通过设置定时器通道的频率和占空比,可以生成不同音调和音量的声音。例如,如果要生成一个简单的乐曲,可以设置定时器通道为不同频率和占空比的序列。

以下是 MicroPython 的 wipy.machine.TimerWiPy.pulse_width_percent() 几个实际运用程序案例:

案例一:控制电机转速

from machine import TimerWiPy
from machine import Pin

# 创建一个 TimerWiPy 对象
tim = TimerWiPy(0, mode=TimerWiPy.PWM)

# 创建一个 TimerChannel 对象,并将其连接到 GP16 引脚
tim_ch = tim.channel(TimerWiPy.A, freq=1000)
pin = Pin('GP16', mode=Pin.ALT)
pin.alt_list()[0]1

# 设置不同的占空比来改变电机转速
tim_ch.pulse_width_percent(10000) # 电机全速旋转
tim_ch.pulse_width_percent(5000) # 电机半速旋转
tim_ch.pulse_width_percent(0) # 电机停止旋转

案例二:控制 LED 亮度

from machine import TimerWiPy
from machine import Pin

# 创建一个 TimerWiPy 对象
tim = TimerWiPy(0, mode=TimerWiPy.PWM)

# 创建一个 TimerChannel 对象,并将其连接到 GP17 引脚
tim_ch = tim.channel(TimerWiPy.A, freq=1000)
pin = Pin('GP17', mode=Pin.ALT)
pin.alt_list()[0]1

# 设置不同的占空比来改变 LED 亮度
tim_ch.pulse_width_percent(10000) # LED 全亮
tim_ch.pulse_width_percent(5000) # LED 半亮
tim_ch.pulse_width_percent(0) # LED 全暗

# 设置变化的占空比来实现呼吸灯效果
import time
while True:
    for i in range(0, 10000, 100):
        tim_ch.pulse_width_percent(i) # 逐渐增加亮度
        time.sleep(0.01)
    for i in range(10000, 0, -100):
        tim_ch.pulse_width_percent(i) # 逐渐减少亮度
        time.sleep(0.01)

案例三:生成音乐

from machine import TimerWiPy
from machine import Pin

# 创建一个 TimerWiPy 对象
tim = TimerWiPy(0, mode=TimerWiPy.PWM)

# 创建一个 TimerChannel 对象,并将其连接到 GP18 引脚
tim_ch = tim.channel(TimerWiPy.A, freq=440, pulse_width_percent=5000)
pin = Pin('GP18', mode=Pin.ALT)
pin.alt_list()[0]1

# 定义一些音符的频率(Hz)
C4 = 262
D4 = 294
E4 = 330
F4 = 349
G4 = 392
A4 = 440
B4 = 494
C5 = 523

# 定义一些音符的持续时间(秒)
whole = 1.5
half = 0.75
quarter = 0.375

# 定义一个简单的乐曲,每个元素是一个(频率,持续时间)的元组
song = [(C4, quarter), (D4, quarter), (E4, quarter), (F4, quarter),
        (G4, quarter), (A4, quarter), (B4, quarter), (C5, quarter),
        (C5, quarter), (B4, quarter), (A4, quarter), (G4, quarter),
        (F4, quarter), (E4, quarter), (D4, quarter), (C4, quarter)]

# 播放乐曲
import time
for note in song:
    freq, duration = note # 解包频率和持续时间
    tim_ch.freq(freq) # 设置频率
    tim_ch.pulse_width_percent(5000) # 设置占空比为50%
    time.sleep(duration) # 等待持续时间
    tim_ch.freq(0) # 停止声音
    time.sleep(0.05) # 留出间隙

案例四:设置 PWM 输出占空比:

from machine import Timer

timer = Timer(Timer.PWM, pin='P16', frequency=1000)
timer.pulse_width_percent(50)

案例五:读取 PWM 当前占空比:

percent = timer.pulse_width_percent()

案例六:动态修改占空比:

timer.pulse_width_percent(30)
...
timer.pulse_width_percent(80)

第一个例子使用 50% 的占空比输出 PWM 信号。第二个例子读取定时器当前占空比设置。第三个例子根据需要动态调整占空比。pulse_width_percent() 函数用于读取和设置 PWM 输出的占空比,以百分比表示脉冲宽度。通过调整占空比可以实现类比级别的控制,在控制电机速度等应用中常用。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值