本文讲述了一个 3 分钟编写一个光环板扩展的方法,以 WS2812 扩展为模板进行说明。**

WS2812介绍

主要特点:

  • 控制电路与 RGB 芯片集成在一个 5050 封装的元器件中,构成一个完整的外控像素点。
  • 内置信号整形电路,任何一个像素点收到信号后经过波形整形再输出,保证线路波形畸变不会累加。
  • 内置上电复位和掉电复位电路。
  • 每个像素点的三基色颜色可实现 256 级亮度显示,完成 16777216 种颜色的全真色彩显示,扫描频率不低于400Hz/s。
  • 串行级联接口,能通过一根信号线完成数据的接收与解码。
  • 任意两点传传输距离在不超过 5 米时无需增加任何电路。
  • 当刷新速率 30 帧/秒时,低速模式级联数不小于 512 点,高速模式不小于 1024 点。
  • 数据发送速度可达 800Kbps。
  • 光的颜色高度一致,性价比高。

    用途:

    其主要应用领域有LED全彩发光字灯串,全彩LED模组,LED像素屏,各种电子产品,电子设备跑马灯等。

【光环板扩展】为光环板编写扩展只需3分钟 - 图1

WS2812 扩展设计准备工作

目标:实现光环板驱动 WS2812

知识点:

  • 光环板的硬件核心是 ESP32。
  • 软件核心是 MicroPython。
  • WS2812 是 LED 灯带。

资料:MicroPython、NeoPixels、WS2812、mext

准备工作:软件、硬件、资料准备妥当,先在慧编程 Python 代码区将 WS2812 驱动起来吧!Python 代码的调试就不进行详细说明了。
本文直接为你提供 Python 代码,见文末的附件。
代码调试成功以后就可以开始慧编程积木设计的 3 分钟了。

WS2812 扩展设计具体步骤

步骤1:登陆扩展设计器(第1分钟)

设计器运行在web界面,登录地址为: https://ext.makeblock.com

【光环板扩展】为光环板编写扩展只需3分钟 - 图2

步骤2:新建扩展

**
在“我的插件”下,选择“我的扩展”,点击“新建扩展”,然后点击“通用模版”,点击确定之后,弹出基本信息填写框:

【光环板扩展】为光环板编写扩展只需3分钟 - 图3

【光环板扩展】为光环板编写扩展只需3分钟 - 图4

步骤3:填写基本信息

**
【光环板扩展】为光环板编写扩展只需3分钟 - 图5

以上红框4项必须设置。点确定进入下一步骤。

步骤4:添加分类和积木

**
【光环板扩展】为光环板编写扩展只需3分钟 - 图6

在“我的插件”下,选择“我的扩展”,出现扩展列表,在操作栏点击编辑按钮,开始进入添加分类和积木的界面。
扩展的配置包含六个页签,对于 WS2812 扩展,公共代码配置、自定义组件、翻译设置这三项无需配置。基本信息已经设置。

1、点击“转码设置”页签,将“支持的转码语言”设置为 Python,然后点击“保存”。

【光环板扩展】为光环板编写扩展只需3分钟 - 图7

2、点击“积木配置”页签, 点击“新增分类”。
在弹出的编辑区将分类名称设置为 WS2812,点击“保存”。
【光环板扩展】为光环板编写扩展只需3分钟 - 图8

至此,1 分钟已经过去,继续下面的操作吧!

步骤5:设计语句块(第2分钟)

点击“积木列表”下方的“+”添加积木,然后选中积木,开始配置该积木详细信息。

【光环板扩展】为光环板编写扩展只需3分钟 - 图9

:::tips 提示:
有关参数设置的详细说明,参见“设置内容”。
积木类型的相关描述,参见“积木类型”。
更多规范和约定,参见“积木设计规范”。 :::

到此,第 2 分钟也过去了!

步骤6:填写转码(第3分钟)

点击“上传转码”。 选中如下积木,点击“上传转码”标签,import 项、lib 项、loop 项无需填写,双击 code 项的黑色区域弹出代码输入界面。

【光环板扩展】为光环板编写扩展只需3分钟 - 图10

代码输入界面

【光环板扩展】为光环板编写扩展只需3分钟 - 图11

