天天看點

Arduino ESP32通過PWM控制無源蜂鳴器

Arduino ESP32通過PWM控制無源蜂鳴器

  • 相關篇《ESP32在Arduino開發環境中的PWM的使用方法》
ESP32通過PWM控制無源蜂鳴器發出聲音。

有源和無源蜂鳴器知識科普

  • 有源和無源這裡的“源”不是指電源,而是指震蕩源。也就是說,有源蜂鳴器内部帶震蕩源,是以隻要一通電就會叫。而無源内部不帶震蕩源,是以如果用直流信号無法令其鳴叫。必須用2K~5K的方波去驅動它。有源蜂鳴器往往比無源的貴,就是因為裡面多個震蕩電路。這就是通過驅動原理來分别的方法。我們再來看看外觀上差別:
    Arduino ESP32通過PWM控制無源蜂鳴器
看出有綠色電路闆的一種是無源蜂鳴器,沒有電路闆而用黑膠封閉的一種是有源蜂鳴器。
接線示意圖:
Arduino ESP32通過PWM控制無源蜂鳴器

執行個體代碼

/*
  ESP32
  接線說明:無源蜂鳴器接D4--GPIO4
*/
#define buzzer (4)
int freq = 2000;//設定頻率
int channel = 0;//通道号,取值0 ~ 15
int resolution = 8;//計數位數,2的8次幂=256

void setup() {
  Serial.begin(115200);
  ledcSetup(channel, freq, resolution);
  ledcAttachPin(buzzer, channel);
}

void loop() {
  ledcWriteTone(channel, 2000);
  for (int dutyCycle = 0; dutyCycle <= 255; dutyCycle = dutyCycle + 10) {
    Serial.println(dutyCycle);
    ledcWrite(channel, dutyCycle);
    delay(1000);
  }
  
  ledcWrite(channel, 125);
  for (int freq = 255; freq < 10000; freq = freq + 250) {
    Serial.println(freq);
    ledcWriteTone(channel, freq);
    delay(1000);
  }
}