#define PIN_TO_SAMPLE A0
#define LED_PIN_OVERVOLT 2
#define SAMPLE_TIME_US 22.72 //IN MILLISECONDS FOR DEBUG PURPOSES
#define NUM_OF_SAMPLES 50
#define MAX_MEAN_MV 2000
float voltage;
float somma=0;
float num_media=1;
float frequenza = (1 / (float)SAMPLE_TIME_US)* 1000;
float perform_acquisition(){
int ADRES;
float value_mv; //in mV
ADRES=analogRead(PIN_TO_SAMPLE);
value_mv=(ADRES*(5.0/1024.0))*1000.0; //ADC has n=10bit, FSR=5V
return(value_mv);
}
void setup(){
pinMode(PIN_TO_SAMPLE, INPUT);
pinMode(LED_PIN_OVERVOLT, OUTPUT);
Serial.begin(9600);
Serial.println("Welcome to our Soundbar project.");
Serial.println("Sampling on pin 2.");
Serial.print("Sampling frequency on @ ");
Serial.print(frequenza);
Serial.print("kHZ");
Serial.println();
delay(4000);
}
void loop(){
voltage=perform_acquisition();
Serial.print(voltage);
Serial.println("mV");
//delay(SAMPLE_TIME_US);
delayMicroseconds(SAMPLE_TIME_US);
float media=(somma + voltage)/num_media;
somma=somma+voltage;
num_media++;
Serial.print("La media è: ");
Serial.print(media);
Serial.println();
if(media>MAX_MEAN_MV){
digitalWrite(LED_PIN_OVERVOLT, HIGH);
}
else{
digitalWrite(LED_PIN_OVERVOLT, LOW);
}
}