ESP32, IOT物聯網

【IOT物聯網應用-ESP32】第十七篇:LM386 聲音感測器模組 – 動感聲控節奏燈

實驗說明:

米羅要推薦一款超好用的LM386聲音感測器模組,採用音頻處理晶片LM386音頻放大IC,它可以測得聲音比較細微的變化。聲音感測器類似一個微型的麥克風,但它的功能並不像真正的麥克風一樣,只能用來偵測「是否有聲音」,可用來對周圍環境中的聲音強度進行檢測,你可以用它來做一些交互性專案,例如聲控開關,跟隨舞蹈變動的機器人。在本文中我們將使用ESP32搭配LM386聲音感測器模組來實作一個有趣的聲控節奏燈。

 

材料:

  • ESP32-E DevKit
  • USB 傳輸線
  • LM386聲音感測器模組
  • 直插LED
  • 220Ω直插電阻
  • 麵包板
  • 麵包板跳線

▼ 購買IoT物聯網學習教材:

ESP32 物聯網應用學習套件 ESP32CAM IoT物聯網學習教材 適用Arduino

 

程式:

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將會隨著音樂的韻律節奏進行閃爍變化。

 

 

相關文章