Encontré que este código ya está disponible y funciona bien, pero cuando reduzco la ventana de muestreo a 0.25 ms, el monitor serie no puede identificar ningún sonido y siempre muestra el mismo valor. He intentado cambiar millis () a micros () y también he intentado unos cuantos valores de signalmin pero no ayuda. ¿Alguna idea de qué se debe hacer para esta pequeña ventana de muestreo? El micrófono que estoy usando es czn-15e.
const int sampleWindow = 10; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;
void setup()
{
Serial.begin(9600);
}
void loop()
{
unsigned long startMillis= millis(); // Start of sample window
unsigned int peakToPeak = 0; // peak-to-peak level
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
// collect data for 1000 mS
while (millis() - startMillis < sampleWindow)
{
sample = analogRead(0);
if (sample < 1024) // toss out spurious readings
{
if (sample > signalMax)
{
signalMax = sample; // save just the max levels
}
else if (sample < signalMin)
{
signalMin = sample; // save just the min levels
}
}
}
peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude
double volts = (peakToPeak * 5.0) / 1024; // convert to volts
Serial.println(volts);
}
'