想让项目能“说话”——按键响一声、报警叫起来、或者播一段旋律,最便宜直接的就是蜂鸣器。它分有源和无源两种,接线、代码、用法差别不小,很多人第一次就栽在选型上。这篇把有源无源的区别、接线、播放提示音和乐曲一次讲清楚。
有源还是无源?先分清再动手
有源蜂鸣器内部自带振荡电路,只要给正极供上直流电(3.3到5V)就会自己响,适合做单纯的提示音、报警,控制只需digitalWrite高电平或低电平。无源蜂鸣器没有内部振荡,给直流电不会响,必须由Arduino用PWM或tone()送一个方波信号,改变频率就能改变音调,所以能做按键音、报警音来自定义频率,还能谱出像“小星星”这样的旋律。光看外观壳子上标+号的一般是有源,不懂就先当无源用tone测试,最稳妥。

这张接线图很直观:有源蜂鸣器正极接Arduino一个数字脚(比如D8),负极接GND;无源蜂鸣器信号脚接到带PWM的数字脚(有~号的那些,比如D9)再接GND,用一个带三端口的蜂鸣器模块更省事。
代码:提示音和旋律
有源蜂鸣器用pinMode设为OUTPUT,然后digitalWrite给它高电平就会一直响,低电平停。无源蜂鸣器用tone(脚号, 频率)就能发声,比如tone(9, 1000)响1kHz,tone脚暂停可以用noTone。想让按键响一下就在按键事件里tone一下再停。想播旋律就建一个数组存音符频率和节拍,循环里逐个tone、然后延时对应的时长,最后noTone,就能拼出一首小曲子。注意tone()同一时间只能在一个引脚上播放,要播双音得靠多个或软件模拟。

桌面上的这套就是既有源又无源都接上对比着玩的:一个高电平就叫,另一个靠tone谱音调,同一个按键按下去两种音色完全不同。有源适合“哔——报警”,无源适合“叮咚-旋律”,按项目需要选对类型能少走好多弯路。
两个小提醒
一是无源蜂鸣器一般是正极信号柱长、标有+,别有源无源都一股脑给5V直流——无源给了也只干响不换调。二是音量、时长要控制在人能接受的度,长时间满点在耳边很吵,做闹钟或提示音记得给蜂鸣器留出间隔,或者串一个几十到几百欧的小电阻限一下声音强度。







别太大声长时间怼,离得近真的吵,串个小电阻压一压
pinMode设成OUTPUT再tone,好多人漏了这不响
无源谱小星星超好玩,同一个模块能换着调
有源给直流就响,无源要送频率才能变调,选错类型白接线