-
-
Erfahrener Benutzer
Begeisterter Techniker
Hi Joggle,
dann behaupte ich mal, dass Du ein eher 'guter Anfänger' bist wenn Du das als schlecht bezeichnest.
Der Grund für das Fehlverhalten ist, dass die Funktion PollSwitch() nicht so arbeitet wie Du das erwartest.
1) Die Widerstandskette am Asuro ist halt nicht unbedingt 100-Pro genau wegen Fertigungsabweichungen bei den Widerständen.
2) Wird die Messung via PollSwitch() z.B. exact nach drücken des Schalters gestartet, muss erst die minimale Kapazität des Ports und der Leitung geladen werden und ausserdem Prellt der Schalter dabei auch noch.
Das ganze ergibt dann einen zu Kleinen Wert bei dieser Messung.
3) War davor ein anderer Schalter gedrückt gehts evtl. genau andersherum und Du erhälst einen zu hohen Wert.
Ich hab in deinem Programm gesehen dass Du an verschiedenen Stellen wiederholt PollSwitch() verwendest was das beschriebene Verhalten erklären kann, da ja immer eine neue Messung gestartet wird.
Lösungsansatz:
1) Zusammenfassen der Schalterauswertung vor alle IF Anweisungen
2) Mittelwert bilden über z.B. 3-5 Messungen von PollSwitch()
3) Auswerten dieser einen aufbereiteten Messung in den IF-Zweigen
Dann wird das Proggi sicherlich eher ausführen was Du eigentlich wolltest.
Gruss,
O.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen