Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Занятие 3 Драйверы двигателей, управление моторами роботов.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
210 Кб
Скачать
☆

Практическое занятие 9. Движение по кругу

Чтобы робот ехал по кругу, достаточно при езде вперед подать разные скорости на моторы (собственно, отклонение от езды по прямой в предыдущем занятии и есть езда по кругу, только очень большого диаметра). Легко заметить, что чем больше разница между скоростями, тем меньше диаметр круга

  1. В программе предыдущего практического занятия поставьте speed_left и speed_right, значительно отличающиеся (например, 100 и 200)

  2. Загрузите программу в робота, испытайте

Практическое занятие 10. Движение по спирали

Движение по спирали отличается от движения по кругу тем, что диаметр круга меняется. Так как этот диаметр зависит от разности скоростей, можно менять эту разность в программе для движения по спирали. В этом случае при прибавлении к меньшей скорости диаметр движения будет увеличиваться до тех пор, пока скорости не сравняются и робот не поедет прямо, а затем свернет в другую сторону.

  1. Добавьте в конце предыдущей программы следующий код. Каждый цикл к изначально заданному значению скорости мотора будет прибавляться единица, все увеличивая диаметр спирали. Задержка нужна, чтобы робот проехал некоторое время с этой скоростью

    speed_left = speed_left + 1;

    delay(100);

  2. Можно поиграть со значениями начальных скоростей и задержки delay. При их изменениях будут получаться разные спирали.

Примечание: возможно, в определенный момент робот изменит свое движение. Это произойдет, когда подаваемая скорость превысит допустимую (255) и мотор остановится. Чтобы избежать подобного поведения, в дальнейшем будем вводить ограничение по максимальной скорости

Практическое занятие 11. Движение по квадрату или другому многоугольнику

Нарисовать квадрат или другой многоугольник достаточно просто. Для этого нужен следующий алгоритм:

  1. Проехать вперед определенное время

  2. Повернуть вправо на угол 90 (для квадрата)

При этом угол зависит от значения задержки, задаваемой после включения моторов на поворот направо. Для рисования квадрата ее необходимо подобрать, чтобы робот поворачивал ровно на 90 градусов или близко к тому

Примечание: для рисования другого многоугольника нужно подобрать другие углы (угол должен быть равен 360/N, где N – количество углов). Например, для рисования шестиугольника угол поворота равен 360/6 = 60

Практическое занятие 12. Произвольные движения

Придумайте и напишите программу движений для робота либо с большим количеством разных движений, либо со случайными движениями. Например, следующий алгоритм:

  1. Включить моторы на езду вперед

  2. Задержка на случайное время в диапазоне от 200 до 500: delay(random(200, 500));

  3. Включить моторы на езду влево

  4. Задержка на случайное время в диапазоне от 200 до 500

  5. Включить моторы на езду вправо

  6. Задержка на случайное время в диапазоне от 200 до 500

Домашнее задание: попробуйте написать код для того, чтобы робот не разворачивался на месте, а поворачивал, как поворачивает автомобиль: вперед-вправо и вперед-влево.

Примечание: можно принести написанную программу перед следующим занятие, загрузить в робота и испытать до начала занятия