Arduino analogRead(): Analoge Sensoren richtig auslesen

Die Bauteile

Für dieses Tutorial benötigst du folgende Komponenten:

Was ist analogRead()?

Die analogRead()-Funktion liest analoge Spannungswerte an den Analog-Pins (A0-A5 beim UNO) deines Arduino aus. Im Gegensatz zu digitalen Pins, die nur HIGH oder LOW erkennen, können analoge Pins Spannungswerte zwischen 0V und 5V messen. Das eröffnet dir völlig neue Möglichkeiten für deine Projekte.

Der Analog-Digital-Wandler (ADC)

Der Arduino verfügt über einen 10-Bit Analog-Digital-Wandler. Das bedeutet für dich:


Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


  • Eingangsspannung: 0V bis 5V (beim 5V-Arduino)
  • Ausgabewert: 0 bis 1023 (2^10 = 1024 Schritte)
  • Auflösung: ca. 4,9mV pro Schritt (5V / 1024)

Ein Wert von 0 entspricht 0V, ein Wert von 1023 entspricht 5V. Alle Werte dazwischen werden proportional umgerechnet.

Verkabelung / Schaltplan

Arduino Schaltplan mit Potentiometer an Pin A3 zur analogen Messung mit analogRead

Die Verkabelung des Potentiometers ist einfach und ich erkläre dir jeden Schritt:

  • Linker Pin des Potentiometers → 5V am Arduino
  • Mittlerer Pin (Schleifer) des Potentiometers → A3 am Arduino
  • Rechter Pin des Potentiometers → GND am Arduino

Wenn du das Potentiometer drehst, verändert sich die Spannung am mittleren Pin zwischen 0V und 5V. Diese Spannung wird vom Arduino ausgelesen und in einen Wert zwischen 0 und 1023 umgewandelt.

Der Code

int analogPin = A3;    // Anschluss des Potentiometer
int val = 0;           // speichert den gelesenen Wert

void setup() {
  Serial.begin(115200); // startet die serielle Schnittstelle
}

void loop() {
  val = analogRead(analogPin); // Lesen des Eingangspins
  Serial.println(val); // Serielle Ausgabe
}

So funktioniert der Code:

Ich erkläre dir die einzelnen Bestandteile des Codes:

  • Variable analogPin: Hier definierst du Pin A3 als Eingangspin für dein Potentiometer
  • Variable val: Diese Variable speichert den ausgelesenen Wert
  • Serial.begin(115200): Damit initialisierst du die serielle Kommunikation mit 115200 Baud
  • analogRead(analogPin): Diese Funktion liest den analogen Wert am Pin A3 aus
  • Serial.println(val): Gibt den gemessenen Wert im seriellen Monitor aus

Öffne den seriellen Monitor (Strg+Shift+M) in der Arduino IDE und drehe am Potentiometer – du wirst sehen, wie sich die Werte zwischen 0 und 1023 verändern.

Praktische Anwendungen

Mit analogRead() stehen dir zahlreiche Möglichkeiten offen:

  • Drehregler und Joysticks für Steuerungen auslesen
  • Temperatursensoren wie den TMP36 einbinden
  • Lichtsensoren (LDR) für lichtabhängige Projekte nutzen
  • Feuchtigkeitssensoren für Bewässerungssysteme verwenden
  • Analoge Spannungen messen und verarbeiten

Tipps für fortgeschrittene Anwendungen

Ich gebe dir noch ein paar nützliche Hinweise:

  • Verwende die map()-Funktion, um den Wertebereich von 0-1023 auf andere Bereiche umzurechnen
  • Mit analogReference() kannst du die Referenzspannung ändern (z.B. auf 3.3V)
  • Für stabilere Messungen kannst du mehrere Werte mitteln
  • Beachte, dass analogRead() ca. 100 Mikrosekunden benötigt

Fazit

Mit analogRead() erschließt du dir die Welt der analogen Sensorik. Du kannst nun die Brücke zwischen der digitalen Arduino-Welt und analogen Sensoren schlagen. Die Funktion bildet die Grundlage für viele Arduino-Projekte und ist essentiell für die Interaktion mit der realen, analogen Welt. Ich empfehle dir, mit verschiedenen Sensoren zu experimentieren und die vielfältigen Möglichkeiten zu entdecken!


Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

  • Die beliebtesten Arduino-Projekte von StartHardware
  • Inklusive Schaltplan, Beschreibung und Code
  • Arduino-Schnellstart-Kapitel
  • Kompakter Programmierkurs


0 0 votes
Article Rating
Abonnieren
Benachrichtige mich bei
2 Comments
Newest
Oldest Most Voted
Inline Feedbacks
Alle Kommentare anzeigen
2 Jahre zuvor

Hallo,
ich habe die Analogwebseite aufgerufen und mit Tinkercad.com simuliert.
Habe einen Spannungsteiler mit zwei Widerständen je 1kOhm aufgebaut und die an die Arduino 5V dran gehängt. Bei Messung kam aber nicht 2,5 V (Wert 512) raus, sondern 637 (3V). Woran liegt das? Ist das ein Bug von Tinkercad?

Rainer Springer
2 Jahre zuvor

Moin, ich bin blutiger Anfänger. Kann man über die analogen Eingänge z.B. 5 Volt auf A0 auslesen und dann über einen analogen Ausgang A3 ein Relais ansteuern?
Gruß Rainer

2
0
Ich würde mich über deine Meinung freuen.x