4.02.2. Лабораторная работа №4.2.2.md
Яркость светодиода
Тема работы
В предыдущих работах мы научились просто включать и выключать светодиоды. Теперь давайте выйдем на новый уровень и заставим их светиться не резко, а плавно, как будто они «дышат». В этой лабораторной работе мы напишем программу, которая будет плавно увеличивать и уменьшать яркость встроенного светодиода L1
, и разберёмся, почему это работает с точки зрения электроники.
Цель
- На практике освоить управление яркостью светодиода с помощью ШИМ (
PWM
). - Научиться использовать команду
analogWrite()
. - Понять связь между коэффициентом заполнения ШИМ, средним напряжением и яркостью светодиода.
- Применить циклы
for
для создания плавных динамических эффектов.
Оборудование и материалы
- Отладочная плата
Рудирон
. - USB-кабель для подключения
Рудирона
к компьютеру. - Компьютер с настроенной средой
Arduino IDE
.
Ход работы
-
Яркость, напряжение и ток
Из главы про основы электроники мы помним, что яркость светодиода напрямую зависит от силы тока, который через него протекает. А сила тока, в свою очередь, зависит от приложенного к нему напряжения (согласно закону Ома). Эта зависимость нелинейная и описывается вольт-амперной характеристикой (ВАХ).
У каждого цвета (красного, зелёного, синего) эта характеристика своя. Посмотрите на график:
Как мы видим, чтобы изменить яркость, нам нужно менять напряжение. Но микроконтроллер
Рудирон
умеет выдавать только 0 В или 3.3 В. И здесь на помощь приходит ШИМ! Генерируя очень быстрые импульсы,analogWrite()
создаёт среднее напряжение. Чем выше коэффициент заполнения ШИM, тем выше среднее напряжение и, соответственно, тем больше ток и ярче светодиод. -
Подготовка платы
Для этого эксперимента нам не нужны никакие внешние компоненты, ведь мы будем работать со встроенным светодиодом
L1
, который подключён к пину 5. Этот пин наРудироне
поддерживает ШИМ.- Установите перемычку
PRG | RUN
в положениеPRG
. - Подключите плату
Рудирон
к компьютеру и настройтеArduino IDE
(платаRudiron_Buterbrod_R10_20MHz
и правильный COM-порт).
- Установите перемычку
-
Написание и загрузка кода
Напишем программу, которая будет плавно менять яркость светодиода, изменяя значение ШИМ от 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», чтобы загрузить код на плату.
-
-
Наблюдение за результатом
Сразу после загрузки посмотрите на светодиод
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()
можно плавно менять среднее напряжение на пине, а значит, и яркость светодиода.
Вопросы для самопроверки
- От какого электрического параметра напрямую зависит яркость светодиода?
- Какой диапазон значений принимает команда
analogWrite()
? - Что такое ШИМ и как он позволяет регулировать яркость?
- Как изменить код, чтобы светодиод «дышал» в два раза медленнее?
- Как изменить код, чтобы он управлял светодиодом
L2
вместоL1
?
Вы освоили плавное управление яркостью! В следующей лабораторной работе мы применим эти знания для управления RGB-светодиодом
и научимся смешивать цвета, получая любые оттенки радуги.
- Страницы
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home
-
imgs
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home