【DigiKey好物畅享】+Adafruit+RP2040 MacroPad+micropython开发使用(3)
五、软件开发体验:CircuitPython 生态支持最为完善
CircuitPython 是 Adafruit 基于 MicroPython 深度定制和长期维护的分支,而 MacroPad 在 CircuitPython 生态下,拥有当前最完整、最成熟的软件支持。
这并非 MCU 或硬件层面的限制,而是 生态投入与抽象封装程度的差异。
在 CircuitPython 下,MacroPad 提供了高度集成的硬件对象与功能封装,包括但不限于:
按键对象(Keys)
NeoPixel 灯珠对象
旋转编码器对象
OLED 显示对象
蜂鸣器音调封装(Tone / Audio)
USB HID(键盘 / 鼠标 / 消费者控制)
USB MIDI 封装
完整的官方示例代码体系
这些能力使得 MacroPad 在 CircuitPython 下,几乎不需要接触底层驱动代码,就可以快速构建完整的人机交互应用。
下面整理的是官方示例代码的功能说明文档,可作为 MacroPad RP2040 的开发参考索引。
开发工具体验
Mu 编辑器官方推荐:链接放不了了,超过新用户限制了
实际体验:
上手简单
但对我来说不够高效
更适合教学或快速验证
VS Code + CircuitPython
我更习惯使用 VS Code 编写代码
Mu 用于串口调试
目前 CircuitPython v2 插件存在一定稳定性问题,无法正常工作
CircuitPython固件烧录
按下编码器插电开机会进入UF2烧录模式,会弹出一个小u盘,把固件拖入到里面即可自动烧录重启
烧录完成以后我习惯配置一下常用库,库的更新官方给的第一方法是直接下载包,复制粘贴到Adafruit MacroPad的文件夹中,但是我选择用一个工具来一件下载,首先确认你配置好了python环境和环境变量,然后安装CircUp
pip install setuptools
pip install circup
安装好了以后,输入
Circup --version
正常安装会打印版本号,再次输入
circup install adafruit_macropad
一键安装 MacroPad 常用库(不成功检测网络环境,需要github魔法)
还有两个好用的命令
circup install -r
它会扫描:
code.py
/lib
所有 import xxx
然后自动下载缺失的库
circup update
一键更新所有库
示例程序体验
官方示例中有一个非常有代表性的 Demo:
macropad_tone_keypad_extended.py
刷入后即可实现:
OLED 显示
旋钮控制
RGB 灯效
蜂鸣器发声
的 小型键盘音乐播放器,非常适合理解整块板子的能力边界。我调节了一下蜂鸣器的频率,下面是这个MacroPad 的声音体验
from rainbowio import colorwheel # 导入颜色轮函数,用于生成渐变颜色
from adafruit_macropad import MacroPad # 导入 MacroPad 类
# 创建 MacroPad 实例,后续通过该对象访问按键、像素和蜂鸣器等功能
macropad = MacroPad()
# 每个按键对应的音调(Hz),共 12 个按键
tones = [784, 880, 988, 1175, 1319, 1568, 1760, 1976, 2349, 2637, 3136, 3520]
# 主循环:持续监听按键事件
while True:
# 从事件队列中读取按键事件(如果有的话)
key_event = macropad.keys.events.get()
# 如果有按键事件,处理按下或释放的情况
if key_event:
# 按键被按下:点亮对应按键颜色并开始发声
if key_event.pressed:
# 使用 colorwheel 根据按键编号计算颜色值,给该按键的 LED 上色
macropad.pixels[key_event.key_number] = colorwheel(int(255 / 12) * key_event.key_number)
# 播放对应频率的音调
macropad.start_tone(tones[key_event.key_number])
# 按键被释放:关闭所有按键灯并停止发声
else:
macropad.pixels.fill((0, 0, 0)) # 将所有像素设为关闭(黑色)
macropad.stop_tone() # 停止音调
蜂鸣器演示
六-写一个简单游戏-打地鼠
打砖块分为3个难度,不同难度,亮着的按键停留时间不一样
def get_mole_speed():
“”“Get the time between mole changes in seconds.”“”
speeds = [2.0, 1.2, 0.6] # 简单、普通、困难
return speeds[min(difficulty - 1, 2)]
计分系统,按对给分,连对递增,按错不计分
if key_event.key_number == active_key:
# 按对了!
score += 10 + combo
combo += 1
play_correct_tone()
start_new_mole()
else:
# 按错了
play_error_tone()
combo = 0
start_new_mole()
为了增加打击手感,设计了递增音效频率,提升了游玩手感
def play_correct_tone():
“”“Play a tone that increases with combo.”“”
freq = 800 + (combo * 50) # 基础800Hz + 每连击50Hz
freq = min(freq, 2000) # 上限2000Hz
macropad.start_tone(freq)
time.sleep(0.1)
macropad.stop_tone()
直接来看游戏视频,代码和详细的产品逻辑说明放在文章的附件里面了
总结:精致的极客玩具
虽然 MacroPad RP2040 发布于 2021 年,但放在 2025 年的今天,它依然毫不过时 。
作为产品:它布局合理,用料扎实,颜值在线。
作为开发板:它生态完善,开源资料详尽。
相比直接作为成品使用,我更感兴趣的是基于它完整的开源硬件资料,去延伸设计一款**支持无线通信、内置电池的开源小键盘**,把它真正做成一个日常可用、又极具可玩性的输入设备。
虽然这款 MacroPad RP2040 发布于 2021 年,距今已经 4 年,但放到 2025 年来看,它的整体设计依然非常耐看,无论是布局、用料还是可玩性,都没有明显的“过时感”。
下一期我将和大家分享 **QMK 固件的使用与配置**,包括基础上手和一些实用玩法,敬请期待。
附件:
开源pcb
micropython的示例代码-有一个redme文档可以快速看看介绍
敲砖块代码+说明文档
通过网盘分享的文件:Adafruit MacroPad RP2040.zip
链接: https://pan.baidu.com/s/1gOAJWduY1GuA3hVRafFcfg?pwd=0000 提取码: 0000
–来自百度网盘超级会员v4的分享


