设为首页收藏labplus社区产品资料库
1482
积分值+2
520
掌控币+1
0  关注
123  粉丝
160  帖子
论坛小助手
2019年06月19日

#基础使用#【基础使用】玩转掌控板12—音乐钢琴

听了上一节课那些动听的旋律,是不是也跃跃欲试想自己来独奏一曲了呢?本节课我们就学习如果制作一个简单的音乐钢琴来实现我们的音乐梦。

学习目标

1、复习“函数”模块指令的用法

2、复习巩固使用oled屏显示外置图片

3、学习控制蜂鸣器的声音频率

思维开发

我们本节课的主题是制作钢琴,可以在掌控板的OLED屏显示模拟钢琴,并在钢琴键上显示提示音符,

然后再通过触摸p、y、t、h、o、n按键,让蜂鸣器发出Do、Re、Mi、Fa、So、La的声音。

当我们按的时候为了确定“钢琴”是否按下,按的是哪一个音符。我们还可以在触摸按键时在对应位置显示我们的模拟手指。

素材提供

由于无法上传pbm格式图片,所以放进百度云了,可打开链接直接下载。

链接:https://pan.baidu.com/s/1ADHilahRN6s-W1cj68BOqw

提取码:60su

程序流程

1、首先要在oled屏上显示钢琴和模拟手指以及提示文本,我们运用显示图片课程中学到的内容制作一张钢琴图片和一张手指图片,然后显示在我们的oled屏上。


贴士

因为我们的显示文本在我们的白色琴键上,所以我们的显示文本需要是黑色,在显示文本指令后面的模式上选择反转模式即可


确定好了钢琴键和提示文本,现在来确定我们模拟手指的显示位置,模拟手指的位置是每次我们触摸按键时它就显示在对应的位置,当我们离开按键时,手指会被隐藏,我们可以通过绘制一个和手指图片比手指图片稍大的白色矩形覆盖到手指图片上,达到隐藏手指的目的,为了达到我们想要的效果,需要使用到“函数”模块指令


在各类编程语言中,函数是一种过程,也称为子程序,它执行一个指定的运算或操作,我们可以把它理解为一段预处理好的程序,能完成特定的功能。

①创建四个变量,分别代表手指图片(Pressed)的初始xy坐标和白色矩形(Eeceive)的初始xy坐标。


②创建两个函数,将它们分别命名,显示手指图片和白色矩形,白色矩形根据手指图片大小决定,应该比手指图片稍大,这里大小设置为宽17,高23。


③使用“事件”模块指令的按键触摸指令,当按键被触摸运行函数Pressed(手指出现)并且播放对应音调,当按键被释放运行函数Eeceive,同时通过改变对应变量的值来改变图片的坐标(手指隐藏),显示坐标可以根据图片来测试,尽量让图片显示在对应位置,因为图片是在同一水平线上,所以y轴坐标不变,只需要确定x轴坐标即可

P键


其它按键的程序及坐标分别为

Y键


T键


H键


O键


N键


示例程序


显示效果


音谱

自己来弹一首“小星星”吧


作者留言

吐槽一下,这就是个阉割版的模拟钢琴,无奈触摸按键有限,因此只有6个音符,“多来米发索拉西”的“西”都没有。

弹奏一首小星星还算凑合

正常情况下高音,中音和低音每个都有半音和升半音有12个音符,合起来共36个音符才对。

8

点赞

2362 次阅读7 条评论1 条回复8 人赞2 人订阅
7条评论