Функция analogWrite() в Ардуино что это

Функция analogWrite() Arduino — еще одна наиболее популярная команда при программировании микроконтроллера у начинающих. Главное практическое применение команды — это изменение ШИМ сигнала на аналоговых выходах Ардуино, которое применяется в основном для плавного изменения яркости светодиода. Рассмотрим синтаксис функции analogWrite в Arduino IDE с примером скетча.

Arduino analogWrite описание функции

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • светодиод и резистор
  • макетная плата
  • провода «папа-папа»

Функция analogWrite() используется для отправки аналогового напряжения на указанный вывод Ардуино (выход должен поддерживать PWM модуляцию). Команду используют для управления яркостью светодиода, скоростью вращения двигателя и т.д. Аргумент analogWrite() представляет целое число от 0 до 255, которое моделирует напряжение от 0 до 5 В на выходе. Чем выше значение, тем выше напряжение.

Синтаксис функции analogWrite() в Arduino IDE

analogWrite (pin, value);

Параметры

pin — номер ШИМ вывода, которым вы хотите управлять
value — значение ШИМ от 0 (всегда выключен) до 255 (всегда включен)

Схема для мигания светодиодом
Схема для плавного мигания светодиодом с analogWrite

Подключите светодиод к 10 пину микроконтроллера, как на схеме выше и загрузите следующую программу. В скетче используется цикл for для плавного изменения значения аргумента в функции analogWrite. В зависимости от величины аргумента (в программе это переменная i) — будет изменяться яркость светодиода. Таким же образом можно менять скорость вращения мотора постоянного тока.

Arduino analogWrite() пример программы

void setup() {
    pinMode(10, OUTPUT); // инициализируем Pin10 как выход
}

void loop() {
   // плавное включение светодиода
   // начальное значение на Pin10 i=0, если i<=255, то прибавляем к i единицу
	for(int i = 0; i <= 255; i++) {
	analogWrite(10, i);
	delay(5); // ставим задержку для эффекта
   }

   //плавное затухание светодиода
   // начальное значение на Pin10 i=255, если i>=255, то вычитаем от i единицу
	for(int i = 255; i >= 0; i--) {
	analogWrite(10, i);
	delay(5); // ставим задержку для эффекта
   }

}

Пояснения к коду:

  1. цифровой вывод 10 установлен как выход в процедуре setup();
  2. в первом цикле for() яркость светодиода увеличивается от 0 до 255, а во втором цикле уменьшается от 255 до 0.



Примечание: Аналоговые входы на микроконтроллерах Arduino (analog In — A0, A1 и т.д.) не имеют отношения к генерации ШИМ сигнала. Они могут использоваться только, как цифровые выходы с помощью команды digitalWrite, а основное их назначение — подключение аналоговых датчиков к микроконтроллеру. Команда analog Write() будет работать только на пинах с ШИМ модуляцией (отмечены знаком тильда ≈).

Заключение. Мы рассмотрели в этой статье, что означает analogWrite в языке Ардуино и как ее можно использовать в скетче. Подробнее с этой командой можно ознакомиться здесь — Плавное включение светодиода. Напомним, что при подключении светодиодов, модулей и датчиков к пинам Arduino, следует не забывать про конфигурацию пина в нужный режим работы — OUTPUT или INPUT.



3 Replies to “Функция analogWrite() в Ардуино что это, описание”

    1. pin10 — пин поддерживающий ШИМ модуляцию (аналоговый выход). Не путайте с аналоговыми входами A0 — A5

  1. //плавное затухание светодиода
    // начальное значение на Pin10 i=255, если i>=255, то вычитаем от i единицу
    Ошибка в описании. Правильно будет: если i >=0, то вычитаем единицу.
    И вопрос. Почему больше или равно? Дойдет до 0 и все равно отнимет 1 от 0? Может просто больше?
    Такой же вопрос про плавное включение.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.