Reference   Language | Libraries | Comparison | Changes

analogWrite()

Beschreibung

Gibt einen analogen Wert (PWM wave?) auf einem Pin aus. Dies kann entweder für die Helligkeitssteuerung einer LED oder zur Geschwindigkeitsregelung eines Motors verwendet werden. Nach einem Aufruf analogWrite() liegt am bezeichneten Pin ein fertiges Rechtecksignal mit definiertem Tastverhältnis bis zum nächsten analogWrite() (oder Aufruf mit digitalRead() oder digitalWrite() am gleichen Pin) an. Die Frequenz dieser Pulsweitenmodulation (PWM) beträgt ungefähr 490 Hz.

Bei den meisten Arduino-Boards (diejenigen mit einem ATmega168 oder ATmega328) ist das mit den Pins 3, 5, 6, 9, 10, und 11 möglich; bei einem Arduino-Mega sind das die Pins 2 bis 13. Bei älteren Arduino-Boardsmit einem ATmega8 wird analogWrite() an den Pins 9, 10, and 11 unterstützt.

Der Arduino Due kann analogWrite() an den Pins 2 bis 13 verarbeiten und zusätzlich auf den Pins DAC0 und DAC1. Im Gegensatz zu den PWM-Pins besitzen DAC0 und DAC1 Digital/Anlog-Wandler und sind daher echte analoge Ausgänge.

Es ist nicht notwendig vor dem Aufruf von analogWrite() die betreffenden Pins als Output zu definieren.

Die Funktion analogWrite() hat nichts mit den analogen Pins oder der Funktion analogRead() zu tun.

Syntax

analogWrite(pin, value)

Parameter

pin: Der Pin auf den geschrieben wird

value: Das Tastverhältnis als Wert zwischen 0 (immer AUS) und 255 (immer AN)

Rückgaben

Keine

Hinweise und bekannte Besonderheiten

Die PWM-Ausgänge an den Pins 5 und 6 werden Tastverhältnisse ausgeben, die höher als erwartet sind. Das hängt mit der Beeinflussung durch die Funktionen miilis() und delay() zusammen, die sich den gleichen internen Timer mit der PWM-Logik teilen müssen. Dieser Fehler wird meistens bei niedrigen Tastverhältnissen (z.B. 0-10) bemerkt und führt bei einem Wrt von 0 dazu, dass der Ausgang bei Pin 5 und 6 nicht völlig aus geht

Beispiel

Schaltet den Ausgang für eine LED proportional zum gelesenen Wert eines angeschlossenen Potentiometers

int ledPin = 9;      // LED an digitalem Pin 9 angeschlossen
int analogPin = 3;   // Potentiometer am analogen Pin 3 angeschlossen
int val = 0;         // Variable in die der gelesene Wert eingetragen wird

void setup()
{
  pinMode(ledPin, OUTPUT);   // setzt den Pin ledPin als Output
}

void loop()
{
  val = analogRead(analogPin);   // liest den Input Pin
  analogWrite(ledPin, val / 4);  // analogRead Werte reichen von 0 to 1023, analogWrite Werte von 0 to 255
}

Mehr Informationen

Reference Home

Corrections, suggestions, and new documentation should be posted to the Forum.

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.

Share