Arduino Mikrocontroller Tutorials - Input/Output

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

Schaltplan Poti an analogen Eingang anschließen
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); } }