#include const long sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz) unsigned int sample; WiFiManager wifi; void setup() { Serial.begin(115200); if (!wifi.autoConnect("esp_test")) { Serial.println("not connected"); } } unsigned long millisConnected; // Last time connected unsigned long startMillis; // Start of sample window unsigned int peakToPeak; // peak-to-peak level unsigned int signalMax; unsigned int signalMin; void loop() { if (WiFi.status() != WL_CONNECTED) { Serial.print("not connected"); while(WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } millisConnected = millis(); Serial.println(); } startMillis = millis(); peakToPeak = 0; signalMax = 0; signalMin = 1024; // collect data for 50 mS while (millis() - startMillis < sampleWindow) { sample = analogRead(A0); // coment out delay(3) below // and check on serial monitor // if Wi-Fi connection // is not being lost and then recovered // every half a dozen or so seconds delay(3); 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 * 3.3) / 1024; // convert to volts Serial.print((millis()-millisConnected)/1000); Serial.print(" "); Serial.println(peakToPeak); }