Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
- unsigned int sample;
- void setup()
- {
- Serial.begin(9600);
- delay(2000);
- }
- void loop()
- {
- unsigned long startMillis= millis(); // Start of sample window
- float peakToPeak = 0; // peak-to-peak level
- unsigned int signalMax = 0; //minimum value
- unsigned int signalMin = 1024; //maximum value
- // collect data for 50 mS
- while (millis() - startMillis < sampleWindow)
- {
- sample = analogRead(1); //get reading from microphone
- 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
- float db = map(peakToPeak,20,900,49.5,90); //calibrate for deciBels
- Serial.println(db); //write calibrated deciBels
- }
Advertisement
Add Comment
Please, Sign In to add comment