Diese Seite ist auch in 2 anderen Sprachen verfügbar.

analogWriteResolution()

[Zero, Due & MKR Family]

Beschreibung

analogWriteResolution() ist eine Erweiterung der Analog-API für Arduino Due.

analogWriteResolution() setzt die Auflösung der analogWrite() Funktion. Der Standardwert ist 8 Bit (Werte zwischen 0-255), um die Abwärtskompatibilität mit AVR-basierten Boards zu gewährleisten.

Der Due verfügt über die folgenden Hardwarefunktionen:

  • 12 Pins, die standardmäßig auf 8-Bit-PWM eingestellt sind, wie auf den AVR-basierten Boards. Diese können auf 12-Bit-Auflösung geändert werden.

  • 2 Pins mit 12-Bit-DAC (Digital-Analog-Wandler)

Wenn die Schreibauflösung auf 12 gesetzt wird, kann analogWrite() mit Werten zwischen 0 und 4095 verwendet werden, um die volle DAC-Auflösung auszunutzen oder das PWM-Signal ohne Überrollen festzulegen.

Der Zero verfügt über die folgenden Hardwarefunktionen:

  • 10 Pins, die standardmäßig auf 8-Bit-PWM eingestellt sind, wie auf den AVR-basierten Boards. Diese können auf 12-Bit-Auflösung geändert werden.

  • 1 Pin mit 10-Bit-DAC (Digital-Analog-Wandler)

Wenn die Schreibauflösung auf 10 gesetzt wird, kann analogWrite() mit Werten zwischen 0 und 1023 verwendet werden, um die volle DAC-Auflösung auszunutzen.

Die MKR-Familie verfügt über die folgenden Hardwarefunktionen:

  • 4 Pins, die standardmäßig auf 8-Bit-PWM eingestellt sind, wie auf den AVR-basierten Boards. Diese können auf 12-Bit-Auflösung geändert werden.

  • 1 Pin mit 10-Bit-DAC (Digital-Analog-Wandler)

Wenn die Schreibauflösung auf 12 Bit gesetzt wird, kann Sie analogWrite() mit Werten zwischen 0 und 4095 für PWM-Signale verwendet werden. Wenn 10 Bit am DAC-Pin gesetzt werden, kann die volle DAC-Auflösung von 1024 Werten benutzt werden.

Syntax

analogWriteResolution(bits)

Parameter

bits: bestimmt die Auflösung (in Bits) der Werte, die in der Funktion analogWrite() verwendet werden. Der Wert kann zwischen 1 und 32 liegen. Wenn eine höhere oder niedrigere Auflösung als die Hardwarefunktionen Ihres Boards gewählt wird, wird der in analogWrite() verwendete Wert entweder abgeschnitten, wenn er zu hoch ist, oder mit Nullen aufgefüllt, wenn er zu niedrig ist. 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);
  // Pins als Ausgabepins setzen
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  // Lesen des Eingangspins auf A0 und Zuordnung zu einem
  // PWM-Pin mit einer LED
  int sensorVal = analogRead(A0);
  Serial.print("Analog Read) : ");
  Serial.print(sensorVal);

  // Die standardmäßige PWM-Auflösung
  analogWriteResolution(8);
  analogWrite(11, map(sensorVal, 0, 1023, 0, 255));
  Serial.print(" , 8-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 255));

  // Ändern der PWM-Auflösung auf 12 Bit.
  // Die volle 12-Bit-Auflösung wird nur auf dem Due unterstützt
  analogWriteResolution(12);
  analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
  Serial.print(" , 12-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 4095));

  // Ändern der PWM-Auflösung auf 4 Bit.
  analogWriteResolution(4);
  analogWrite(13, map(sensorVal, 0, 1023, 0, 15));
  Serial.print(", 4-bit PWM value : ");
  Serial.println(map(sensorVal, 0, 1023, 0, 15));

  delay(5);
}

Anmerkungen und Warnungen

Wenn der Wert von analogWriteResolution() auf einen höheren Wert als die Fähigkeiten des Boards gesetzt werden, werden die zusätzlichen Bits vom Arduino verworfen. Zum Beispiel: Wenn beim Due analogWriteResolution (16) auf einem 12-Bit-DAC-Pin verwendet wird, werden nur die ersten 12 Bits der an analogWrite() übergebenen Werte verwendet und die letzten 4 Bits werden verworfen.

Wenn der Wert von analogWriteResolution() auf einen niedrigeren Wert als die Fähigkeiten des Boards gesetzt werden, werden die fehlenden Bits mit Nullen aufgefüllt, um die erforderliche Hardware-Größe zu füllen. Zum Beispiel: Wenn der Due mit analogWriteResolution(8) auf einem 12-Bit-DAC-Pin verwendet wird, fügt der Arduino dem 8-Bit-Wert, der in analogWrite() verwendet wird, 4 Null-Bits hinzu, um die erforderlichen 12 Bit zu erhalten.

Siehe auch