// Program: PT1 Filter
// Autor: David Pranjkovic
// Datum: 02.10.2024
// Bibliotheken
// Konstanten
#define ADC_IN_POTI 32
#define FILTERSIZE 20
#define DELAYINPUT 50 //Abtastzeit geringer als T
#define KPT1 1 // Verstärkungfaktor
#define T 1000 //Zeitkonstante
// Variablen
unsigned long prevMillis = 0;
unsigned int filterIndex = 0;
float filteredValue = 0; //gefilterter Wert
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
void loop() {
// put your main code here, to run repeatedly:
unsigned long dt = millis() - prevMillis;
// Timing: Aufruf im DELAY Takt (z.B 100ms)
if (dt >= DELAYINPUT) {
prevMillis = millis();
int adcValue = analogRead(ADC_IN_POTI);
//gefilterter periodischer wert wird berechnet:
filteredValue = filteredValue + (KPT1 * adcValue - filteredValue) * DELAYINPUT / (DELAYINPUT + T);
Serial.print(adcValue); // Werte vom Potentiometer
Serial.print(",");
Serial.println(filteredValue);
}
}