Zum Inhalt springen

Arduino Befehl: analogRead()

    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.


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


    Arduino-BoardBetriebsspannungPinsAuflösung
    Uno5 VoltA0 to A510 bits
    Mini, Nano5 VoltA0 to A710 bits
    Mega, Mega2560, MegaADK5 VoltA0 to A1410 bits
    Micro5 VoltA0 to A11*10 bits
    Leonardo5 VoltA0 to A11*10 bits
    Zero3.3 VoltA0 to A512 bits**
    Due3.3 VoltA0 to A1112 bits**
    MKR-Boards3.3 VoltA0 to A612 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

    Arduino analogRead() Befehl

    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


    2 Gedanken zu „Arduino Befehl: analogRead()“

    1. 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?

    2. 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

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

     

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.