Hallo mic,
die Funktion PollSwitch() enthält eine 'kleine' Rechnung á la:
return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 63.0 + 0.5));
Hier ist der Wert 63.0 häufig der Übeltäter.
Über eine Änderung von diesem Wert kannst du die Genauigkeit der PollSwitch()-Funktion so anpassen, dass die Widerstandstoleranzen teilweise ausgeglichen werden können.
Entweder 'spielt' du mit diesem Wert ein bisschen rum, oder du probiert einmal über dies hier den Wert vom Asuro selbst bestimmen zu lassen.
Im übrigen kannst du diese Rechnung wesentlich schneller mit folgendem ausführen lassen (ist aus der Asuro-Lib von hier):
return ((10240000L / (long)i - 10000L) * 63 + 5000L) / 10000;
Lesezeichen