【雕爷学编程】MicroPython手册之 pyboard 的内部 LED

在这里插入图片描述

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的pyboard是一种基于STM32F405RG微控制器的开发板,它可以运行MicroPython语言,实现各种有趣和有用的功能。它的主要特点有:

体积小巧,采用邮票孔设计,方便嵌入各种项目中。
内置了4个LED灯,1个开关,1个复位按钮,1个用户按钮,1个USB接口,1个SD卡插槽,1个RTC电池座等。
内置了三轴加速度计(MMA7660),可以检测板子的运动和倾斜。
支持完整的MicroPython语言功能,包括REPL交互模式,内置模块,文件系统操作等。
支持多种通信协议,如UART,SPI,I2C,CAN等。
支持多种外设和传感器的接入和控制,如LCD屏幕,音频放大器,温湿度传感器等。

在这里插入图片描述

MicroPython的pyboard的内部LED是一种利用pyboard上的四个LED灯来显示和控制状态的功能,它可以让用户通过简单的代码来实现LED灯的开关,亮度,闪烁等效果,也可以通过REPL交互模式来实时地调试和修改代码。

它的主要特点有:

简单性强,可以通过pyb模块中的LED类来创建和操作LED对象,无需配置其他参数和接口。
可视性好,可以通过LED灯的颜色和亮度来显示pyboard的状态,如电源,错误,警告等。
灵活性高,可以通过pyb模块中的delay函数和Timer类来实现LED灯的延时和定时功能,也可以通过pyb模块中的ExtInt类和Switch类来实现LED灯的外部中断和开关功能。

pyboard的内部LED的应用场景有:

作为教学和学习的工具,可以让学生通过编写代码来控制pyboard上的LED灯,学习基本的电子和编程知识。
作为创意和娱乐的工具,可以让用户通过连接各种传感器和模块到pyboard上,实现各种有趣的项目,如流水灯,呼吸灯,彩虹灯等。
作为研发和测试的工具,可以让开发者通过编写代码来控制pyboard上的LED灯,显示和调试自己的程序和设计。

使用pyboard的内部LED时需要注意的事项有:

pyboard需要通过USB线连接到电脑上,并安装相应的驱动程序才能使用。
pyboard需要使用MicroPython专用的IDE或者编辑器来编写和下载代码到板子上。
pyboard需要注意电源管理和供电方式,避免过载或者短路造成损坏。
pyboard需要注意与外部设备或传感器的兼容性和连接方式,避免引脚冲突或者信号干扰。

以下是一些关于pyboard的内部LED的代码案例:

案例1:实现流水灯效果:

# 导入pyb模块
import pyb
# 创建四个LED对象
leds = [pyb.LED(i) for i in range(1, 5)]
# 循环无限次
while True:
    # 遍历四个LED对象
    for led in leds:
        # 点亮当前LED灯
        led.on()
        # 延时100毫秒
        pyb.delay(100)
        # 熄灭当前LED灯
        led.off()

案例2:实现呼吸灯效果:

# 导入pyb模块
import pyb
# 创建一个LED对象
led = pyb.LED(4)
# 设置初始强度为0
intensity = 0
# 设置初始增量为1
increment = 1
# 循环无限次
while True:
    # 设置LED灯的强度
    led.intensity(intensity)
    # 增加或减少强度值
    intensity += increment
    # 如果强度达到最大值或最小值
    if intensity > 255 or intensity < 0:
        # 反转增量方向
        increment = -increment
    # 延时10毫秒
    pyb.delay(10)

案例3:实现彩虹灯效果:

# 导入pyb模块
import pyb
# 创建四个LED对象
leds = [pyb.LED(i) for i in range(1, 5)]
# 设置初始颜色索引为0
index = 0
# 设置颜色列表
colors = [(255, 0, 0), (255, 127, 0), (255, 255, 0), (0, 255, 0), (0, 0, 255), (75, 0, 130), (148, 0, 211)]
# 循环无限次
while True:
    # 遍历四个LED对象
    for i in range(4):
        # 获取当前LED灯的颜色值
        r, g, b = colors[(index + i) % len(colors)]
        # 设置当前LED灯的颜色值
        leds[i].rgb(r, g, b)
    # 增加颜色索引值
    index += 1
    # 延时500毫秒
    pyb.delay(500)

案例4:LED闪烁程序:

import pyb
import time

led = pyb.LED(2)  # 使用LED 2

