analogWrite — Write an analog value (PWM wave) to a pin
void analogWrite(pin, value);
int pin;
int value;
Posílá na pin analogový signál ve formě PWM. Hodnota value je v rozsahu 0 (vypnuto) až 255 (plně zapnuto).
Parametr pin smí nabývat na Arduinu jen hodnot 9, 10 a 11. Souvisí to s tím, že jen k těmto pinům jsou připojeny obvody generování PWM signálu. Na jiných mikropočítačích ATmega to mohou být jiné piny, a může jich být také jiný počet.
Pomocí analogWrite můžeme Arduinem generovat analogový signál. Mikropočítač ATmega použitý v Arduinu nemá analogový výstup. Analogový signál se vytváří integrováním PWM signálu na kondenzátoru. Funkce analogWrite zajišťuje tedy generování PWM signálu o stanovené střídě.
Protože se PWM signál generuje pomocí vnitřních obvodů čítačů/časovačů, můžeme použít jen takové piny, na které je signál OCn mikropočítače vyveden.
PWM signál je generovaný na kmitočtu cca 490Hz.
PWM signál generovaný na pinech 5 a 6 je v konfliktu s funkcemi milis() a delay.
Tabulka 40.32.
| čip | PWM piny |
|---|---|
| ATmega8 | d9,d10,d11 |
| ATmega168 | 3, 5, 6, d9,d10,d11 |
| ATmega328 | 3, 5, 6, d9,d10,d11 |
| Arduino Mega | 2 — 13 |
int pin = 11; // LED
int pulseWidth = 127; // Libovolná hodnota mezi 0 až 255
void setup()
{
/* pro analogWrite není potřeba žádné inicializace */
}
void loop()
{
analogWrite(pin, pulseWidth);
}