4.02.1. Лабораторная работа №4.2.1.md
Визуализация ШИМ-сигнала
Тема работы
Мы знаем, что ШИМ — это очень быстрые прямоугольные импульсы. Но можно ли их «поймать» с помощью простой команды digitalRead()? Что она покажет, если сигнал меняется сотни раз в секунду? В этой лабораторной работе мы проведём интересный эксперимент - сгенерируем ШИМ-сигнал на одном пине и будем считывать его с помощью digitalRead() на другом. А результат визуализируем с помощью Плоттера по последовательному соединению.
Цель
- Научиться использовать Плоттер по последовательному соединению для визуализации данных.
- Наглядно увидеть природу ШИМ-сигнала с помощью цифровых инструментов.
- Понять, как
digitalRead()воспринимает очень быстрые сигналы.
Оборудование и материалы
- Отладочная плата
Рудирон. - 1 соединительный провод.
- USB-кабель для подключения
Рудиронак компьютеру. - Компьютер с настроенной средой
Arduino IDE.
Ход работы
-
Успеет ли
digitalRead()?ШИМ-сигнал на
Рудиронепереключается междуHIGHиLOWсотни раз в секунду. КомандаdigitalRead()тоже работает очень быстро, но не мгновенно. Когда мы пытаемся прочитать такой быстрый сигнал, мы как бы делаем «моментальный снимок» состояния пина. В зависимости от того, в какой именно момент времени произойдёт чтение — в момент импульса (HIGH) или в момент паузы (LOW), — мы получим1или0.Если коэффициент заполнения ШИМ маленький, то большую часть времени на пине будет
LOW, и вероятность «поймать»LOWбудет высокой. Если же коэффициент большой, то почти всегда мы будем считыватьHIGH. -
Сборка схемы
Схема предельно проста. Нам нужно лишь соединить один ШИМ-пин с одним обычным цифровым входом.
- Возьмите соединительный провод.
- Один его конец подключите к пину 5 (который поддерживает ШИМ).
- Другой конец подключите к пину 2.
Вот и всё! Мы будем генерировать сигнал на пине 5 и тут же измерять его на пине 2.

-
Написание и загрузка кода
- Установите перемычку
PRG | RUNв положениеPRG. -
В
Arduino IDEвведите следующий код:const int pwmPin = 5; const int readPin = 2; void setup() { // Инициализируем последовательный порт на высокой скорости Serial.begin(115200); pinMode(pwmPin, OUTPUT); pinMode(readPin, INPUT); // Устанавливаем ШИМ с коэффициентом заполнения ~40% (100 из 255) analogWrite(pwmPin, 100); } void loop() { // В бесконечном цикле считываем состояние пина // и выводим его в Serial для плоттера Serial.println(digitalRead(readPin)); } - Нажмите кнопку «Upload», чтобы загрузить код на плату.
- Установите перемычку
-
Проверка работы в Плоттере
- После загрузки откройте Плоттер по последовательному соединению (
Tools → Serial Plotter). - Вы увидите график, который прыгает между значениями
0и1. Это и есть наши «моментальные снимки» ШИМ-сигнала. - Теперь поэкспериментируйте! Измените значение в
analogWrite():- Поставьте
analogWrite(pwmPin, 10);. Загрузите код. График будет почти всё время находиться на уровне0, лишь изредка подпрыгивая до1. - Поставьте
analogWrite(pwmPin, 250);. Загрузите код. Теперь график будет почти всегда на уровне1, лишь изредка падая до0.
- Поставьте

- После загрузки откройте Плоттер по последовательному соединению (
Результаты
Вы «поймали» ШИМ-сигнал с помощью digitalRead()! Вы наглядно увидели, что он состоит из последовательности нулей и единиц, а коэффициент заполнения определяет, как часто мы будем «ловить» то или иное состояние.
Анализ результатов
Этот эксперимент доказывает, что ШИМ — это не какое-то «аналоговое колдовство», а реальный цифровой сигнал, который очень быстро переключается.
- При
analogWrite(pwmPin, 10)сигнал находится в состоянииHIGHочень короткое время, поэтомуdigitalRead()чаще всего «видит»LOW(ноль). - При
analogWrite(pwmPin, 250)сигнал почти всё время находится в состоянииHIGH, иdigitalRead()почти всегда считываетHIGH(единицу).
Выводы
В этой лабораторной работе вы заглянули «под капот» ШИМ-сигнала, используя только цифровые инструменты. Вы наглядно убедились, что плавная регулировка яркости — это иллюзия, созданная очень быстрым переключением. Этот опыт поможет вам лучше понимать, как работают сигналы внутри ваших проектов.
Вопросы для самопроверки
- Почему при чтении ШИМ-сигнала с помощью
digitalRead()мы видим и нули, и единицы? - Как изменится вид графика в плоттере, если установить
analogWrite()в значение200? - Что произойдёт, если убрать
analogWrite()изsetup()и просто написатьdigitalWrite(pwmPin, HIGH)? Что вы увидите в плоттере? А еслиdigitalWrite(pwmPin, LOW)? - Почему для этого эксперимента важна высокая скорость
Serial.begin(115200)? - Можно ли таким способом точно измерить коэффициент заполнения ШИМ? Почему да или нет?
В этой лабораторной работе вы заглянули «под капот» ШИМ-сигнала, используя только цифровые инструменты. Вы наглядно убедились, что ШИМ — это реальный цифровой сигнал, который очень быстро переключается. В следующей лабораторной работе мы применим этот мощный инструмент для создания плавного «дыхания» светодиода.
- Страницы
- 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