Пример ШИМ на ATmega328P (Arduino): функция analogWrite() плавно меняет яркость светодиода на выводе D9 (плавное разгорание и затухание). Скетч setup()/loop() редактируется в свойствах чипа.
Эта страница представляет собой утилиту для того чтобы смоделировать плавная регулировка яркости светодиода (fade, шим) на atmega328p онлайн онлайн при заданных начальных значениях.
В данном примере микроконтроллер ATmega328P демонстрирует принцип работы широтно-импульсной модуляции (ШИМ, PWM). Светодиод подключён к цифровому выводу D9, который поддерживает аппаратную генерацию ШИМ-сигнала. Для ограничения тока светодиод подключается через токоограничивающий резистор номиналом 220 Ом.
После запуска программы в функции setup() вывод D9 настраивается как выход. Основной алгоритм реализован в функции loop(), которая непрерывно изменяет коэффициент заполнения ШИМ-сигнала с помощью функции analogWrite(). Значение, передаваемое в analogWrite(), изменяется в диапазоне от 0 до 255, где 0 соответствует полностью выключенному светодиоду, а 255 — максимальной яркости.
Сначала программа постепенно увеличивает значение ШИМ, из-за чего светодиод плавно разгорается. После достижения максимальной яркости коэффициент заполнения начинает уменьшаться, обеспечивая плавное затухание светодиода. Небольшие задержки между изменениями яркости создают визуально непрерывный эффект изменения интенсивности свечения.
Использование аппаратного ШИМ позволяет регулировать среднее значение напряжения на нагрузке без изменения уровня питающего напряжения. Благодаря высокой частоте переключения импульсов человеческий глаз воспринимает изменение коэффициента заполнения как плавное изменение яркости светодиода.
Исходный код программы, содержащий стандартные функции setup() и loop(), можно редактировать непосредственно в свойствах микроконтроллера в среде моделирования. После внесения изменений скетч автоматически компилируется и загружается в модель ATmega328P, что позволяет быстро изменять алгоритм управления яркостью, экспериментировать с шагом изменения коэффициента заполнения, скоростью разгорания и затухания, а также изучать принципы работы широтно-импульсной модуляции в микроконтроллерах семейства Arduino.









Комментарии