欢迎光临
我们一直在努力

LabVIEW+Arduino之舵机演奏手敲琴

沛华LabVIEW基础课程|第12讲

『LabVIEW+Arduino』

舵机演奏手敲琴

哈喽,大家好!各位女同胞们,节日快乐!这里是沛华的Shania~

今天课程要实现的效果是:利用两个舵机结合手敲琴,完成曲目《小星星》的演奏(当然,你想换别的曲目也是OK的)。

小巧的木槌随着呆萌的舵机上下起落,清脆悦耳的乐声在琴键缓缓流出,一不小心就能实现“人人都是节奏大师”的愿景~

咳咳,废话不多说,感兴趣的话,就一起来看看吧!

Shania买的是比较简单的8音阶手敲琴,很多音阶敲不出来,要是能换成15音阶的手敲琴,演奏效果会好,演奏曲目就不会这么局限。

这里我们要使用两个MG945舵机,此舵机具体的接线方法请看下图:

接线图来自:Fritzing

Shania这里把控制木槌上下敲击的舵机,信号线接到9号IO;作为底盘控制木槌左右转动的舵机,信号线接到10号IO;电池、舵机的负极跟Arduino开发板要共地。

所有条件分支

编程思路如下:

把音乐简谱字符串通过“字符串至字节数组转换 (函数)”(String To Byte Array)转换为不带符号字节的数组,结合For循环与条件结构,将音乐简谱字符串映射为相对应琴键位置的舵机角度数值。

同时用“选择(函数)”(Select)做判断,如果条件结构分支输出的值等于“1”,木槌停顿:反馈上一次循环输出的值(舵机不转动,停留在原处),也不做敲击琴键的动作;如果值不等于“1”,木槌执行敲击琴键的动作:木槌先转动至该音符所对应的琴键位置(停留指定时间,给木槌敲击琴键动作预留时间),接着敲击琴键(停留指定时间,确保木槌有敲击到琴键),敲击完毕后抬起木槌。重复该动作完成演奏。

ASCII表,图片来源:百度百科

要注意的是:数组中的各个数值是字符串中相应字符的ASCII码,我们用“-”表示停顿,用“1、2、3、4、5、6、7、8”表示音阶“Do Re Mi Fa So La Si Do”,根据ASCII码转换表得到相对应的十进制数值:“45、49、50、51、52、53、54、55、56”。

《小星星》简谱

今天就到这啦,下期见!记得给我点“好看”哦!

微信又双叒叕改版

为了不失联&获取最新最好玩的信息

2.按右上方的【●●●】符号;

比你想象的更好玩!

写于:19.03.08

今天女王节,想要你的一个“好看”

赞(38)
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址