- •Курс «Основы робототехники. Базовый уровень». Занятие 3 Подключение моторов робота через драйвер двигателя на микросхеме l298n
- •Программы управления драйвером
- •Практическое занятие 1. Подключение драйвера и представление в программе
- •Практическое занятие 2. Управление одним колесом робота
- •Практическое занятие 2. Робот едет вперед
- •Практическое занятие 3. Робот едет вперед и назад
- •Практическое занятие 5. Развороты робота
- •Практическое занятие 7. Задание скорости робота
- •Практическое занятие 8. Выравнивание скоростей моторов для движения по прямой
- •Практическое занятие 9. Движение по кругу
- •Практическое занятие 10. Движение по спирали
- •Практическое занятие 11. Движение по квадрату или другому многоугольнику
- •Практическое занятие 12. Произвольные движения
Практическое занятие 9. Движение по кругу
Чтобы робот ехал по кругу, достаточно при езде вперед подать разные скорости на моторы (собственно, отклонение от езды по прямой в предыдущем занятии и есть езда по кругу, только очень большого диаметра). Легко заметить, что чем больше разница между скоростями, тем меньше диаметр круга
В программе предыдущего практического занятия поставьте speed_left и speed_right, значительно отличающиеся (например, 100 и 200)
Загрузите программу в робота, испытайте
Практическое занятие 10. Движение по спирали
Движение по спирали отличается от движения по кругу тем, что диаметр круга меняется. Так как этот диаметр зависит от разности скоростей, можно менять эту разность в программе для движения по спирали. В этом случае при прибавлении к меньшей скорости диаметр движения будет увеличиваться до тех пор, пока скорости не сравняются и робот не поедет прямо, а затем свернет в другую сторону.
Добавьте в конце предыдущей программы следующий код. Каждый цикл к изначально заданному значению скорости мотора будет прибавляться единица, все увеличивая диаметр спирали. Задержка нужна, чтобы робот проехал некоторое время с этой скоростью
speed_left = speed_left + 1;
delay(100);
Можно поиграть со значениями начальных скоростей и задержки delay. При их изменениях будут получаться разные спирали.
Примечание: возможно, в определенный момент робот изменит свое движение. Это произойдет, когда подаваемая скорость превысит допустимую (255) и мотор остановится. Чтобы избежать подобного поведения, в дальнейшем будем вводить ограничение по максимальной скорости
Практическое занятие 11. Движение по квадрату или другому многоугольнику
Нарисовать квадрат или другой многоугольник достаточно просто. Для этого нужен следующий алгоритм:
Проехать вперед определенное время
Повернуть вправо на угол 90 (для квадрата)
При этом угол зависит от значения задержки, задаваемой после включения моторов на поворот направо. Для рисования квадрата ее необходимо подобрать, чтобы робот поворачивал ровно на 90 градусов или близко к тому
Примечание: для рисования другого многоугольника нужно подобрать другие углы (угол должен быть равен 360/N, где N – количество углов). Например, для рисования шестиугольника угол поворота равен 360/6 = 60
Практическое занятие 12. Произвольные движения
Придумайте и напишите программу движений для робота либо с большим количеством разных движений, либо со случайными движениями. Например, следующий алгоритм:
Включить моторы на езду вперед
Задержка на случайное время в диапазоне от 200 до 500: delay(random(200, 500));
Включить моторы на езду влево
Задержка на случайное время в диапазоне от 200 до 500
Включить моторы на езду вправо
Задержка на случайное время в диапазоне от 200 до 500
Домашнее задание: попробуйте написать код для того, чтобы робот не разворачивался на месте, а поворачивал, как поворачивает автомобиль: вперед-вправо и вперед-влево.
Примечание: можно принести написанную программу перед следующим занятие, загрузить в робота и испытать до начала занятия
