当前位置:首页 > 北京头条 > 北京经验

米思齐-06-tone函数及两只老虎乐谱的实现

2024-05-04 20:48:42 来源:163健康
浏览量:

                                                                     门铃       

                

图1-1 门铃

一、模块

图1-2 门铃模块

        门铃的米思奇模块:当以管脚2位数字输入管脚时,管脚8首先发出频率为NOTE_E5的的声音,延时0.5s后,该管脚继续发出NOTE_C5的频率,并延迟0.5后再管脚8出截止。从而剪短的发出两个频率不同的声音。,实现门铃的效果。

二、函数语法

①tone()

tone()函数可以产生固定频率的PWM信号来驱动扬声器发声。

notone()

notone()函数可以停止发声。

tone(pin,frequency,duration)

1)pin:发声引脚(此引脚需要连接发声器)

2)frequency:发声频率(单位赫兹)

3)duration:发声时长(单位:微秒,此参 数为可选参数)

三、代码

图1-3 门铃代码

        门铃代码:这一段代码分为两部分,一部分是规定输入引脚2和结束引脚8;第二部分是规定一个循环函数,当引脚2输入电子信号时,发出两个频率不同的声音,并且各声音之间存在0.5S的延迟(前文已经介绍),最后以notone()函数结束发声。

                                                                 两只老虎

TwoTigers

一、如何编写旋律

(1)音级基准频率(do、re、……、si)(如图2-1中 tonelist 从do到si的对应频率关系)

图2-1(初始化代码)

(2)频率变化

       跨八度(简谱中的“高音点儿”、“低音点儿”)(如图2-2中真奇怪,真奇怪的奇的so的下面就是低音点)

       因为两只老虎的乐谱中没有高音点所以在定义这种跨八度的关系是在highlist中表现的。

       临时变化音(#、b号)

(3)每个音的音名(音高)

(4)每个音的时值(长短)

       两只老虎整体是四四拍,但是不是代表四个音级就是4拍,在这里一个音级可以是一拍,如下图中只有单一的音级表示旋律的,一个音级可以是两拍,如下图印记后面带着横杠,就代表此音级为两拍,而一个音级可以表示半拍和另一个音级共同构成一拍,像两个节拍下面划横线的就表示两个音级构成一拍。所以说每个音级的播放时间是不同的。也就是如图2-1rhythmlist表示音级的播放时间的定义。

图 2-2(乐谱)

(4)频率与音高的关系

     标准音A的频率为440Hz

     每个八度频率相差一倍,如:

     钢琴键上相邻两个音(如C~#C)的频率关系:

图2-3(频率和音高)

(5)初始化模块图

图2-4

二、如何构造主体函数

图2-5(主体代码实现和讲解)

图2-6(代码的实现)

三、进行调试和运行

8管脚输出,2管脚输入。

图2-7(调试、运行代码)

图2-8(调试、运行模块)

四、创客传递

大家可以用这个小程序,把自己喜欢的歌曲编写出来。期待你们的分享。