bangnaga

Arduino Audio DB Meter MAX9814

Sep 8th, 2020 (edited)
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.44 KB | None | 0 0
  1. const int sampleWindow = 50;                              // Sample window width in mS (50 mS = 20Hz)
  2. unsigned int sample;
  3.  
  4. void setup()
  5. {
  6.    Serial.begin(9600);            
  7.    delay(2000);                  
  8. }
  9.  
  10.  
  11. void loop()
  12. {
  13.    unsigned long startMillis= millis();                   // Start of sample window
  14.    float peakToPeak = 0;                                  // peak-to-peak level
  15.  
  16.    unsigned int signalMax = 0;                            //minimum value
  17.    unsigned int signalMin = 1024;                         //maximum value
  18.  
  19.                                                           // collect data for 50 mS
  20.    while (millis() - startMillis < sampleWindow)
  21.    {
  22.       sample = analogRead(1);                             //get reading from microphone
  23.       if (sample < 1024)                                  // toss out spurious readings
  24.       {
  25.          if (sample > signalMax)
  26.          {
  27.             signalMax = sample;                           // save just the max levels
  28.          }
  29.          else if (sample < signalMin)
  30.          {
  31.             signalMin = sample;                           // save just the min levels
  32.          }
  33.       }
  34.    }
  35.    peakToPeak = signalMax - signalMin;                    // max - min = peak-peak amplitude
  36.    float db = map(peakToPeak,20,900,49.5,90);             //calibrate for deciBels
  37.    Serial.println(db);                                     //write calibrated deciBels
  38.  
  39.  
  40.  
  41. }
Advertisement
Add Comment
Please, Sign In to add comment