Найти в Дзене

mBot2 #11. Траектория - правильный N-угольник. Ввод данных и экран.

В прошлом задании мы рассматривали вариант движения mBot2 по траекториям "квадрат" и "треугольник". И, в самом конце, предложили самостоятельно создать программу для прохождения трассы в форме правильного N-угольника. Сегодня посмотрим, как можно было решить данную задачу. Напомним, что для решения требуется хорошо представлять себе общую формулу углов правильного многоугольника, посмотрев учебник математики, или заглянув в соответствующий справочный материал, например, здесь. Мы уже выясняли в прошлом разделе, что для Робота надо считать внешний угол поворота 180-α, где α - внутренний угол. Путем несложных математических преобразований получаем, что нужный нам внешний угол равен: Теперь остается составить программу. Реализовать ее можно разными способами, например, используя движение вперед на заданную дистанцию. А определять многоугольник можно новым блоком N_polygon, который мы создадим. В качестве параметров используем длину стороны многоугольника и количество вершин. Например, про
Оглавление

В прошлом задании мы рассматривали вариант движения mBot2 по траекториям "квадрат" и "треугольник". И, в самом конце, предложили самостоятельно создать программу для прохождения трассы в форме правильного N-угольника. Сегодня посмотрим, как можно было решить данную задачу.

Рисуем траекторию - правильный N-угольник.

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

Мы уже выясняли в прошлом разделе, что для Робота надо считать внешний угол поворота 180-α, где α - внутренний угол.

Путем несложных математических преобразований получаем, что нужный нам внешний угол равен:

-2

Теперь остается составить программу. Реализовать ее можно разными способами, например, используя движение вперед на заданную дистанцию. А определять многоугольник можно новым блоком N_polygon, который мы создадим. В качестве параметров используем длину стороны многоугольника и количество вершин.

Например, программа может выглядеть так:

-3

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

Попробуем усложнить?))) Используем экран.

А теперь попробуем решить задачу несколько иначе. Заодно освоим механизмы индикации mBot2, не зря же у него такой хороший экран присутствует?

Итак, попробуем реализовать следующую задачу: при запуске (кнопка А), робот очищает экран и предлагает ввести длину стороны и количество углов правильного многоугольника.

-4

Ввод будет осуществляться джойстиком. Вверх или вниз - меняем на 1 или -1 длину стороны, вправо или влево - на 1 или -1 количество углов.

Запуск движения по траектории будет задан нажатием на джойстик (да, его можно не только двигать в стороны, но и нажимать, как кнопку).

-5

Что еще... Ну, никуда не денется блок остановки всего процесса по кнопке B, хотя я и не буду показывать его на рисунке.

Теперь о проблемах, которые надо решить. Как показывать информацию на дисплее (о длине и количестве сторон) и при этом не бежать строкой и не мигать чрезмерно. Одно из решений - выводить информацию только при смене данных.

Итак, вводим несколько переменных.

Side - для длины стороны.

previous_side - для хранения предыдущего значения, с которым будем сравнивать текущее.

number - количество углов

previous_number - для хранения предыдущего значения.

В самом начале текущее и предыдущее значения равны. При этом можно для number ввести начальное количество 2 (чтобы по первому нажатию джойстика стало 3, а это минимальное количество сторон многоугольника), а для side 1 (все меньше жать для изменения далее))). А можно было сделать 0 и просто чуть больше понажимать джойстик в выбранную сторону. Кстати, можно просто задержать джойстик в нужном положении и наблюдать за сменой цифр до нужной.

Вариант программы ниже:

-6

Как видите, по нажатию на кнопку А мы вначале очищаем экран, выбираем шрифт и задаем начальные значения переменных. Выводим запрос на ввод данных (длина и количество). Далее с помощью наклонов джойстика задаем нужные значения, ориентируясь на показания на экране.

Все, теперь просто нажимаем на джойстик и робот отправляется в путь.

Попробуйте. Кстати, оцените, насколько все быстрее работает в режиме загруженной программы.

Из бонусов - после остановки мы можем менять параметры и вновь отправлять робота в путь. Удобно. Имейте в виду такие возможности при создании своих программ.

Экспериментируйте и улучшайте программу. Например, можно разделить ее на функциональные блоки и создать их. Тогда все будет намного аккуратнее и "правильнее выглядеть".

Например, как-то так:

-7

На всякий случай, оба варианта программы выложили в облако.

Программа не оптимальна, подумайте, как её улучшить.

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

До новых встреч!

Ранее в цикле:

Наука
7 млн интересуются