xxxxxxxxxx
// ReadAnalogAverage
// For audio input testing
// Prints min, max, and average to the serial monitor
// Should work with a line-level or headphone-level signal
// Typically the input is biased at Vcc/2 for a reading of ~512 with no signal
// Reads input A0
// Global Variables
int Min;
int Max;
int Analog;
unsigned long Sum;
unsigned long Average; //Should be equal to the bias.
void setup()
{
Serial.begin(9600);
delay(100); //"Stabilization time". Probably not necessary
}
//Main Loop
void loop()
{
Min = 1023; //Initilize/reset to limit
Max = 0; //Initilize/reset to limit
Sum = 0; //Initialize/reset
//Take 1000 readings, find min, max, and average. This loop takes about 100ms.
for (int i = 0; i < 1000; i++)
{
Analog = analogRead(A0);
Sum = Sum + Analog; //Sum for averaging
if (Analog < Min)
Min = Analog;
if (Analog > Max)
Max = Analog;
}
Average = (Sum/1000);
// print results
Serial.print ( " Min = ");
Serial.print (Min);
Serial.print ( " Max = ");
Serial.print (Max);
Serial.print (" Average = ");
Serial.println (Average);
// delay(500); //Optional delay for readability
} //End