#include // Konfiguration für den Mittelwertfilter #define N 5 #define FILTER_SAMPLES (1<>1)) >> N; int zielStufe = geglaetteterWert >> 6; if (zielStufe != aktuelleStufe) { int schwellenWert = zielStufe * 64; if ((zielStufe > aktuelleStufe && geglaetteterWert > (schwellenWert + HYSTERESE)) || (zielStufe < aktuelleStufe && geglaetteterWert < (schwellenWert + HYSTERESE))) aktuelleStufe = zielStufe; } } int main(void) { // int initial_adc = analogRead(ANALOG_IN_PIN); int initial_adc = 300; // analogRead(ANALOG_IN_PIN); for (int i = 0; i < FILTER_SAMPLES; i++) messwerte[i] = initial_adc; messwertSumme = initial_adc << N; geglaetteterWert = initial_adc; for (int adc = initial_adc; adc < 1024; adc++) { //magicblock(analogRead(ANALOG_IN_PIN)); magicblock(adc); printf("%6d %6d %2d\n", adc, geglaetteterWert, aktuelleStufe); } for (int i = 0; i < 50; i++) { magicblock(1023); printf("%6d %6d %2d\n", 1023, geglaetteterWert, aktuelleStufe); } for (int adc= 1023; adc >= 0; adc--) { magicblock(adc); printf("%6d %6d %2d\n", adc, geglaetteterWert, aktuelleStufe); } for (int i = 0; i < 50; i++) { magicblock(0); printf("%6d %6d %2d\n", 0, geglaetteterWert, aktuelleStufe); } return 0; }