心愿

2019-07-071851
精华项目
AI 快速预览详细 收起
本文介绍了一个使用Micro:bit进行音乐编程的项目教程。通过学习简谱和节拍设置,用户可以编写代码来播放《心愿》歌曲。项目所需材料包括Micro:bit、掌控I/O扩展板和电池盒。教程详细讲解了如何设置基本速度、对照简谱设置音符参数,并提供了完整的代码示例。此外,还展示了电路连接方式。这个项目适合初学者和STEM教育场景,能够帮助孩子提升音乐感知能力和编程技能。

这个作品是刚开始学习 Micro:bit 的时候创作的,由四个女生演唱的歌曲《心愿》。

材料清单

步骤1 学习乐曲编程

首先要会看简谱。简谱音符上面有个点代表高音,下面有个点代表低音,没有点就是中音。其次要会看节拍。简谱音符没有下划线为一拍,一根下划线为二分之一拍,两根下划线为四分之一拍。减号是休止符,代表一拍。下面以诺基亚经典铃声为例,介绍乐曲编程的过程。

project-image

首先设置乐曲的基本速度。这个可以以后调整,暂定为 100,也就是每分钟 100 个节拍。

然后开始对照简谱一一设置每个音符的参数:具体是哪个音符,是高音、低音还是中音(没有点),到底是几拍的。这里我们假设没有下划线的为一拍。编写好的代码如下,就是比较费时间。

project-image

步骤2 编写代码

搜索《心愿》的简谱。

project-image

对照简谱完成代码编写。其中重复的部分用到了循环结构,以减少重复操作。当然复制也可以,但是代码就更长了~~~~~

project-image

最后就是那么长!!!

代码
#include <Microbit_Sound.h>

void setup() {
	MSound.setSpeed(100);
}

