ПМК 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)

Краткие Теоретические Сведения

  1. Цифровые входы/выходы Arduino
  • Напряжение логической "1": +5V
  • Напряжение логического "0": 0V
  • Максимальный выходной ток на пин: 40 мА
  • Функции: pinMode(), digitalWrite(), digitalRead()
  1. Подключение светодиодов
  • Анод (+) через резистор 220 Ом к цифровому пину
  • Катод (-) к GND
  • Расчет резистора: R = (Uпит - Uсв) / Iсв
  1. Подключение кнопок
  • Схема с подтягивающим резистором 10 кОм к +5V
  • Защита от дребезга контактов программными методами
  1. Последовательный порт
  • Скорость обмена: 9600 бод (стандарт)
  • Функции: Serial.begin(), Serial.print(), Serial.println()

Структура Практической Работы

Часть 1: Базовые операции

Задача 1.1: "Управление одним светодиодом"

Реализовать систему включения/выключения светодиода по нажатию кнопки с выводом состояния в монитор порта.

Задача 1.2: "Индивидуальное управление тремя светодиодами"

Создать систему, где каждая из трех кнопок управляет своим светодиодом.

Часть 2: Алгоритмические задачи

Задача 2.1: "Двоичный счетчик нажатий"

Реализовать счетчик, отображающий количество нажатий в двоичной системе на трех светодиодах.

Задача 2.2: "Циклический переключатель режимов"

Создать систему циклического переключения режимов работы светодиодов по одной кнопке.

Часть 3: Комплексные задачи

Задача 3.1: "Система приоритетных прерываний"

Реализовать систему с кнопками разного приоритета, где кнопка высокого приоритета прерывает текущий режим.

Задача 3.2: "Управляемый бегущий огонь"

Создать систему "бегущего огня", управляемую кнопкой запуска/остановки.

Задача 3.3: "Простая сигнализация"

Реализовать систему сигнализации с кнопками включения и выключения.

Содержание отчета

  1. Титульный лист
  2. Цель работы
  3. Задание
  4. Схемы подключения (если требуются)
  5. Листинги программ с комментариями
  6. Результаты работы (скриншоты Serial Monitor)
  7. Выводы
  8. Ответы на контрольные вопросы

Отчет оформляется на листах формата А4 с отступами: левое – 3 , правое – 1,5, верхний и нижний – 2 см. Отчет выполняется шрифтом Times New Roman 14, интервал между строками 1,5, отступ абзаца 1,25, выравнивание текста - по полям. Подписи к рисункам и сами рисунки – по центру.

Контрольные Вопросы

  1. Для чего нужен резистор при подключении светодиода?
  2. Что такое "дребезг контактов" и как с ним бороться?
  3. Какие функции используются для работы с последовательным портом?
  4. В чем разница между Serial.print() и Serial.println()?
  5. Как организовать циклическое переключение между несколькими состояниями?

Критерии Оценки

Оценка "Отлично" (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
## === Конец Последовательности ===

← Практическая работа №1 · Практическая работа №3 →

Оригинал материала на GitHub