ПМК 3 курс Практические задания 03 Практическая работа 3 - BysonHunter/Tavrich_college GitHub Wiki
🏠 Главная · Программирование микроконтроллеров · 3 курс · Практические работы по программированию микроконтроллеров — 3 курс
Практическая работа №3
Тема: «Подключение и управление LCD1602 и серводвигателем»
Текст описания, целей и постановки заданий сохранён по исходному PDF. Технические замечания ниже исправляют или уточняют только обнаруженные неоднозначности и ошибки.
Технические корректировки и уточнения
- Сервопривод SG90 управляется последовательностью сервоимпульсов, а не обычным
analogWrite(). БиблиотекаServoформирует необходимый сигнал самостоятельно. - Для сервопривода рекомендуется отдельный источник 5 В подходящего тока с обязательным общим GND с Arduino.
- Резисторы 220–510 Ом из списка оборудования не следует рассматривать как типичные подтягивающие резисторы кнопок; удобнее применять
INPUT_PULLUPили внешнюю подтяжку порядка 10 кОм. - LCD1602 имеет 16 символов в строке. Форматы вывода, которые длиннее 16 символов, необходимо сокращать или разбивать на страницы.
- В задании 4 функции короткого нажатия (смена режима) и удержания кнопки (sweep) следует различать по длительности нажатия, иначе требования неоднозначны.
Описание работы и задания
Цель работы: закрепить теоретические знания на практике, развить навыки
схемотехнической сборки и программирования микроконтроллеров Arduino для управления периферийными устройствами.
Цель работы:
Закрепить теоретические знания на практике, развить навыки схемотехнической сборки и программирования микроконтроллеров Arduino для управления периферийными устройствами, освоить принципы работы с символьными дисплеями и сервоприводами.
Студент должен знать:
- Основные характеристики и принципы работы символьного ЖК-дисплея LCD1602.
- Принцип работы сервопривода, методы управления углом поворота с помощью
Шим.
- Протокол I²C и его использование для подключения периферийных устройств.
- Основы программирования в среде Arduino IDE: работа с библиотеками, функции задержки, циклы, условные операторы.
Студент должен уметь:
-
Собирать электрические схемы с использованием Arduino, LCD1602 (через I²Cадаптер) и сервопривода.
-
Подключать и настраивать библиотеки для работы с дисплеем и сервоприводом.
-
Программировать динамический вывод информации на дисплей.
-
Реализовывать плавное и позиционное управление сервоприводом.
-
Использовать потенциометр и кнопки для интерактивного управления системой.
-
Организовывать многозадачные режимы работы (ручное/автоматическое управление).
-
Проводить отладку программы и схемы, анализировать результаты работы.
Необходимое оборудование:
- Плата Arduino UNO (или аналог) – 1 шт.
- Модуль LCD1602 с I²C-адаптером – 1 шт.
- Сервопривод SG90 – 1 шт.
- Потенциометр 10 кОм – 1 шт.
- Тактовая кнопка – 2–3 шт.
- Резисторы 220–510 Ом (для подтяжки кнопок) – 2–3 шт.
- Макетная плата (breadboard) – 1 шт.
- Набор соединительных проводов (папа-папа, папа-мама) – 1 набор.
- USB-кабель для подключения Arduino к ПК – 1 шт.
- Персональный компьютер с установленной средой разработки Arduino IDE и библиотеками: LiquidCrystal_I²C и Servo.
Для каждого задания необходимо подготовить:
-
Принципиальную схему подключения, выполненную в программе Fritzing или Tinkercad.
-
Листинг программы с комментариями.
-
Отчет о выполнении работы со скриншотами.
Задания Для Выполнения.
Задание 1: «Базовый вывод информации на LCD 1602 (I²C)»
- Подключите модуль LCD1602 с интерфейсом I²C к Arduino.
- Напишите программу, которая:
- При старте выводит на первую строку ваши ФИО, а на вторую — номер группы.
- Через 5 секунд очищает дисплей и начинает выводить на первой строке текст «Время с запуска:», а на второй строке — секунды, прошедшие с момента начала работы программы (обновлять раз в секунду). Критерий успеха: на дисплее корректно отображаются статический и динамический (меняющийся каждую секунду) текст.
Задание 2: «Управление серводвигателем по заданной траектории»
- Подключите серводвигатель (например, SG90) к Arduino.
- Напишите программу, которая циклически выполняет следующую последовательность движений с паузой в 1 секунду между позициями:
- Плавно (с помощью цикла for) перемещает вал от 0° до 180° с шагом в 10°.
- Устанавливает вал в положение 90°.
- Плавно перемещает вал от 180° до 0°.
- Совершает два быстрых движения: из 0° в 120° и обратно в 60°. Критерий успеха: сервопривод точно и плавно отрабатывает все заданные положения.
Задание 3: «Ручное управление сервоприводом с визуализацией на LCD (I²C)»
- Соберите схему: Arduino, LCD1602 (I²C), сервопривод, потенциометр.
- Напишите программу, в которой:
- Угол поворота сервопривода задается положением ручки потенциометра (0-1023 -
0-180°).
- На LCD дисплее в реальном времени отображается:
- Строка 1: Заголовок «Servo Control:»
- Строка 2: Текущий угол в градусах («Angle: 045 deg») и сырое значение с АЦП («ADC: 512»). Значения должны обновляться плавно, без мерцания. Критерий успеха: поворот потенциометра приводит к плавному движению сервопривода и мгновенному обновлению цифровых показаний на дисплее.
Задание 4: «Автоматический режим с меню на LCD и управлением от кнопки»
- Соберите схему: Arduino, LCD1602 (I²C), сервопривод, одна тактовая кнопка.
- Реализуйте программу с двумя режимами, переключаемыми по нажатию кнопки:
-
Режим 1 «Manual»: на дисплее отображается «Mode: MANUAL» и «Press to sweep». Серво неподвижен. При удержании кнопки сервопривод плавно «сканирует» от 20° до 160° и обратно. При отпускании — останавливается.
-
Режим 2 «Auto»: на дисплее отображается «Mode: AUTO» и «Pos: ### deg» (где
- угол поворота). Сервопривод автоматически совершает плавные колебания между 30° и 150° (по синусоидальному или треугольному закону). Значение текущего угла обновляется на дисплее. Критерий успеха: Четкое переключение режимов по кнопке, соответствующий текст на дисплее и корректное поведение сервопривода в каждом режиме.
Задание 5 (повышенная сложность): «Система позиционирования с
калибровкой и логированием»
-
Соберите схему: Arduino, LCD1602 (I²C), сервопривод, потенциометр, 2 кнопки («Сохранить», «Воспроизвести»).
-
Реализуйте программу, которая позволяет:
-
Основной режим: управлять сервоприводом потенциометром. На дисплее отображается текущий угол.
-
Функция «Калибровка»: при нажатии и удержании кнопки «Сохранить» на дисплее появляется подсказка «Set MIN pos». Поворотом потенциометра задается
минимальное положение (например, 10°). Отпускание кнопки сохраняет значение. Аналогично, следующее удержание той же кнопки позволяет задать и сохранить «MAX pos» (например, 170°). После калибровки диапазон потенциометра (0-1023) масштабируется на новый рабочий диапазон сервопривода.
-
Функция «Память»: В обычном режиме краткое нажатие кнопки «Сохранить» запоминает текущую позицию сервы в массив (до 5 позиций). На дисплее мигает «Saved!».
-
Функция «Воспроизведение»: при нажатии кнопки «Воспроизвести» сервопривод последовательно и плавно перемещается ко всем сохраненным в памяти позициям. На дисплее отображается «Playback...» и номер текущей позиции. Критерий успеха: система стабильно работает в трех состояниях (ручное управление, калибровка, воспроизведение), используя дисплей как полноценный интерфейс для взаимодействия с пользователем.
Содержание Отчета
Отчёт о выполнении лабораторной работы должен содержать:
– титульный лист с номером и названием работы;
– цель работы;
– краткие теоретические сведения о подключаемых устройствах и особенностях их
работы; – схемы соединения элементов, выполненные в программе Fritzing или Tinkercad; – описание алгоритма работы собранного устройства; – текст программ, содержащий необходимые комментарии и пояснения; – описание особенностей подключения библиотек и функции, которые были использованы из импортированных библиотек; – общие выводы по работе.