在 Arduino 實作專案中,若需要讓系統發出警報聲、按鍵音效或播放簡單旋律,蜂鳴器(Buzzer) 是最簡單且低成本的聲音輸出元件。本篇文章將帶您了解蜂鳴器的分類原理,並透過 Arduino Uno 控制「有源蜂鳴器」與「無源蜂鳴器」發出聲音。
一、蜂鳴器原理介紹:有源蜂鳴器 vs. 無源蜂鳴器
蜂鳴器主要分為有源蜂鳴器(Active Buzzer)與無源蜂鳴器(Passive Buzzer)兩種,這裡的「源」指的是震盪源(Oscillator):
💡 小貼士:如果想要讓 Arduino 播放單純的警報嗶嗶聲,選用「有源蜂鳴器」最簡單;如果想發出 Do-Re-Mi 等不同音高,則必須使用「無源蜂鳴器」。
二、實驗所需材料與工具
實作本實驗前,請先準備以下硬體元件:
Arduino Uno R3 開發板 x 1
USB 數據傳輸線 x 1
有源蜂鳴器 x 1
無源蜂鳴器 x 1
麵包板 x 1
杜邦線 / 麵包板跳線 若干
👉 尚未購買零件嗎? 推薦使用 米羅科技 Arduino 程式學習套件組,一次備齊基礎教學所需的所有元件!
三、硬體接線說明
蜂鳴器通常有兩根引腳:
長腳 / 標示「+」:接 Arduino 的數位輸出腳位(本範例使用
Pin 13)。短腳 / 標示「-」:接 Arduino 的
GND(接地)。
四、程式設計與範例程式碼
範例 1:有源蜂鳴器控制(定頻蜂鳴)
有源蜂鳴器控制非常簡單,只需要透過 digitalWrite() 給予高低電位,就能控制蜂鳴器的開與關。
/*
Arduino 有源蜂鳴器控制範例
功能:蜂鳴器響 2 秒、靜音 2 秒,持續循環
*/
const int buzzPin = 13; // 設定蜂鳴器連接至數位引腳 13
void setup() {
pinMode(buzzPin, OUTPUT); // 將 13 號引腳設定為輸出模式
}
void loop() {
digitalWrite(buzzPin, HIGH); // 發出聲音
delay(2000); // 持續 2 秒
digitalWrite(buzzPin, LOW); // 靜音
delay(2000); // 持續 2 秒
}範例 2:無源蜂鳴器控制(自訂頻率與音序)
無源蜂鳴器需要透過快速切換高低電位來產生特定頻率的方波。
方式 A:使用數位訊號交替觸發(原實驗方法)
透過改變 delay() 的時間,手動產生不同頻率的波形:
/*
Arduino 無源蜂鳴器手動方波控制範例
*/
const int buzzerPin = 13; // 設定蜂鳴器控制腳位
void setup() {
pinMode(buzzerPin, OUTPUT);
}
void loop() {
// 輸出頻率 1:高頻短音
for (int i = 0; i < 50; i++) {
digitalWrite(buzzerPin, HIGH);
delay(1);
digitalWrite(buzzerPin, LOW);
delay(1);
}
delay(1000); // 間隔 1 秒
// 輸出頻率 2:低頻長音
for (int i = 0; i < 100; i++) {
digitalWrite(buzzerPin, HIGH);
delay(3);
digitalWrite(buzzerPin, LOW);
delay(3);
}
delay(1000); // 間隔 1 秒
}
方式 B:使用 Arduino 內建 tone() 函式(推薦用法)
Arduino 提供官方的 tone(pin, frequency, duration) 語法,能更精準且簡潔地控制無源蜂鳴器的音高:
/*
Arduino 官方 tone() 函式範例
*/
const int buzzerPin = 13;
void setup() {
// tone() 不需要特別設定 pinMode
}
void loop() {
tone(buzzerPin, 440, 500); // 發出 440Hz (A4音) 聲音,持續 0.5 秒
delay(1000);
tone(buzzerPin, 880, 500); // 發出 880Hz (A5音) 聲音,持續 0.5 秒
delay(1000);
}五、程式說明與實驗結果
有源蜂鳴器:上傳程式後,引腳 13 輸出高電位時,蜂鳴器會發出固定的嗶聲;輸出低電位時則關閉。
無源蜂鳴器:藉由程式控制電位高低切換的間隔時間(週期的長短),蜂鳴器將會發出一長一短且不同音調的警報聲響。
六、常見問題解答 (FAQ)
Q1:為什麼我的蜂鳴器接到 Pin 13 卻一直發出很微弱的聲音?
解答:請確認您使用的是有源還是無源蜂鳴器。若是無源蜂鳴器,直接給予持續高電位只會在接通瞬間發出微弱一聲「喀」,必須透過 Pulse/PWM 或
tone()函式給予脈衝才會持續發聲。
Q2:使用蜂鳴器需要加上限流電阻嗎?
解答:一般微型微型蜂鳴器工作電流約 10~30mA,Arduino I/O 腳位可直接驅動。若長時間使用或蜂鳴器功率較大,建議搭配 100Ω 電阻或使用 NPN 電晶體(如 S8050)進行驅動放大。

