1.17M
Category: programmingprogramming

Усовершенствование автомата управления светодиодами

1.

Задание 1: Обучающая часть
«Включение и выключение светодиода по щелчку кнопки»
Задача: Изменение состояния светодиода (горит / не горит) должно происходить
после двух событий: нажатия и отпускания кнопки.
Состояние светодиода
не меняется
Состояние: 0
«Кнопка не нажата»
Состояние: 1
«Кнопка нажата»
Состояние светодиода
инвертируется
1

2.

Задание 1: Код (обучающая часть)
2

3.

Задание 1: Самостоятельная часть
Усовершенствуйте конечный автомат управления светодиодом:
1. Начальное состояние светодиода – не горит;
2. При первом щелчке по кнопке (нажатие и отпускание) светодиод
переходит в состояние мигания с частотой 1 Гц (500 мс – горит, 500 мс
не горит);
3. При втором щелчке по кнопке светодиод переходит в новое состояние
и горит постоянно;
4. При третьем щелчке по кнопке светодиод переходит в начальное
состояние;
5. Нарисуйте граф конечного автомата управления светодиодом;
6. Реализуйте его работу в коде для микроконтроллера Arduino UNO;
7. Продемонстрируйте работу автомата преподавателю;
8. В качестве отчета на сайте курса в Eluniver поместите рисунок
конечного автомата управления светодиодом и скетч Arduino IDE.
3

4.

Ультразвуковой блок Omegabot
Ультразвуковой датчик с
интерфейсом I2C
Сервомотор с управлением
на основе PWM
4

5.

Управление сервомотором
В среде Arduino управление сервомотором поддерживается с помощью
класса Servo
#include <Servo.h> - подключение библиотеки Servo в среде Arduino
Методы класса Servo
attach()
- Подключение переменной типа Servo к выводу микроконтроллера. Вывод должен
поддерживать ШИМ.
write(angle) - Управление углом поворота вала двигателя. Angle – ориентация вала
двигателя, в градусах.
angle=read() - Чтение текущей ориентации вала двигателя, в градусах.
attached() - Проверка подключения переменной типа Servo к выводу микроконтроллера.
detach()
- Отключение переменной типа Servo от вывода микроконтроллера.
5

6.

Пример использования сервомотора
6

7.

Задание 2.
«Периодический поворот ультразвукового датчика»
1. Разработайте алгоритм начальной инициализации положения ультразвукового
датчика и реализуйте его в функции Setup(). Код функции должен повернуть
датчик в центральное положение, затем с задержкой 1-2 секунды повернуть его в
крайние положения (+-45 градусов относительно центрального положения), а в
конце вернуть датчик в центральное положение.
2. Разработайте
собственную
функцию,
которая
позволит
сканировать
ультразвуковым датчиком угловой сегмент в пределах от -45 до +45 градусов
относительно центрального положения с шагом в 1 градус и периодом около 1
секунды. Организуйте периодический вызов вашей функции в цикле loop().
3. Модифицируйте код так, чтобы сканирование включалось и выключалось по
щелчку кнопки.
4. Продемонстрируйте работу программы преподавателю.
5. В качестве отчета на сайте курса в Eluniver разместите скетч Arduino IDE.
7

8.

Измерение расстояния ультразвуковым дальномером
8

9.

Задание 3.
«Построение карты препятствий с помощью
ультразвукового - локатора»
1. Разработайте алгоритм ультразвукового сканирования сектора от -45 до 45
градусов в направлении движения Омегабот. Угловое разрешение УЗ-локатора
должно быть не менее 1 градуса. Количество циклов сканирования - не менее 10.
В результате работы должен быть сформирован текстовый файл, каждая стока
которого содержит 2 колонки разделенные пробелом. В первой колонке
приводятся данные о текущем угле наблюдения, а во второй дистанция до
препятствия.
2. Для неподвижного робота получите на ПК файл с результатами работы УЗлокатора.
3. На основе зарегистрированных данных в MatLab или Scilab постройте карту
препятствия перед роботом, соответствующую сектору наблюдения УЗ-локатора.
4. Продемонстрируйте работу программы преподавателю.
5. В качестве отчета на сайте курса в Eluniver разместите изображения препятствий
возле робота и скетч Arduino IDE для их сканирования.
9
English     Русский Rules