ПМК 3 курс Практические задания 02 Практическая работа 2 - BysonHunter/Tavrich_college GitHub Wiki
🏠 Главная · Программирование микроконтроллеров · 3 курс · Практические работы по программированию микроконтроллеров — 3 курс
Практическая работа №2
Тема: «Программирование ввода-вывода и взаимодействия с периферией на Arduino»
Описание работы и задания
Тема: «Программирование ввода-вывода и взаимодействия с периферией на Arduino».
Цель работы: освоить практические навыки программирования микроконтроллеров Arduino для работы с цифровыми входами и выходами, организация взаимодействия между кнопками и светодиодами с выводом отладочной информации в последовательный порт.
Студент должен знать:
- Принципы работы цифровых входов и выходов Arduino
- Методы обработки механических кнопок (защита от дребезга)
- Организацию вывода информации в монитор последовательного порта
- Основы работы со светодиодами
Студент должен уметь:
- Подключать светодиоды и кнопки к Arduino
- Программировать обработку нажатий кнопок
- Организовывать взаимодействие между устройствами ввода и вывода
- Использовать монитор порта для отладки программ
Необходимое оборудование и ПО:
- Плата Arduino Uno/Nano
- Светодиоды: 3 шт (разных цветов)
- Кнопки тактовые: 3 шт
- Резисторы: 3 × 220 Ом, 3 × 10 кОм
- Макетная плата
- Соединительные провода
- Arduino IDE 2.0+
- Драйверы CH340 (для китайских клонов Arduino)
Краткие Теоретические Сведения
- Цифровые входы/выходы Arduino
- Напряжение логической "1": +5V
- Напряжение логического "0": 0V
- Максимальный выходной ток на пин: 40 мА
- Функции: pinMode(), digitalWrite(), digitalRead()
- Подключение светодиодов
- Анод (+) через резистор 220 Ом к цифровому пину
- Катод (-) к GND
- Расчет резистора: R = (Uпит - Uсв) / Iсв
- Подключение кнопок
- Схема с подтягивающим резистором 10 кОм к +5V
- Защита от дребезга контактов программными методами
- Последовательный порт
- Скорость обмена: 9600 бод (стандарт)
- Функции: Serial.begin(), Serial.print(), Serial.println()
Структура Практической Работы
Часть 1: Базовые операции
Задача 1.1: "Управление одним светодиодом"
Реализовать систему включения/выключения светодиода по нажатию кнопки с выводом состояния в монитор порта.
Задача 1.2: "Индивидуальное управление тремя светодиодами"
Создать систему, где каждая из трех кнопок управляет своим светодиодом.
Часть 2: Алгоритмические задачи
Задача 2.1: "Двоичный счетчик нажатий"
Реализовать счетчик, отображающий количество нажатий в двоичной системе на трех светодиодах.
Задача 2.2: "Циклический переключатель режимов"
Создать систему циклического переключения режимов работы светодиодов по одной кнопке.
Часть 3: Комплексные задачи
Задача 3.1: "Система приоритетных прерываний"
Реализовать систему с кнопками разного приоритета, где кнопка высокого приоритета прерывает текущий режим.
Задача 3.2: "Управляемый бегущий огонь"
Создать систему "бегущего огня", управляемую кнопкой запуска/остановки.
Задача 3.3: "Простая сигнализация"
Реализовать систему сигнализации с кнопками включения и выключения.
Содержание отчета
- Титульный лист
- Цель работы
- Задание
- Схемы подключения (если требуются)
- Листинги программ с комментариями
- Результаты работы (скриншоты Serial Monitor)
- Выводы
- Ответы на контрольные вопросы
Отчет оформляется на листах формата А4 с отступами: левое – 3 , правое – 1,5, верхний и нижний – 2 см. Отчет выполняется шрифтом Times New Roman 14, интервал между строками 1,5, отступ абзаца 1,25, выравнивание текста - по полям. Подписи к рисункам и сами рисунки – по центру.
Контрольные Вопросы
- Для чего нужен резистор при подключении светодиода?
- Что такое "дребезг контактов" и как с ним бороться?
- Какие функции используются для работы с последовательным портом?
- В чем разница между Serial.print() и Serial.println()?
- Как организовать циклическое переключение между несколькими состояниями?
Критерии Оценки
Оценка "Отлично" (5):
- Выполнены ВСЕ задачи частей 1, 2 и 3
- Программы работают стабильно, без ошибок
- Корректный вывод информации в монитор порта
- Отчет оформлен полностью и аккуратно
Оценка "Хорошо" (4):
- Выполнены ВСЕ задачи частей 1 и 2
- Программы работают с незначительными недочетами
- Отчет оформлен полностью
Оценка "Удовлетворительно" (3):
- Выполнены задачи части 1 и 1 задача из части 2
- Программы работают с ошибками, требующими исправления
- Отчет оформлен не полностью Оценка "Неудовлетворительно" (2):
- Не выполнены задачи части 1
- Программы не работают
- Отчет не оформлен
Задания Для Выполнения
Задача 1: "Базовое управление светодиодом"
Задание: Реализовать систему, где одна кнопка включает и выключает один светодиод. При каждом изменении состояния светодиода выводить сообщение в монитор порта. Компоненты: 1 светодиод, 1 кнопка
Пример вывода в монитор порта:
Система запущена. Нажмите кнопку
Светодиод ВКЛЮЧЕН
Светодиод ВЫКЛЮЧЕН
Светодиод ВКЛЮЧЕН
Задача 2: "Индивидуальное управление тремя светодиодами"
Задание: Создать систему, где три кнопки независимо управляют тремя светодиодами. Каждая кнопка переключает состояние своего светодиода. Компоненты: 3 светодиода, 3 кнопки
Пример вывода в монитор порта:
Система 3x3 готова к работе
Красный светодиод ВКЛ
Желтый светодиод ВКЛ
Зеленый светодиод ВКЛ
Красный светодиод ВЫКЛ
Задача 3: "Циклический переключатель режимов"
Задание: Реализовать систему, где одна кнопка циклически переключает между четырьмя режимами работы трех светодиодов. Компоненты: 3 светодиода, 1 кнопка
Пример вывода в монитор порта:
Режим 1: Красный ВКЛ
Режим 2: Красный+Желтый ВКЛ
Режим 3: Зеленый ВКЛ
Режим 4: Желтый ВКЛ
Режим 1: Красный ВКЛ
Задача 4: "Система приоритетных прерываний"
Задание: Создать систему с двумя кнопками разного приоритета. Кнопка высокого приоритета всегда переключает систему в свой режим, независимо от текущего состояния. Компоненты: 3 светодиода, 2 кнопки
Пример вывода в монитор порта:
Система приоритетов активирована
Низкий приоритет: Желтый ВКЛ
ВЫСОКИЙ ПРИОРИТЕТ: Красный ВКЛ
Низкий приоритет: Желтый ВКЛ
ВЫСОКИЙ ПРИОРИТЕТ: Красный ВКЛ
Задача 5: "Двоичный счетчик нажатий"
Задание: Реализовать счетчик нажатий кнопки, который отображает число в двоичной системе с помощью трех светодиодов. Компоненты: 3 светодиода, 1 кнопка
Пример вывода в монитор порта:
Счетчик: 0
-> 000 Счетчик: 1
-> 001 Счетчик: 2
-> 010 Счетчик: 3
-> 011 Счетчик: 4
-> 100 Счетчик: 5
-> 101
Задача 6: "Управляемый бегущий огонь"
Задание: Создать систему "бегущего огня" из трех светодиодов, которая запускается и останавливается по нажатию кнопки. Компоненты: 3 светодиода, 1 кнопка
Пример вывода в монитор порта:
Бегущий огонь ОСТАНОВЛЕН
Бегущий огонь ЗАПУЩЕН
- -> Светодиод 1
- -> Светодиод 2
- -> Светодиод 3
Бегущий огонь ОСТАНОВЛЕН
Задача 7: "Простая сигнализация"
Задание: Реализовать систему сигнализации с двумя кнопками - включения и выключения. При активации сигнализации светодиоды мигают в последовательности. Компоненты: 3 светодиода, 2 кнопки
Пример вывода в монитор порта:
Сигнализация ВЫКЛЮЧЕНА
## !!! Сигнализация Активирована !!!
Мигание: Красный Мигание: Синий Мигание: Зеленый Сигнализация ВЫКЛЮЧЕНА
Задача 8: "Тест на реакцию"
Задание: Создать игру на реакцию, где случайно загорается один из трех светодиодов, и игрок должен как можно быстрее нажать соответствующую кнопку. Компоненты: 3 светодиода, 2 кнопки
Пример вывода в монитор порта:
Загорелся светодиод 2 Реакция: 350 мс - ПРАВИЛЬНО!
Загорелся светодиод 1 Реакция: 280 мс - ПРАВИЛЬНО!
Загорелся светодиод 3 Реакция: 150 мс - ОШИБКА!
Задача 9: "Регулятор яркости"
Задание: Реализовать систему плавной регулировки яркости одного светодиода с помощью двух кнопок - увеличения и уменьшения яркости. Компоненты: 1 светодиод, 2 кнопки
Пример вывода в монитор порта:
Яркость: 0/255
Яркость: 85/255
Яркость: 170/255
Яркость: 255/255
Яркость: 240/255
Яркость: 200/255
Задача 10: "Программируемый секвенсор"
Задание: Создать систему, позволяющую записывать последовательности включения светодиодов с помощью трех кнопок, а затем автоматически воспроизводить записанную последовательность. Компоненты: 3 светодиода, 3 кнопки
Пример вывода в монитор порта:
Запись последовательности...
Добавлен элемент: Светодиод 1
Добавлен элемент: Светодиод 3
Добавлен элемент: Светодиод 2
## === Воспроизведение ===
Шаг 1: Светодиод 1
Шаг 2: Светодиод 3
Шаг 3: Светодиод 2
## === Конец Последовательности ===