サウンドレベルメータ
ボリュームを回転させると回転量に応じた数のLEDが点灯。また、マイクにより周囲の音量に応じた数のLEDを点灯させることが出来ます。

使用するリーフ
Section titled “使用するリーフ”以下のリーフを使用します
| Type | Name | Q’ty |
|---|---|---|
| AZ62 | Connector Cover | 2 |
| AI03 | MIC&VR&LED | 1 |
| AX07 | Back to back | 1 |
| AP02 | ESP32 MCU | 1 |
| AV04 | 2V~4.5V | 1 |
| AZ63 | Nut Plate | 2 |
| AAA battery holder | 1 | |
| AAA battery | 3 | |
| M2*8mm screw | 2 | |
| M2*12mm screw | 2 | |
| φ10x2mm magnet | 1 |
リーフの組み立て
Section titled “リーフの組み立て”下図のようにリーフを組み立てましょう。

ソースコード
Section titled “ソースコード”Arduino IDEで下記のプログラムを書きましょう。
//=====================================================================// ESP32 Sound level meter//// (c) 2021 LEAFONY SYSTEMS Co., Ltd// Released under the MIT license// https://opensource.org/licenses/MIT//// Rev.00 2021/04/01 First release//=====================================================================
// LED4-6:VR level display// LED1-3:MIC sound pressure level display
#define LED1 14 // D6 IO14#define LED2 15 // D7 IO15#define LED3 17 // D8 IO17#define LED4 16 // D9 IO16#define LED5 5 // D10 IO5#define LED6 23 // D11 IO23#define MIC 26 // A2 IO26#define VR 39 // A3 IO39
unsigned int dataVR;unsigned int dataMic;
//-----------------------------------------------// Get VR and MIC data//-----------------------------------------------void getSensorData(){ dataVR = analogRead(VR); dataMic = analogRead(MIC);
Serial.println("---------------------"); Serial.print("MIC = "); Serial.println(dataMic,DEC); Serial.print("VR = "); Serial.println(dataVR,DEC);}
//-----------------------------------------------// Turn the LEDs on and off according to the VR and MIC values.//-----------------------------------------------void dispSensorData(){ if (dataVR < 1500){ digitalWrite(LED4,LOW); digitalWrite(LED5,LOW); digitalWrite(LED6,LOW); } else if (dataVR >= 1500 && dataVR < 2600){ digitalWrite(LED4,LOW); digitalWrite(LED5,LOW); digitalWrite(LED6,HIGH); } else if (dataVR >= 2600 && dataVR < 3600){ digitalWrite(LED4,LOW); digitalWrite(LED5,HIGH); digitalWrite(LED6,HIGH); } else{ digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); digitalWrite(LED6,HIGH); }
if (dataMic < 400){ digitalWrite(LED1,LOW); digitalWrite(LED2,LOW); digitalWrite(LED3,LOW); } else if (dataMic >= 400 && dataMic < 600){ digitalWrite(LED1,LOW); digitalWrite(LED2,LOW); digitalWrite(LED3,HIGH); } else if (dataMic >= 600 && dataMic < 950){ digitalWrite(LED1,LOW); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); } else{ digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); }}
void setup(){ Serial.begin(115200); Serial.println("start!!");
pinMode(LED1, OUTPUT); digitalWrite(LED1, LOW); pinMode(LED2, OUTPUT); digitalWrite(LED2, LOW); pinMode(LED3, OUTPUT); digitalWrite(LED3, LOW); pinMode(LED4, OUTPUT); digitalWrite(LED4, LOW); pinMode(LED5, OUTPUT); digitalWrite(LED5, LOW); pinMode(LED6, OUTPUT); digitalWrite(LED6, LOW);
pinMode(MIC, INPUT); pinMode(VR, INPUT);
// Startup test(LED) digitalWrite(LED1,HIGH); delay(200); digitalWrite(LED2,HIGH); delay(200); digitalWrite(LED3,HIGH); delay(200); digitalWrite(LED4,HIGH); delay(200); digitalWrite(LED5,HIGH); delay(200); digitalWrite(LED6,HIGH); delay(200); digitalWrite(LED1,LOW); digitalWrite(LED2,LOW); digitalWrite(LED3,LOW); digitalWrite(LED4,LOW); digitalWrite(LED5,LOW); digitalWrite(LED6,LOW); delay(200);}
void loop() { getSensorData(); dispSensorData(); delay(100);}ボリュームを回転させると回転量に応じた数のLEDが点灯します。マイクにより周囲の音量に応じた数のLEDが点灯します。