Введение
Добро пожаловать в ваш первый проект с ШИМ (широтно-импульсной модуляцией)! В этом уроке мы соберем простую схему, которая плавно затухает светодиод от выключенного состояния до яркого и обратно. Это классический проект для начинающих на Arduino, который учит использовать analogWrite() для управления яркостью, скоростью двигателя или любым устройством, реагирующим на изменяющееся среднее напряжение.
Мы будем использовать Velxio — браузерный симулятор схем с аналоговой поддержкой точности SPICE. Никакого оборудования не нужно — только ваш браузер! Вы можете следить, редактировать код и мгновенно видеть результаты.

Обзор схемы
Давайте рассмотрим компоненты и подключения для этого проекта.
Компоненты
| Компонент | Количество | Примечания |
|---|---|---|
| Arduino Uno | 1 | Мозг операции |
| Светодиод (любой цвет) | 1 | Будем использовать синий светодиод |
| Резистор (220 Ом) | 1 | Токоограничивающий резистор (не показан на схеме, но рекомендуется) |
| Соединительные провода | 2 | Для подключений |
Подключение
- Анод светодиода (длинная ножка) → Подключите к контакту Arduino 9 (контакт с поддержкой ШИМ).
- Катод светодиода (короткая ножка) → Подключите к GND на Arduino.
Важно: Всегда используйте токоограничивающий резистор (обычно 220 Ом — 1 кОм) последовательно со светодиодом, чтобы предотвратить его перегорание. В симуляторе Velxio модель светодиода включает внутреннее сопротивление, но в реальной жизни его необходимо добавить.
Вот подробное описание подключения:
- Провод 1 (синий): От контакта Arduino 9 к аноду светодиода (A).
- Провод 2 (черный): От катода светодиода (C) к GND Arduino.
Вот и всё! Всего два соединения. Контакт 9 Arduino может выдавать ШИМ-сигнал, который мы будем использовать для изменения яркости светодиода.

Разбор кода
Откройте редактор кода в Velxio. Вы увидите следующий скетч Arduino:
// Fade LED with PWM
// Smoothly fade LED brightness
const int LED_PIN = 9; // PWM pin
int brightness = 0;
int fadeAmount = 5;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
analogWrite(LED_PIN, brightness);
brightness += fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
delay(30);
}
Как это работает
LED_PIN = 9: Мы используем контакт 9, потому что он поддерживает ШИМ (обозначен символом~на Arduino Uno).brightness: Эта переменная хранит текущее значение ШИМ (от 0 до 255). 0 = выключено, 255 = полная яркость.fadeAmount: Насколько изменяется яркость за каждый цикл. Положительное значение = увеличение яркости, отрицательное = уменьшение.setup(): Настраивает контакт светодиода как выход.loop():analogWrite(LED_PIN, brightness)выдает ШИМ-сигнал.brightness += fadeAmountувеличивает или уменьшает яркость.- Оператор
ifпроверяет, достигла ли яркость 0 или 255. Если да, он меняет направление, инвертируяfadeAmount. delay(30)замедляет затухание, чтобы вы могли его увидеть.
Ключевые концепции
- ШИМ (широтно-импульсная модуляция): Техника, при которой цифровой контакт быстро включается и выключается. Среднее напряжение (и, следовательно, яркость светодиода) зависит от коэффициента заполнения (время включения относительно времени выключения).
analogWrite()устанавливает коэффициент заполнения. analogWrite(): Принимает значения от 0 (всегда выключено) до 255 (всегда включено).pinMode(): Настраивает контакт как выход (или вход).delay(): Приостанавливает программу на миллисекунды. Без него затухание было бы слишком быстрым, чтобы его увидеть.
Частые ошибки и советы по отладке
-
Светодиод не горит?
- Проверьте, правильно ли подключен светодиод (анод к контакту 9, катод к GND).
- Убедитесь, что код загружен (нажмите кнопку Run на панели инструментов).
- Проверьте, что
LED_PINсоответствует фактически используемому контакту.
-
Светодиод горит на полную яркость?
- Убедитесь, что вы используете контакт с поддержкой ШИМ (3, 5, 6, 9, 10, 11 на Uno). Контакт 13 не поддерживает ШИМ.
- Проверьте, что вызывается
analogWrite(), а неdigitalWrite().
-
Затухание слишком быстрое или слишком медленное?
- Отрегулируйте значение
delay(30). Больше = медленнее затухание. - Измените
fadeAmount, чтобы контролировать размер шага (например, 1 для очень плавного, 10 для более быстрого).
- Отрегулируйте значение
-
Симулятор не отвечает?
- Используйте кнопку Reset на панели инструментов холста.
- При необходимости обновите страницу.

Предлагаемые расширения
После того как вы освоите базовое затухание, попробуйте следующие задачи:
- Несколько светодиодов: Добавьте еще два светодиода на контакты 10 и 11. Сделайте так, чтобы они затухали последовательно или с разной скоростью.
- Управление кнопкой: Добавьте тактовую кнопку для запуска/остановки затухания.
- Управление скоростью потенциометром: Используйте потенциометр для регулировки скорости затухания (замените
delay(30)на переменную, считываемую с аналогового входа). - RGB-светодиод: Используйте RGB-светодиод и создавайте затухание разных цветов, управляя тремя ШИМ-контактами.
- Монитор последовательного порта: Выводите значение яркости в монитор последовательного порта для отладки.
Попробуйте сами!
Готовы увидеть это в действии? Откройте живой пример в Velxio:
👉 Запустить пример затухающего светодиода
Вы можете редактировать код, изменять скорость затухания или даже добавлять новые компоненты. Симулятор работает полностью в вашем браузере — никаких загрузок, никакой настройки.
Удачного затухания!