一、文章导读
大家好,今天顺亿来跟大家聊聊Arduino的一个超有趣项目——用蜂鸣器演奏音乐!从乐理基础到编程实现,一步步带你玩转《生日快乐歌》,还能课后练习《小星星》,快来一起看看吧!
二、项目概述
本项目通过Arduino控制无源蜂鸣器,利用不同频率的方波发出不同音高,结合简谱节奏和音符时值,实现完整歌曲的演奏。别小看这个项目,它可是新手最容易踩的坑哦,比如区分有源蜂鸣器和无源蜂鸣器。
三、核心乐理知识
1. 音名、唱名、简谱对应关系
Do Re Mi 和简谱数字,新手们很容易搞混,这里顺亿给大家整理了唱名、简谱和音名的对应关系,还有音的高低是由振动频率决定的,频率越高,音调越高。
2. 完整音高频率表
表格横向为八度组别(0~8),纵向为音名,数值为对应频率(Hz),Arduino tone()函数直接调用该频率即可发出标准音高。比如中央C(中音Do),对应4组C,频率262Hz,但电子音适合高一点更好听,所以可以用C5作为中音Do(523HZ)。
3. 音符时值(音的长短)
同样一个音高,通过控制发声时长,就能唱出节奏。时值规则如下:
- 全音符:4拍
- 二分音符:2拍
- 四分音符:1拍
- 八分音符:0.5拍
- 十六分音符:0.25拍
4. 拍号与歌曲速度(BPM)
4/4拍:以四分音符为一拍,每小节4拍
3/4拍:以四分音符为一拍,每小节3拍
BPM:每分钟节拍数,本文生日快乐采用常规速度60~100BPM。60BPM:1拍 = 1000ms;100BPM:1拍 ≈ 600ms
四、有源蜂鸣器 vs 无源蜂鸣器(关键区别)
1. 有源蜂鸣器
内部自带震荡源,通电即响,只能发出固定“滴滴”声,无法演奏旋律,不能变调。
2. 无源蜂鸣器(本次项目使用)
内部无震荡源,需要2K~5KHz方波驱动,可通过改变频率改变音调,支持演奏任意歌曲。无正负极区分,接线简单。
五、Arduino音乐核心函数:tone() / noTone()
1. tone() 发声函数:用于使蜂鸣器发声,参数为频率和时长。
2. noTone() 停止发声函数:用于停止蜂鸣器发声。
小结与拓展
今天的Arduino蜂鸣器音乐演奏项目就聊到这里,希望对大家有所帮助。想了解更多Arduino编程技巧,欢迎关注顺亿和「趣航编程网」(www.vqhf.com),我们下期再见!
