#include <VolAnalyzer.h>
#define LED_PIN 13
#define MIC_PIN A0
#define BAUD_SPEED 9600
#define CLAP_LVL 600
#define CLAP_WINDOW_H 500
#define CLAP_NUM 2
VolAnalyzer VA(MIC_PIN);
static bool LED_STATE = 0;
int DELAY = constrain(DELAY, 500, 2500);
void setup() {
pinMode(MIC_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
Serial.begin(BAUD_SPEED);
}
void loop() {
if(Serial.available() > 1){
DELAY = Serial.parseInt();
DELAY = constrain(DELAY, 500, 2500);
Serial.println(DELAY);
}
static uint32_t timer = millis();
static uint8_t counter = 0;
static uint32_t i = 0;
if(VA.tick()){
if(VA.pulse() && (VA.getMax() >= CLAP_LVL)){
Serial.print(i++);
Serial.println(" Pulse");
if((millis() - timer) >= DELAY && (millis() - timer) <= CLAP_WINDOW_H + DELAY)
counter++;
else counter = 0;
timer = millis();
}
}
if(counter && (millis() - timer) >= (DELAY + CLAP_WINDOW_H)){
if(counter + 1 == CLAP_NUM){
LED_STATE = !LED_STATE;
digitalWrite(LED_PIN, LED_STATE);
i = 0;
}
counter = 0;
}
}