用地图演奏蜂鸣器音乐

CoCube 不仅能在定位地图上移动,也能把音乐地图变成一架可以滑动演奏的电子琴。在这个案例中,我们不需要连接 MIDI 模块,只使用 CoCube 自带的蜂鸣器就能演奏音乐。

在线程序:在 MicroBlocks 中打开程序

程序文件:Buzzer.ubp

1. 准备工作

你需要准备:

  • 一台 CoCube
  • CoCube 音乐地图
  • 安装了 MicroBlocks 的电脑或平板

将 CoCube 连接到 MicroBlocks,打开并运行程序。把机器人放在音乐地图上,用手推动它经过不同的琴键,就能听到不同音高。

选用:3D 打印支架

直接推动 CoCube 时,轮子与地图之间会产生阻力。目录中提供了一个底盘支架,3D打印后可以将机器人的轮子稍微架起,让 CoCube 在音乐地图上滑动得更加顺畅。

下载 CoCube 底盘支架 STL 文件

3D打印完成后,将支架安装在 CoCube 底部,再用手推动机器人演奏。支架只用于手动滑动体验,运行电机前请先取下。

2. 音乐地图如何发声

CoCube 可以读取脚下区域的“卡片 ID”。音乐地图上的琴键使用 60–84 作为编号,这些数字同时也是 MIDI 音符编号。

例如:

  • 60:中央 C
  • 61:升 C
  • 62:D
  • 编号每增加 1,音高升高一个半音

Tone 积木库中的“开始 MIDI 音符”积木可以直接把这些编号转换成蜂鸣器音高,因此不需要另外制作音符对照表。

3. 完整程序

用蜂鸣器在地图上演奏音乐

程序只使用两个变量:

  • key:当前读取到的卡片 ID。
  • last_key:上一次读取到的卡片 ID。
读取当前琴键

程序不断读取 CoCube 的卡片 ID,并把结果保存到 key。

也就是把“CoCube 卡片 ID”赋值给 key。

只在琴键变化时切换声音

当 key 和 last_key 不同时,说明 CoCube 已经进入了另一个区域。只有这时才切换音符,可以避免机器人停在同一个琴键上时不断重新启动声音。

播放和停止音符

琴键发生变化后,程序先停止上一个音符。如果新的卡片 ID 在 60–84 之间,就启动对应的 MIDI 音符。

当 CoCube 离开琴键区域时,卡片 ID 不在这个范围内,程序只会停止声音。最后用 last_key = key 记住当前状态。

10 毫秒的等待可以让程序保持灵敏,同时避免循环运行得过快。

4. 动手试一试

  • 在屏幕上显示当前的 key,观察每个琴键对应的编号。
  • 尝试记录 CoCube 经过的琴键,并让它自动重放刚才的旋律。
CC-BY-SA

© 来自 CoCube 2024-2026.

This work is licensed under a CC-BY-SA 4.0 license.