СОДЕРЖАНИЕ ►
Функция 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 (всегда включен)

Подключите светодиод к 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); // ставим задержку для эффекта } }
Пояснения к коду:
- цифровой вывод 10 установлен как выход в процедуре setup();
- в первом цикле for() яркость светодиода увеличивается от 0 до 255, а во втором цикле уменьшается от 255 до 0.
Примечание: Аналоговые входы на микроконтроллерах Arduino (analog In — A0, A1 и т.д.) не имеют отношения к генерации ШИМ сигнала. Они могут использоваться только, как цифровые выходы с помощью команды digitalWrite, а основное их назначение — подключение аналоговых датчиков к микроконтроллеру. Команда analog Write() будет работать только на пинах с ШИМ модуляцией (отмечены знаком тильда ≈).
Заключение. Мы рассмотрели в этой статье, что означает analogWrite в языке Ардуино и как ее можно использовать в скетче. Подробнее с этой командой можно ознакомиться здесь — Плавное включение светодиода. Напомним, что при подключении светодиодов, модулей и датчиков к пинам Arduino, следует не забывать про конфигурацию пина в нужный режим работы — OUTPUT или INPUT.










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