Beschreibung
Liest den Wert vom angegebenen analogen Pin aus. Arduino-Boards enthalten einen mehrkanaligen 10-Bit-Analog-Digital-Wandler. Das bedeutet, dass er Eingangsspannungen zwischen 0 und der Betriebsspannung (5V oder 3,3V) in ganzzahlige Werte zwischen 0 und 1023 abbildet. Bei einem Arduino UNO beispielsweise ergibt dies eine Auflösung zwischen den Messungen von: 5 Volt / 1024 Einheiten oder 0,0049 Volt (4,9 mV) pro Einheit. In der Tabelle unten findest du die nutzbaren Pins, die Betriebsspannung und die maximale Auflösung für einige Arduino-Boards.
Der Eingangsbereich kann mit analogReference() geändert werden, während die Auflösung (nur für Zero-, Due- und MKR-Boards) mit analogReadResolution() geändert werden kann.
Bei ATmega-basierten Boards (UNO, Nano, Mini, Mega) dauert das Lesen eines analogen Eingangs etwa 100 Mikrosekunden (0,0001 s), sodass die maximale Leserate etwa 10.000 Mal pro Sekunde beträgt.
Arduino-Board | Betriebsspannung | Pins | Auflösung |
---|---|---|---|
Uno | 5 Volt | A0 to A5 | 10 bits |
Mini, Nano | 5 Volt | A0 to A7 | 10 bits |
Mega, Mega2560, MegaADK | 5 Volt | A0 to A14 | 10 bits |
Micro | 5 Volt | A0 to A11* | 10 bits |
Leonardo | 5 Volt | A0 to A11* | 10 bits |
Zero | 3.3 Volt | A0 to A5 | 12 bits** |
Due | 3.3 Volt | A0 to A11 | 12 bits** |
MKR-Boards | 3.3 Volt | A0 to A6 | 12 bits** |
*A0 bis A5 sind auf dem Board beschriftet, A6 bis A11 sind jeweils auf den Pins 4, 6, 8, 9, 10 und 12 verfügbar.
**Die Standardauflösung analogRead() für diese Boards beträgt aus Kompatibilitätsgründen 10 Bit. Du musst analogReadResolution() verwenden, um sie auf 12 Bit zu ändern.
Syntax
analogRead(pin);
Parameter
Pin: der Name des analogen Eingangspins, von dem gelesen werden soll (A0 bis A5 bei den meisten Boards, A0 bis A6 bei MKR-Boards, A0 bis A7 bei der Mini und Nano, A0 bis A15 bei der Mega).
Returns
Der analoge Messwert auf dem Pin. Sie ist auf die Auflösung des Analog-Digital-Wandlers beschränkt (0-1023 für 10 Bit oder 0-4095 für 12 Bit). Datentyp: int.
Beispiel Code
Der Code liest die Spannung an analogPin und zeigt sie im seriellen Monitor an. Achte darauf, die richtige Baud-Rate im seriellen Monitor einzustellen (115200).
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 }
Schaltung
Hinweise und Warnungen
Wenn der analoge Input-Pin nicht mit einem Bauteil verbunden ist, schwankt der von analogRead() zurückgegebene Wert z. B. durch die Werte der anderen Analogeingänge, elektromagnetischer Störungen etc.
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
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?
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