Функция передает аналоговое значение (cигнал ШИМ ) на вывод. Может использоваться для регулировки яркости светодиодов или для управления двигателем с различной скоростью. После вызова analogWrite() на соответствующем выводе (пине) будет генерироваться устойчивый прямоугольный сигнал указанного рабочего цикла до следующего вызова analogWrite() (или вызова digitalRead() либо digitalWrite() ) для того же контакта. Частота ШИМ-сигнала на большинстве контактов составляет приблизительно 490 Гц. На платах Uno и аналогичных платах контакты 5 и 6 имеют частоту приблизительно 980 Гц.
На большинстве плат Arduino (с платами ATmega168 или ATmega328P) эта функция работает на контактах 3, 5, 6, 9, 10 и 11. На плате Arduino Mega она работает на контактах 2-13 и 44-46. Старая версия Arduino Платы с ATmega8 поддерживают только analogWrite() контакты 9, 10 и 11.
Arduino DUE поддерживает analogWrite() контакты 2-13, а также контакты DAC0 и DAC1. В отличие от выводов PWM, DAC0 и DAC1 являются цифро-аналоговыми преобразователями и действуют как настоящие аналоговые выходы.
Вам не нужно звонить, pinMode() чтобы установить вывод в качестве выхода перед вызовом analogWrite(). Функция не имеет ничего общего с аналоговыми штифтами или функции.
analogWrite(pin, value)
pin: пин для записи. Разрешенные типы данных: int.
value: рабочий цикл: от 0 (всегда выключен) до 255 (всегда включен). Разрешенные типы данных: int
нет
Устанавливает выходной сигнал светодиода пропорционально значению, считанному с потенциометра.
int ledPin = 9; // Светодиод на выводе 9 int analogPin = 3; // Потенциометр на выводе 3 int val = 0; // Переменная для хранения считанного значения void setup() { pinMode(ledPin, OUTPUT); // Установка пина на выход } void loop() { val = analogRead(analogPin); // Считываем данные analogWrite(ledPin, val / 4); // analogRead работает в диапазоне от 0 до 1023, // analogWrite - от 0 до 255. }
Выходы ШИМ, генерируемые на контактах 5 и 6, будут иметь более высокие, чем ожидалось, рабочие циклы. Это происходит из - за взаимодействия с функциями millis()и delay(), которые совместно используют один и тот же внутренний таймер, используемый для генерации ШИМ. Это заметно в основном при низких настройках рабочего цикла (например, 0 - 10) и может привести к тому, что значение 0 не полностью отключит выход на контактах 5 и 6.