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); }