analogWrite()

Beschreibung

Schreibt einen Analogwert (PWM-Welle) auf einen Pin. Kann z.B. benutzt werden, um eine LED mit verschiedener Helligkeit leuchten zu lassen oder einen Motor mit unterschiedlicher Geschwindigkeit laufen zu lassen. Nach Aufruf von analogWrite() generiert die Funktion eine stetige Rechteckwelle mit angegebenem Zyklus, bis der nächste Aufruf von analogWrite() (oder digitalRead() oder digitalWrite()) auf dem gleichen Pin erfolgt.

Board PWM-Pins PWM-Frequenz
Uno, Nano, Mini 3, 5, 6, 9, 10, 11 490 Hz (Pins 5 und 6: 980 Hz)
Mega 2 - 13, 44 - 46 490 Hz (Pins 4 und 13: 980 Hz)
Leonardo, Micro, Yún 3, 5, 6, 9, 10, 11, 13 490 Hz (Pins 3 und 11: 980 Hz)
Uno WiFi Rev.2, Nano Every 3, 5, 6, 9, 10 976 Hz
MKR boards [1] 0 - 8, 10, A3 (18), A4 (19) 732 Hz
MKR1000 WiFi [1] 0 - 8, 10, 11, A3 (18), A4 (19) 732 Hz
Zero [1] 3 - 13, A0 (14), A1 (15) 732 Hz
Nano 33 IoT [1] 2, 3, 5, 6, 9 - 12, A2, A3, A5 732 Hz
Nano 33 BLE/BLE Sense 1 - 13, A0 - A7 500 Hz
Due [2] 2-13 1000 Hz
101 3, 5, 6, 9 Pins 3 und 9: 490 Hz, Pins 5 und 6: 980 Hz
  • [1]: Zusätzlich zu den oben erwähnten PWM-Funktionen für die Pins verfügen die MKR- und Zero-Boards über einen echten Analogausgang, wenn analogWrite() auf dem DAC0 (A0)-Pin benutzt wird.
  • [2]: Zusätzlich zu den oben erwähnten PWM-Funktionen für die Pins verfügt das Due-Board über einen echten Analogausgang, wenn analogWrite() auf den DAC0 und DAC1-Pins benutzt wird.

Du musst einen Pin nicht explizit als Ausgabepin über pinMode() festlegen, bevor du analogWrite() nutzt. Die analogWrite()-Funktion hat nichts mit analogen Pins oder der analogRead-Funktion zu tun.

Syntax

analogWrite(pin, value)

Parameter

  • pin: Der Arduino-Pin auf den geschrieben werden soll. Erlaubte Datentypen: int.
  • value: Die Zykluszeit. Werte zwischen 0 (immer aus) und 255 (immer an). Erlaubte Datentypen: int.

Rückgabewert

Nichts.

Beispielcode

Setzt die Ausgabe auf dem LED-Pin proportional zu dem Wert, der von einem Potentiometer gelesen wird.

int ledPin = 9; // LED auf Digitalpin 9 verbunden int analogPin = 3; // Potentiometer auf Pin 3 verbunden int val = 0; // Variable, um den gelesenen Wert zu speichern void setup() { pinMode(ledPin, OUTPUT); // Setzt den Pin als output. } void loop() { val = analogRead(analogPin); // Liest den Wert vom Pin ein analogWrite(ledPin, val / 4); // analogRead: Werte von 0 bis 1023, analogWrite: Werte von 0 bis 255 }

※ Anmerkungen und Warnungen:

Die PWM-Ausgaben auf Pins 5 und 6 werden höhere Zyklen als erwartet haben. Dies passiert, weil die Funktionen millis() und delay() den gleichen internen Timer nutzen, um diese PWM-Ausgaben zu generieren. In kleinen Zyklen (z.B. 0 bis 10) ist der Effekt am stärksten und kann dazu führen, dass der Wert 0 die Spannung auf Pin 5 und 6 nicht komplett wegnimmt, d.h. dass z.B. bei Wert 0 die LED trotzdem leuchtet.

Siehe Auch

Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.