實驗說明:
米羅要推薦一款超好用的LM386聲音感測器模組,採用音頻處理晶片LM386音頻放大IC,它可以測得聲音比較細微的變化。聲音感測器類似一個微型的麥克風,但它的功能並不像真正的麥克風一樣,只能用來偵測「是否有聲音」,可用來對周圍環境中的聲音強度進行檢測,你可以用它來做一些交互性專案,例如聲控開關,跟隨舞蹈變動的機器人。在本文中我們將使用ESP32搭配LM386聲音感測器模組來實作一個有趣的聲控節奏燈。
材料:
- ESP32-E DevKit
- USB 傳輸線
- LM386聲音感測器模組
- 直插LED
- 220Ω直插電阻
- 麵包板
- 麵包板跳線
▼ 購買IoT物聯網學習教材:
程式:
int led_1 =16;
int led_2 =17;
int led_3 =5;
int led_4 =18;
int led_5 =19;
int microphone = 36; //LM386聲音感測器AO信號腳 連接到ESP32 GPIO36
void setup()
{
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
pinMode(led_4, OUTPUT);
pinMode(led_5, OUTPUT);
pinMode(microphone, INPUT);
Serial.begin(9600);
}
void loop()
{
int val=analogRead(microphone);
Serial.println(val);
if (val>1200){
digitalWrite(led_1, HIGH);
digitalWrite(led_2, HIGH);
digitalWrite(led_3, HIGH);
digitalWrite(led_4, HIGH);
digitalWrite(led_5, HIGH);
}else if (val>900){
digitalWrite(led_1, HIGH);
digitalWrite(led_2, HIGH);
digitalWrite(led_3, HIGH);
digitalWrite(led_4, LOW);
digitalWrite(led_5, LOW);
}else if (val>600){
digitalWrite(led_1, HIGH);
digitalWrite(led_2, HIGH);
digitalWrite(led_3, HIGH);
digitalWrite(led_4, LOW);
digitalWrite(led_5, LOW);
}else if (val>300){
digitalWrite(led_1, HIGH);
digitalWrite(led_2, HIGH);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
digitalWrite(led_5, LOW);
}else if (val>10){
digitalWrite(led_1, HIGH);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
digitalWrite(led_5, LOW);
}else{
digitalWrite(led_1, LOW);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
digitalWrite(led_5, LOW);
}
delay(100);
}
程式說明:
經由LM386聲音感測器感知類比值的變化進行調控LED的明暗。將程式碼下載到ESP32後,然後再播放個快節奏的舞曲,這時LED將會隨著音樂的韻律節奏進行閃爍變化。