Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogWrite()

Материал из Онлайн справочника
Перейти к: навигация, поиск

{{#setlogo:ArduinoCommunityLogo.png}}

Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция analogWrite()

Выдает аналоговую величину (ШИМ волну) на порт входа/выхода. Функция может быть полезна для управления яркостью подключенного светодиода или скоростью электродвигателя. После вызова analogWrite() на выходе будет генерироваться постоянная прямоугольная волна с заданной шириной импульса до следующего вызова analogWrite (или вызова digitalWrite или digitalRead на том же порту входа/выхода). Частота ШИМ сигнала приблизительно 490 Hz.

На большинстве плат Arduino (на базе микроконтроллера ATmega168 или ATmega328) ШИМ поддерживают порты 3, 5, 6, 9, 10 и 11, на плате Arduino Mega порты с 2 по 13. На более ранних версиях плат Arduino, analogWrite() работал только на портах 9, 10 и 11.

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

Функция analogWrite никак не связана с аналоговыми входами и с функцией analogRead.

Синтаксис

analogWrite(pin, value)

Параметры

pin: порт входа/выхода на который подаем ШИМ сигнал.
value: период рабочего цикла значение между 0 (полностью выключено) и 255 (сигнал подан постоянно).

Возвращаемое значение

нет

Замечание

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

Пример

Задание яркости светодиода пропорционально значению, снимаемому с потенциометра

  1. int ledPin = 9;    // Светодиод подключен к выходы 9
  2. int analogPin = 3; // потенциометр подключен к выходу 3
  3. int val = 0;       // переменная для хранения значения
  4.  
  5. void setup()
  6. {
  7.     pinMode(ledPin, OUTPUT);      // установка порта на выход
  8. }
  9.  
  10. void loop()
  11. {
  12.     val = analogRead(analogPin);  // считываем значение с порта, подключенному к потенциометру
  13.     analogWrite(ledPin, val / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
  14. }

См.также

Внешние ссылки