输入代码后点击右下角“确定”按钮即完成该积木的编辑工作。

:::tips 提示:上传转码与慧编程Python对应关系,引用变量语法:{lednumber}。 :::

【光环板扩展】为光环板编写扩展只需3分钟 - 图12

本例中用不到 loop项,无需填写。至此,3分钟已到,接下来测试一下写好的扩展吧!

验证 WS2812 扩展

**

步骤1:下载扩展到本地,并拖拽 halo_ws2812.mext 到慧编程 PC 端中

1、 在积木界面的右上角点击“下载”按钮。

【光环板扩展】为光环板编写扩展只需3分钟 - 图13

2、弹出的是打包界面,耐心等待打包完成。 打包成功后再点击“立即下载”。

【光环板扩展】为光环板编写扩展只需3分钟 - 图14

3、找到下载完成的halo_ws2812.mext文件,拖放到慧编程PC界面内。

【光环板扩展】为光环板编写扩展只需3分钟 - 图15

弹出更新成功提示即证明安装成功。

:::tips 提示:如果多次将同一扩展拖放到慧编程中,请等待弹出更新成功提示后,关闭慧编程,再重新打开,以便慧编程重新加载最新的mext文件。 :::

【光环板扩展】为光环板编写扩展只需3分钟 - 图16

步骤2:验证积木块

1、拖放积木到编程区

将左下角的模式切换要在“上传”模式、拖入一个事件积木。 然后点击右侧边栏处的“</>”按钮弹出代码界面。

【光环板扩展】为光环板编写扩展只需3分钟 - 图17

仔细核对积木块生成的代码。
【光环板扩展】为光环板编写扩展只需3分钟 - 图18

技巧:选中代码区的代码并复制,粘贴到Python编辑界面,下载并观察反馈信息。

【光环板扩展】为光环板编写扩展只需3分钟 - 图19

小结

扩展预览

【光环板扩展】为光环板编写扩展只需3分钟 - 图20

学习积木扩展技巧

除了根据教程按部就班的学习外,快速入门就是找一份已经写好的扩展,导入到设计器,参考着学习。一步就可以搞定了!
【光环板扩展】为光环板编写扩展只需3分钟 - 图21

【光环板扩展】为光环板编写扩展只需3分钟 - 图22

导入成功后即可参看已有的扩展设计方法。详细操作,参见“将扩展导入到扩展设计器”。

WS2812扩展包下载

halo_ws2812.rar

调试好的Python代码

  1. #generated by mBlock5 for HaloCode
  2. #codes make you happy
  3. import time, machine, event, halo from esp import neopixel_write RED = (255, 0, 0) YELLOW = (255, 255, 0) GREEN = (0, 255, 0) AQUA = (0, 255, 255) BLUE = (0, 0, 255) PURPLE = (148, 0, 211) INDIGO = (75, 0, 130) ORANGE = (255, 127, 0) COLORS = (RED, YELLOW, GREEN, AQUA, BLUE, PURPLE) RAINBOWS = (PURPLE, INDIGO, BLUE, GREEN, YELLOW, ORANGE, RED) class NeoPixel: ORDER = (1, 0, 2, 3)
  4. def __init__(self, pin, n, bpp=3, timing=1):
  5. self.pin = pin
  6. self.n = n
  7. self.bpp = bpp
  8. self.buf = bytearray(n * bpp)
  9. self.pin.init(pin.OUT)
  10. self.timing = timing
  11. def __setitem__(self, index, val):
  12. offset = index * self.bpp
  13. for i in range(self.bpp):
  14. self.buf[offset + self.ORDER[i]] = val[i]
  15. def __getitem__(self, index):
  16. offset = index * self.bpp
  17. return tuple(self.buf[offset + self.ORDER[i]]
  18. for i in range(self.bpp))
  19. def fill(self, color):
  20. for i in range(self.n):
  21. self[i] = color
  22. def fillone(self, ni, color):
  23. self[ni] = color
  24. def write(self):
  25. neopixel_write(self.pin, self.buf, self.timing)
  1. global neop neop = NeoPixel(machine.Pin(23), 10)
  2. @event.start def on_start():
  3. for color in RAINBOWS:
  4. neop.fill(color)
  5. neop.write()
  6. time.sleep(5*0.1)