實驗說明:
- 本實驗將讓大家的ESP32電路發出聲音,能夠發出聲音的最常見的元器件就是蜂鳴器和喇叭了,兩者相比較蜂鳴器更簡單和易用,所以我們本實驗採用蜂鳴器。
- 蜂鳴器基本上分兩類:有源蜂鳴器、無源蜂鳴器。無源蜂鳴器可透過 PWM (PWM:Pulse Width Modulation)方式控制其發聲頻率 ,我們就可以利用它來播放簡單的旋律。有源蜂鳴器則是內建了一組固定的頻率,只要接通電源,就會發出固定的音調,無法利用 PWM 對其音頻進行控制。
材料:
- ESP32-E DevKit
- USB 傳輸線
- 無源蜂鳴器
- 有源蜂鳴器
- 麵包板
- 麵包板跳線
▼ 購買IoT物聯網學習教材:
接線說明:
程式(有源蜂鳴器):
int buzzPin = 15;
void setup()
{
pinMode(buzzPin, OUTPUT);
}
void loop()
{
digitalWrite(buzzPin, HIGH); //有源蜂鳴器響起
delay(2000);
digitalWrite(buzzPin, LOW); //有源蜂鳴器關閉
delay(2000);
}
程式(無源蜂鳴器):
int buzzer=15;
void setup()
{
pinMode(buzzer,OUTPUT);
}
void loop()
{
int i;
while(1)
{
for(i=0;i<50;i++)
{
digitalWrite(buzzer,HIGH);
delay(1);
digitalWrite(buzzer,LOW);
delay(1);
}
delay(1000);
for(i=0;i<100;i++)
{
digitalWrite(buzzer,HIGH);
delay(3);
digitalWrite(buzzer,LOW);
delay(3);
}
delay(1000);
}
}
程式說明:
針對無源蜂鳴器程式碼說明如下
- 第 1 列設置控制蜂鳴器的數位接口GPIO15 Pin。
- 第 3 列設置數位I\O腳模式,buzzer GPIO15 Pin為數位輸出Pin 。
- 第 8 列宣告變數。
- 第 11~17 列輸出一個頻率的短聲音。
- 第 18 列延遲1秒。
- 第 19~25 列輸出另一個頻率的長聲音。
- 第 26 列延遲1秒。
下載完程序就可以聽到ESP32的數位接口GPIO15 Pin外接蜂鳴器在發出一長一短的聲音。
進階範例 – 電子門鈴(有源蜂鳴器):
材料:
- ESP32-E DevKit
- USB 傳輸線
- 有源蜂鳴器
- 按鍵開關
- 10kΩ直插電阻
- 麵包板
- 麵包板跳線
程式(有源蜂鳴器):
int buzzPin=15;
int inpin=16;
int val;
void setup()
{
pinMode(buzzPin,OUTPUT);
pinMode(inpin,INPUT);
}
void loop()
{
val=digitalRead(inpin);
if(val==LOW)
{
digitalWrite(buzzPin,LOW);
}
else
{
digitalWrite(buzzPin,HIGH);
}
}
分析電路可知當按鍵按下時,數位接口GPIO16 Pin可讀出為高電位,這時我們使數位接口GPIO15 Pin輸出高電位則可使有源蜂鳴器發出聲響,在程式中我們判斷數位接口GPIO16 Pin是否為低電位,若是低電位則使數位接口GPIO15 Pin輸出為低電位有源蜂鳴器無聲。