Potiwert einlesen
Durch den eingebauten ADC (= Analog Digital Converter) wird die am analogen Eingang gemessene Spannung in 1024 Teile aufgelöst (0-1023). Also immer in 4,88mV Schritten. Die Genauigkeit des ADC beträgt +/- 2 Schritte. Also +/- 9,7mV. Manche Potis haben an ihren Endanschlägen jeweils noch einen Restwiderstand womit sie die beiden Endwerte 0 und 1023 nicht ganz erreichen.
Schaltung und Programmcode
void setup() {
// Serielle Schnittstelle einrichten
Serial.begin(9600);
}
void loop() {
// Eingang A0 mit dem ADC messen und in 'wert' digital speichern
int wert = analogRead(A0);
// gemessener Wert ausgeben
Serial.println(wert);
delay(1000);
}
Optimierter Programmcode mit Hysterese
Aufgrund der ADC Genauigkeit von +/- 2 Messstellen oder wegen einem Temperaturdrift des Widerstandes verändern sich die ausgegebene Messwerte von einer zur nächsten Messung ständig. Will man dies nicht, kann man die Messwerte vor der Weiterverarbeitung mit einer Hysterese Funktion überprüfen. Erst wenn der Messwert größer oder kleiner der Hysteresetoleranz ist, wird der vorhergehende Wert aktualisiert.
// Toleranz vorgeben innerhalb der keine Änderung übernommen wird
int hysterese = 5;
// Zwischenspeicher definieren
int aktuellerWert, alterWert;
void setup() {
// Serielle Schnittstelle einrichten
Serial.begin(115200);
}
void loop() {
// Eingang A0 mit dem ADC messen und in 'aktuellerWert' speichern
int aktuellerWert = analogRead(A0);
// prüfen ob aktueller Wert größer oder kleiner als der alte Wert plus hysterese ist
if ((aktuellerWert > alterWert+hysterese) || (aktuellerWert < alterWert-hysterese)) {
alterWert = aktuellerWert;
// nur bei einer Änderung wird der Wert angezeigt
Serial.println(alterWert);
}
}