void loop() {
	for (int count = 0; count < 2; count++) {
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_1_2);
		MSound.playTone(0, 330, BEAT_1);
		MSound.playTone(0, 330, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1);
		MSound.playTone(0, 294, BEAT_1_4);
		MSound.playTone(0, 330, BEAT_2);
		MSound.playTone(0, 294, BEAT_1_2);
		MSound.playTone(0, 220, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1);
		MSound.playTone(0, 262, BEAT_1);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 220, BEAT_2);
		MSound.playTone(0, 220, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 247, BEAT_1);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 220, BEAT_1_2);
		MSound.playTone(0, 196, BEAT_1);
		MSound.playTone(0, 196, BEAT_1_4);
		MSound.playTone(0, 247, BEAT_2);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 196, BEAT_1_2);
		MSound.playTone(0, 220, BEAT_1);
		MSound.playTone(0, 220, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 220, BEAT_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_1_2);
		MSound.playTone(0, 330, BEAT_1);
		MSound.playTone(0, 330, BEAT_1_2);
		MSound.playTone(0, 392, BEAT_1_2);
		MSound.playTone(0, 392, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_1_2);
		MSound.playTone(0, 330, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_1);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_1);
		MSound.playTone(0, 294, BEAT_1_2);
		MSound.playTone(0, 330, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 220, BEAT_1);
		MSound.playTone(0, 220, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 247, BEAT_1);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 220, BEAT_1_2);
		MSound.playTone(0, 196, BEAT_1);
		MSound.playTone(0, 196, BEAT_1_4);
		MSound.playTone(0, 247, BEAT_2);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 196, BEAT_1_2);
		MSound.playTone(0, 220, BEAT_1);
		MSound.playTone(0, 220, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 220, BEAT_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_1_2);
		MSound.playTone(0, 330, BEAT_2);
		MSound.playTone(0, 349, BEAT_1_2);
		MSound.playTone(0, 330, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_2);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_2);
		MSound.playTone(0, 294, BEAT_1_2);
		MSound.playTone(0, 330, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_2);
		MSound.playTone(0, 220, BEAT_1_2);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 220, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 247, BEAT_1);
		MSound.playTone(0, 247, BEAT_1);
		MSound.playTone(0, 196, BEAT_1);
		MSound.playTone(0, 330, BEAT_4);
		MSound.playTone(0, 330, BEAT_1);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_1_2);
		MSound.playTone(0, 330, BEAT_2);
		MSound.playTone(0, 330, BEAT_1_2);
		MSound.playTone(0, 392, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_2);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 294, BEAT_2);
		MSound.playTone(0, 294, BEAT_1_2);
		MSound.playTone(0, 330, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_2);
		MSound.playTone(0, 220, BEAT_1_2);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 247, BEAT_1_2);
		MSound.playTone(0, 220, BEAT_1_2);
		MSound.playTone(0, 262, BEAT_1_2);
		MSound.playTone(0, 247, BEAT_1);
		MSound.playTone(0, 247, BEAT_1);
		MSound.playTone(0, 196, BEAT_1);
		MSound.playTone(0, 220, BEAT_4);
		MSound.playTone(0, 220, BEAT_1);
	}
	MSound.playTone(0, 220, BEAT_1_2);
	MSound.playTone(0, 247, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 220, BEAT_1_2);
	MSound.playTone(0, 220, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 330, BEAT_1);
	MSound.playTone(0, 330, BEAT_2);
	MSound.playTone(0, 294, BEAT_1);
	MSound.playTone(0, 294, BEAT_1);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 330, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 247, BEAT_1_2);
	MSound.playTone(0, 220, BEAT_1);
	MSound.playTone(0, 220, BEAT_1_2);
	MSound.playTone(0, 247, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 220, BEAT_1_2);
	MSound.playTone(0, 220, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 220, BEAT_1);
	MSound.playTone(0, 330, BEAT_1_2);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 294, BEAT_1);
	MSound.playTone(0, 330, BEAT_4);
	MSound.playTone(0, 330, BEAT_1);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 330, BEAT_2);
	MSound.playTone(0, 330, BEAT_1);
	MSound.playTone(0, 349, BEAT_1);
	MSound.playTone(0, 294, BEAT_1);
	MSound.playTone(0, 220, BEAT_1);
	MSound.playTone(0, 294, BEAT_2);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 220, BEAT_1_2);
	MSound.playTone(0, 220, BEAT_1);
	MSound.playTone(0, 262, BEAT_1);
	MSound.playTone(0, 220, BEAT_1_2);
	MSound.playTone(0, 247, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 247, BEAT_1);
	MSound.playTone(0, 247, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 196, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 330, BEAT_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 330, BEAT_2);
	MSound.playTone(0, 330, BEAT_1);
	MSound.playTone(0, 349, BEAT_1);
	MSound.playTone(0, 294, BEAT_1);
	MSound.playTone(0, 220, BEAT_1);
	MSound.playTone(0, 294, BEAT_2);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 220, BEAT_1_2);
	MSound.playTone(0, 220, BEAT_1);
	MSound.playTone(0, 262, BEAT_1);
	MSound.playTone(0, 220, BEAT_1_2);
	MSound.playTone(0, 247, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 247, BEAT_1);
	MSound.playTone(0, 247, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 196, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_2);
	MSound.playTone(0, 247, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 220, BEAT_2);
	MSound.playTone(0, 220, BEAT_1_2);
	MSound.playTone(0, 247, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 247, BEAT_1);
	MSound.playTone(0, 247, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 294, BEAT_1_2);
	MSound.playTone(0, 196, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_4);
	MSound.playTone(0, 262, BEAT_1);
	MSound.playTone(0, 247, BEAT_1_2);
	MSound.playTone(0, 262, BEAT_1_2);
	MSound.playTone(0, 220, BEAT_4);
	MSound.playTone(0, 220, BEAT_1);
}
project-image

哦,对了,连线是这样的。直接用电池盒给扩展板供电就可以啦!

附件

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

所需材料/产品

加载全部

    micro:bit V1.5 编程入门开发板

    micro:bit V1.5 编程入门开发板

    micro:bit V1.5 编程入门开发板

    3节7号AAA电池盒

    3节7号AAA电池盒

    3节7号AAA电池盒

    micro:bit掌控IO扩展板(兼容行空板M10/K10、micro:bit、掌控)

    micro:bit掌控IO扩展板(兼容行空板M10/K10、micro:bit、掌控)

    micro:bit掌控IO扩展板(兼容行空板M10/K10、micro:bit、掌控)

相关推荐

评论(0)
- 没有更多了 -

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

相关推荐

所需材料/产品

micro:bit V1.5 编程入门开发板

micro:bit V1.5 编程入门开发板

micro:bit V1.5 编程入门开发板

3节7号AAA电池盒

3节7号AAA电池盒

3节7号AAA电池盒

micro:bit掌控IO扩展板(兼容行空板M10/K10、micro:bit、掌控)

micro:bit掌控IO扩展板(兼容行空板M10/K10、micro:bit、掌控)

micro:bit掌控IO扩展板(兼容行空板M10/K10、micro:bit、掌控)