Diese Seite ist auch in 1 anderen Sprachen verfügbar.
Sprache wechseln  

analogReadResolution()

[Zero, Due & MKR Family]

Beschreibung

analogReadResolution() ist eine Erweiterung der Analog-API für die Zero-, Due- und MKR-Familie sowie die Arduino Nano 33 (BLE und IoT) und Portenta.

Legt die Größe (in Bits) des von analogRead() zurückgegebenen Werts fest. Der Standardwert ist 10 Bit (gibt Werte zwischen 0-1023 zurück), um die Abwärtskompatibilität mit AVR-basierten Boards zu gewährleisten.

Die Boards Zero, Due, MKR und Nano 33 (BLE und IoT) verfügen über 12-Bit-ADC-Funktionen, auf die durch Ändern der Auflösung auf 12 zugegriffen werden kann. Dadurch werden Werte von analogRead() zwischen 0 und 4095 zurückgegeben. Der Portenta H7 verfügt über einen 16-Bit-ADC, der Werte zwischen 0 und 65535 zulässt.

Syntax

analogReadResolution(bits)

Parameter

bits: bestimmt die Auflösung (in Bits) des von der Funktion analogRead() zurückgegebenen Wert. Man kann dies zwischen 1 und 32 einstellen. Man kann auch Auflösungen höher als die unterstützten 12 oder 16 Bit einstellen, aber Werte, die von analogRead() zurückgegeben werden, unterliegen einer Rundung. Weitere Informationen finden sich im Hinweis unten.

Rückgabewert

Nichts.

Beispielcode

Der Code zeigt, wie ADC mit unterschiedlichen Auflösungen verwendet wird.

void setup() {
  // Öffne serielle Kommunikation
  Serial.begin(9600);
}

void loop() {
  // Lesen des Eingangspins auf A0 mit der Standardauflösung (10 Bit)
  // und senden auf die serielle Schnittstelle
  analogReadResolution(10);
  Serial.print("ADC 10-bit (default) : ");
  Serial.print(analogRead(A0));

  // Ändern der Auflösung auf 12 Bit und lesen von A0
  analogReadResolution(12);
  Serial.print(", 12-bit : ");
  Serial.print(analogRead(A0));

  // Ändern der Auflösung auf 16 Bit und lesen von A0
  analogReadResolution(16);
  Serial.print(", 16-bit : ");
  Serial.print(analogRead(A0));

  // Ändern der Auflösung auf 8 Bit und lesen von A0
  analogReadResolution(8);
  Serial.print(", 8-bit : ");
  Serial.println(analogRead(A0));

  // Eine kleine Verzögerung, um den seriellen Monitor nicht zu beeinträchtigen
  delay(100);
}

Anmerkungen und Warnungen

Wenn du den Wert von analogReadResolution() auf einen höheren Wert als die Fähigkeiten Ihres Boards setzt, meldet der Arduino nur seine höchste Auflösung und füllt die zusätzlichen Bits mit Nullen auf.

Zum Beispiel: Wenn der Due mit analogReadResolution(16) verwendet wird, erhält man eine angenäherte 16-Bit-Zahl. Die ersten 12 Bits enthalten den echten ADC-Wert und die letzten 4 Bits sind mit Nullen gefüllt.

Wenn du den Wert von analogReadResolution() auf einen Wert setzt, der unter den Fähigkeiten Ihres Boards liegt, werden die aus dem ADC gelesenen least significant bits verworfen.

Durch die Verwendung einer 16-Bit-Auflösung (oder einer anderen höheren als den tatsächlichen Hardwarefunktionen) kann man Sketches schreiben, die automatisch mit einem ADC mit höherer Auflösung umgehen, wenn diese auf zukünftigen Boards verfügbar sind, ohne dass eine Codezeile geändert werden muss.