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

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
Строка 62: Строка 62:
<references />
<references />


{{Навигационная таблица/Справочник языка Arduino}}
{{Навигационная таблица/Портал/Arduino}}
{{Навигационная таблица/Arduino библиотеки}}
 
{{Навигационная таблица/Arduino продукты}}
 
{{Навигационная таблица/Arduino/Примеры}}
 
{{Навигационная таблица/Телепорт}}
 


[[Категория:Справочник языка Arduino]]
[[Категория:Справочник языка Arduino]]
[[Категория:Функция]]
[[Категория:Функция]]

Текущая версия от 11:28, 8 июля 2023

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


Функция 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).

Пример

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

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
}

См.также

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