#include <Adafruit_SSD1306.h>
#define PIN_QUIET 21
#define PIN_MODERATE 22
#define PIN_LOUD 23
#define SENSOR_PIN 26
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
const int sampleWindow = 50;
unsigned int sample;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(PIN_LOUD, OUTPUT);
pinMode(PIN_MODERATE, OUTPUT);
pinMode(PIN_QUIET, OUTPUT);
digitalWrite(PIN_LOUD, HIGH);
digitalWrite(PIN_MODERATE, HIGH);
digitalWrite(PIN_QUIET, HIGH);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}/*
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.display();
*/
}
void loop() {
// put your main code here, to run repeatedly:
unsigned long startMillis = millis();
float peakToPeak = 0;
unsigned int signalMax = 0;
unsigned int signalMin = 4095;
// collect data for 50 mS
while (millis() - startMillis < sampleWindow)
{
sample = analogRead(SENSOR_PIN);
//Serial.println(sample);
}
if (sample <= 2000)
{
digitalWrite(PIN_QUIET, HIGH);
digitalWrite(PIN_MODERATE, LOW);
digitalWrite(PIN_LOUD, LOW);
}
else if ((sample > 2000) && (sample <= 3000))
{
digitalWrite(PIN_QUIET, LOW);
digitalWrite(PIN_MODERATE, HIGH);
digitalWrite(PIN_LOUD, LOW);
}
else
{
digitalWrite(PIN_QUIET, LOW);
digitalWrite(PIN_MODERATE, LOW);
digitalWrite(PIN_LOUD, HIGH);
}
delay(200);
}