Приветствую Вас ГостьПятница, 03.05.2024, 07:26

AVR & ARDUINO




Каталог статей

Главная » Статьи » Справочник

analogWrite()

Описание

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

На большинстве плат Arduino (на базе микроконтроллеров ATmega168 или ATmega328) функция analogWrite() работает с контактами 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. В отличие от ШИМ-контактов, DAC0 и DAC1 являются контактами цифро-аналоговых преобразователей, поэтому при вызове analogWrite() ведут себя как обычные аналоговые контакты.

Для вызова analogWrite() не требуется предварительно конфигурировать контакта в качестве выхода через pinMode().

Функция analogWrite() не имеет ничего общего с аналоговыми контактами и функцией analogRead().

Синтаксис

 analogWrite(pin, value);

Параметры

pin - номер контакта, который будет генерировать ШИМ.

value - относительная ширина импульса (или длительность присутствия высокого уровня напряжения) в виде числа от 0 (всегда выключен) до 255 (всегда включен).

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

нет

Примечания и известные проблемы

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

Пример

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

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 to 255*/
}

Смотрите также:

analogRead()

analogWriteResolution()

Инструкция: ШИМ


Справочник

Материалы взяты с официального сайта проекта Arduino и представлены по лицензии Creative Commons Attribution-ShareAlike 3.0 License.



Источник: http://arduino.cc/en/Reference/AnalogWrite
Категория: Справочник | Добавил: magi (28.01.2015)
Просмотров: 2094 | Теги: шим, вывод ШИМ | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Поиск
Вход на сайт
На правах рекламы

Мы переезжаем на сайт Arduino по-русски