//Autor: Dietler
//Programm: PT1 Filter
//Datum: 02.10.2024

//Bibliotheken

// Konstanten
#define ADC_IN_POTI 32
#define DELAY 50
#define KPT1 1.0
#define Time 1000.0

// Globale Variablen
unsigned long prevMillis = 0;
int adcValue = 0;
float filteredValue = 0;

void setup() {
  // Serielle Verbindung initialisieren
  Serial.begin(115200);
  Serial.println("Hello, ESP32!");
}

void loop() {

  unsigned long dt = millis(); - prevMillis;

  // Im 10ms Takt ADC-Wert einlesen
  if (dt >= DELAY) {
    prevMillis = millis();

    // ADC-Wert vom Pin auslesen
    adcValue = analogRead(ADC_IN_POTI);

    // Tiefpassfilter 1. Ordnung (PT1-Glied) anwenden
    filteredValue = filteredValue + (KPT1 * adcValue - filteredValue) * dt / (dt + Time);

    // Ergebnis ausgeben
    Serial.print(adcValue);
    Serial.print(", ");
    Serial.println(filteredValue);
  }
}