class BreathDetector {
  unsigned int micPin;
  unsigned int micThreshold;
  unsigned int ledCount;
  unsigned long lastBreathTime;
  bool breathDetected;

  public:
    BreathDetector(unsigned int pin, unsigned int threshold, unsigned int ledsCount) {
      micPin = pin;
      micThreshold = threshold;
      ledCount = ledsCount;
      lastBreathTime = 0;
      breathDetected = false;
    }

    void update() {
      int micValue = analogRead(micPin);
      if (micValue > micThreshold && millis() - lastBreathTime > 2000) {
        lastBreathTime = millis();
        breathDetected = true;
    
        Serial.println("Breath detected");
        Blynk.logEvent("breathing_event");
        
        for (int i = 0; i < ledCount; i++) {
          strip.setPixelColor(i, strip.Color(255, 0, 0));
        }
        strip.show();
        delay(300);
        strip.clear();
        strip.show();
      } else {
        breathDetected = false;
      }
    }
};
