Cправочник Arduino

analogWrite() - PWM

Запускает генерацию ШИМ сигнала на выбранном пине и устанавливает коэффициент заполнения. Может использоваться, например, для установки различной яркости свечения светодиода или управления скоростью вращения электромотора. После вызова функции analogWrite() соответствующий пин начнёт генерировать прямоугольные сигналы c заданным коэффициентом заполнения и частотой примерно 490 герц (980 герц на пинах 5,6 у Arduino Uno и пинах 3,11 у Arduino Leonardo) до тех пор, пока функция analogWrite() не будет вызвана с новыми параметрами (либо до вызова функций digitalRead() или digitalWrite() для этого же пина)

На большинстве плат Arduino (с микроконтроллерами ATmega168 или ATmega328) эта функция работает для пинов 3, 5, 6, 9, 10, и 11. На Arduino Mega она работает с пинами 2 - 13 и 44 - 46. Более старые версии Arduino с микроконтроллером ATmega8 поддерживают analogWrite() только для пинов 9-11

Arduino Due поддерживает функцию analogWrite() для пинов 2-13, а также пинов DAC0 и DAC1. В отличии от ШИМ пинов DAC0 и DAC1 являются ЦАПами и работают как действительные аналоговые выходы

Перед вызовом функции analogWrite() не требуется устанавливать режим выхода на пине функцией pinMode()

Функция analogWrite не имеет никакого отношения к аналоговым пинам и функции analogRead().

 

Синтаксис: analogWrite(pin, value)
Параметры:pin: выбранный пин; value: коэффициент заполнения от 0 до 255.
Возвращаемое значение: отсутствует

 

Примечание:
ШИМ сигнал, сгенрированный пинами 5 и 6 может иметь коэффициенты заполнения выше ожидаемых значений. Это происходит из-за особенностей взаимодействия функций millis() и delay() , которые делят один и тот же внутренний таймер, используемый для генерации ШИМ сигнала.
Это будет заметно в основном на низких коэффициентах заполнения (0-10) и может привести к тому, что при нулевом коэффициенте заполнения выход сигнала с пинов 5 и 6 будет отключён не полностью