I am trying to create project using ESP 32 with arduino IDE which turns on when a snap is detected.
I will be using using spw2430 mems mic
datasheet here :https://www.knowles.com/docs/default-so ... hr5h-b.pdf
Right now I using the Adafruit SPW2430 mems mic breakout board for testing purpose
product site here :https://www.adafruit.com/product/2716
The problem I am facing is whenever i snap my fingers or clap my hand the output voltage goes up (as expected) BUT it takes a 4-5 seconds to come back to normal reading .
Ideally it should not take that much amount of time to come back to normal reading. It should take 10 ms to come back to normal readings.
I am polling every 500 microseconds and the attenuation of the esp has been set to 0 db so that the REf voltage scale is in 0 - 1V.
this similar problem is happening with arduino uno (with same set of test conditions) .
The input of adc is connected to the DC pin of the Breakout Board.
(Which does NOT have any capacitor in between the o/p of mic and I/p of adc.)
Here is the code I am using
Code: Select all
#include<esp32-hal-adc.h>
#define ANALOG_PIN 4
void setup()
{
pinMode(ANALOG_PIN,INPUT);
Serial.begin(115200);
/*
* typedef enum
{
ADC_0db, // 0 to 1 v
ADC_2_5db, // 0 to 1.27 v
ADC_6db, // 0 to 1.75 v
ADC_11db // 0 to 3.3 v
} adc_attenuation_t; // changes Ref Voltage Scale
*/
analogSetPinAttenuation(ANALOG_PIN,ADC_0db); // Set the attenuation for particular pin currently 0-1 v
}
void loop()
{
int raw_value = 0; // to store raw value of mic
raw_value = analogRead(ANALOG_PIN); // Reading the op voltage of mic
Serial.print("Raw value is : ");
Serial.println(raw_value);
delayMicroseconds(500); // Sampling every 500 uSec
}