while True:
    led.toggle()  # 翻转LED状态
    time.sleep(1)  # 等待1秒

这个程序使用 MicroPython 控制 pyboard 上的 LED 2,通过循环让 LED 闪烁。

案例5:LED呼吸灯效果程序::

import pyb
import time

led = pyb.LED(3)  # 使用LED 3

brightness = 0
fade_amount = 5

while True:
    led.intensity(brightness)  # 设置LED亮度
    brightness += fade_amount

    if brightness <= 0 or brightness >= 100:
        fade_amount = -fade_amount

    time.sleep(0.05)  # 延时0.05秒

这个程序使用 MicroPython 控制 pyboard 上的 LED 3,通过改变 LED 的亮度实现呼吸灯效果。

案例6:LED闪烁与按键控制程序::

import pyb

led = pyb.LED(4)  # 使用LED 4
button = pyb.Switch()  # 使用内置按钮

while True:
    if button.value():  # 判断按钮状态
        led.on()  # 打开LED
    else:
        led.off()  # 关闭LED

这个程序使用 MicroPython 控制 pyboard 上的 LED 4,并根据按钮的状态控制 LED 的开关。这些代码示例展示了 MicroPython 在控制 pyboard 上的内部 LED 上的实际应用,包括闪烁、呼吸灯效果和与按键的交互。请注意,这些示例代码可能需要根据具体的硬件配置和接口进行适当的调整。

案例7:控制内部 LED 灯的闪烁:

import pyb

led = pyb.LED(1)  # 初始化 LED 对象

while True:
    led.toggle()  # 切换 LED 状态
    pyb.delay(1000)  # 延时 1 秒

在上述示例中,我们使用 pyb.LED(1) 初始化一个 LED 对象,其中参数 1 表示内部 LED 的编号。通过调用 toggle() 方法,我们可以切换 LED 的状态(开/关),然后使用 pyb.delay() 函数进行延时操作,以创建闪烁效果。该程序将持续循环执行,使内部 LED 灯不断闪烁。

案例8:使用按钮控制内部 LED 灯::

import pyb

led = pyb.LED(1)  # 初始化 LED 对象
button = pyb.Switch()  # 初始化按钮对象

while True:
    if button():  # 检测按钮状态
        led.toggle()  # 切换 LED 状态
        while button():  # 等待按钮释放
            pass

在上述示例中,我们使用 pyb.Switch() 函数实例化一个按钮对象,并使用 pyb.LED(1) 初始化一个 LED 对象。通过检测按钮状态(button() 方法),我们可以根据按钮的按下和释放来切换内部 LED 灯的状态。程序将持续循环,等待按钮按下时切换 LED 的状态,并在按钮释放后等待下一次按下。

案例9:使用PWM调节内部 LED 灯的亮度::

import pyb

led = pyb.LED(1)  # 初始化 LED 对象
timer = pyb.Timer(4, freq=1000)  # 初始化定时器对象
channel = timer.channel(2, pyb.Timer.PWM, pin=pyb.Pin.board.PA3)  # 初始化定时器通道对象

duty_cycle = 50  # 初始占空比为50%

while True:
    channel.pulse_width_percent(duty_cycle)  # 设置占空比
    duty_cycle = (duty_cycle + 10) % 101  # 增加占空比
    pyb.delay(1000)  # 延时 1 秒

在上述示例中,我们使用 pyb.LED(1) 初始化一个 LED 对象,并使用 pyb.Timer() 初始化一个定时器对象。通过调用 channel() 方法,我们初始化定时器通道对象,将其配置为 PWM 模式,并指定与内部 LED 相关联的引脚(此处使用 PA3 引脚)。通过调用 pulse_width_percent() 方法,我们可以设置 PWM 的占空比,从而调节内部 LED 的亮度。程序将持续循环,每隔1秒增加一次占空比,实现亮度逐渐增加的效果。注意,上述示例中的代码可能需要根据您的具体情况进行调整,例如选择正确的 LED 编号、引脚配置和定时器参数等。这些示例演示了如何在 MicroPython 中使用 Pyboard 控制内部 LED 的一些常见功能,您可以根据自己的需求进行进一步扩展和修改。

请注意,以上示例仅供参考,具体的使用方法可能因不同的硬件平台和MicroPython版本而有所差异。在实际编程中,你需要根据你所使用的硬件和具体需求进行适当的调整。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

驴友花雕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值