4.02.2. Лабораторная работа №4.2.2.md


Яркость светодиода

Тема работы

В предыдущих работах мы научились просто включать и выключать светодиоды. Теперь давайте выйдем на новый уровень и заставим их светиться не резко, а плавно, как будто они «дышат». В этой лабораторной работе мы напишем программу, которая будет плавно увеличивать и уменьшать яркость встроенного светодиода L1, и разберёмся, почему это работает с точки зрения электроники.

Цель

  • На практике освоить управление яркостью светодиода с помощью ШИМ (PWM).
  • Научиться использовать команду analogWrite().
  • Понять связь между коэффициентом заполнения ШИМ, средним напряжением и яркостью светодиода.
  • Применить циклы for для создания плавных динамических эффектов.

Оборудование и материалы

  • Отладочная плата Рудирон.
  • USB-кабель для подключения Рудирона к компьютеру.
  • Компьютер с настроенной средой Arduino IDE.

Ход работы

  1. Яркость, напряжение и ток

    Из главы про основы электроники мы помним, что яркость светодиода напрямую зависит от силы тока, который через него протекает. А сила тока, в свою очередь, зависит от приложенного к нему напряжения (согласно закону Ома). Эта зависимость нелинейная и описывается вольт-амперной характеристикой (ВАХ).

    У каждого цвета (красного, зелёного, синего) эта характеристика своя. Посмотрите на график:

    Как мы видим, чтобы изменить яркость, нам нужно менять напряжение. Но микроконтроллер Рудирон умеет выдавать только 0 В или 3.3 В. И здесь на помощь приходит ШИМ! Генерируя очень быстрые импульсы, analogWrite() создаёт среднее напряжение. Чем выше коэффициент заполнения ШИM, тем выше среднее напряжение и, соответственно, тем больше ток и ярче светодиод.

  2. Подготовка платы

    Для этого эксперимента нам не нужны никакие внешние компоненты, ведь мы будем работать со встроенным светодиодом L1, который подключён к пину 5. Этот пин на Рудироне поддерживает ШИМ.

    • Установите перемычку PRG | RUN в положение PRG.
    • Подключите плату Рудирон к компьютеру и настройте Arduino IDE (плата Rudiron_Buterbrod_R10_20MHz и правильный COM-порт).
  3. Написание и загрузка кода

    Напишем программу, которая будет плавно менять яркость светодиода, изменяя значение ШИМ от 0 до 255 и обратно.

    • В Arduino IDE создайте новый скетч и введите следующий код:

      void setup() {
        // Настраивать пин с помощью pinMode() для analogWrite() не обязательно,
        // но это считается хорошей практикой.
        pinMode(LED_BUILTIN_1, OUTPUT);
      }
      
      void loop() {
        // Цикл плавного разгорания светодиода
        // Перебираем значения яркости от 0 до 255
        for (int brightness = 0; brightness <= 255; brightness++) {
        // Устанавливаем текущий уровень ШИМ на пин светодиода L1
        analogWrite(LED_BUILTIN_1, brightness);
        // Небольшая пауза для плавности
        delay(10); 
        }
      
        // Цикл плавного затухания светодиода
        // Перебираем значения яркости от 255 до 0
        for (int brightness = 255; brightness >= 0; brightness--) {
        analogWrite(LED_BUILTIN_1, brightness);
        delay(10); 
        }
      }
      
    • Нажмите кнопку «Upload», чтобы загрузить код на плату.
  4. Наблюдение за результатом

    Сразу после загрузки посмотрите на светодиод L1. Вы увидите, как он начинает плавно разгораться до максимальной яркости, а затем так же плавно затухает. Этот эффект, который часто называют «дыханием» (fading), будет повторяться бесконечно.

Результаты

Вы успешно написали программу, которая плавно управляет яркостью светодиода с помощью ШИМ. Вы наглядно увидели, как изменение значения в analogWrite() от 0 до 255 напрямую влияет на интенсивность свечения.

Анализ результатов

  • Команда analogWrite(pin, value). Эта функция генерирует на пине ШИМ-сигнал. Значение value (от 0 до 255) определяет его коэффициент заполнения, где 0 — это 0% (сигнал всегда LOW, среднее напряжение ~0 В), 255 — это 100% (сигнал всегда HIGH, среднее напряжение ~3.3 В).
  • Цикл for. Мы использовали два цикла. Первый (brightness++) плавно увеличивает значение ШИМ, заставляя светодиод разгораться. Второй (brightness--) плавно уменьшает его, создавая эффект затухания.
  • Команда delay(10). Крошечная пауза после каждого шага изменения яркости. Без неё циклы выполнились бы так быстро, что человеческий глаз не заметил бы плавности, а увидел бы лишь постоянное свечение на средней яркости.

Выводы

В этой лабораторной работе вы сделали важный шаг в освоении микроконтроллеров - научились управлять не просто состоянием устройства, а его интенсивностью. Вы поняли, как с помощью ШИМ и команды analogWrite() можно плавно менять среднее напряжение на пине, а значит, и яркость светодиода.

Вопросы для самопроверки

  1. От какого электрического параметра напрямую зависит яркость светодиода?
  2. Какой диапазон значений принимает команда analogWrite()?
  3. Что такое ШИМ и как он позволяет регулировать яркость?
  4. Как изменить код, чтобы светодиод «дышал» в два раза медленнее?
  5. Как изменить код, чтобы он управлял светодиодом L2 вместо L1?

Вы освоили плавное управление яркостью! В следующей лабораторной работе мы применим эти знания для управления RGB-светодиодом и научимся смешивать цвета, получая любые оттенки радуги.