發佈日期:

【Arduino】不用模組純代碼實現方波驅動蜂鳴器

Views: 0

【Arduino 知識分享】擺脫模組束縛:純代碼實現 Pin 8 方波驅動蜂鳴器

在 Arduino 的專案開發中,許多初學者習慣購買現成的「蜂鳴器模組」。雖然模組方便,但若能直接透過單片機的 I/O 腳位精確控制方波(Square Wave),不僅能減少硬體體積,更能讓你深入理解頻率與音調的物理關係。

今天我們分享如何透過 Arduino Pin 8 直接輸出方波,在不使用外部驅動模組的情況下,控制一個無源蜂鳴器(Passive Buzzer)發出聲音。

💡 核心知識點

  • 無源蜂鳴器 vs 有源蜂鳴器:有源蜂鳴器通電即響,而無源蜂鳴器需要給予特定頻率的「方波」訊號才能震動發聲。
  • 方波輸出(tone 函式):Arduino 內建的 tone() 函式可以產生指定頻率的方波,其原理是快速切換高低電平(HIGH/LOW)來模擬音調。
  • 硬體精簡:僅需 Arduino 開發板與一個蜂鳴器,正極接 Pin 8,負極接 GND 即可完成實驗。

💻 Arduino.ino 完整範例程式碼

本範例展示如何循環輸出一個 1kHz(1000Hz)的音頻訊號。

/*
 * 專案名稱:Arduino Pin 8 方波驅動蜂鳴器範例
 * 功能說明:不使用外部模組,直接透過代碼控制無源蜂鳴器發聲
 */

const int buzzerPin = 8; // 定義蜂鳴器連接在數位腳位 8

void setup() {
  // 將 Pin 8 設置為輸出模式
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  // 1. 使用內建 tone 函式:頻率 1000 Hz (1kHz),持續 500 毫秒
  tone(buzzerPin, 1000); 
  delay(500); 

  // 2. 停止輸出 500 毫秒
  noTone(buzzerPin);
  delay(500);

  /* 
   * [進階知識] 也可以手動用 digitalWrite 模擬方波:
   * digitalWrite(buzzerPin, HIGH);
   * delayMicroseconds(500); // 1000Hz 的半週期約為 500us
   * digitalWrite(buzzerPin, LOW);
   * delayMicroseconds(500);
   */
}

🛠️ 實作小貼士

  1. 限流保護:為了保護 Arduino 腳位,建議在蜂鳴器正極串聯一個 220Ω ~ 1kΩ 的電阻。
  2. 音調調整:修改 tone(buzzerPin, 頻率) 中的頻率數值,例如 262Hz 為中央 C(Do),440Hz 為標準 A 音(La)。
  3. 多腳位限制:請注意,tone() 函式同一時間只能在一個腳位產生聲音。

這種類型的知識分享對您的有幫助嗎?如果您需要特定的旋律代碼或是進階的硬體接線圖說明,歡迎隨時告知!