Функция 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 (полностью выключено) and 255 (сигнал подан постоянно).
Возвращаемое значение
нет
 
Замечание
Период ШИМ сигнала на портах вход/выхода 5 и 6 будет несколько длиннее. Это связано с тем, что таймер для данных выходов также задействован функциями millis() и delay(). Данный эффект более заметен при установке коротких периодов ШИМ сигнала (0-10).  
 
Пример
Задание яркости светодиода пропорционально значению, снимаемому с потенциометра
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
}
Смотрите также

Справочник языка Arduino

Программирование:

*