Проект №9 «Артист»
Кнопка является датчиком, через который пользователь дает указания роботу. По факту, кнопка — это средство для ведения диалога между роботом и пользователем. Правда, диалог этот получается односторонним.Робот получает информацию от пользователя.
А для того, чтобы диалог стал полноценным, еще и робот должен передавать информацию пользователю. В принципе, с одним из таких источников информации мы уже знакомы. Это светодиодный индикатор. Своим непрерывным свечением или миганием он может сообщать нам о режиме работы робота. Но его информационные возможности ограничены, т.к, по сути, он может быть только включен или выключен. Поэтому для передачи большего количества информации можно использовать звуковые сигналы. Их разнообразие уже куда шире.
Ну а чтобы очередной проект был интереснее, сделаем из робота артиста. Пусть он сам себе играет известную мелодию и сам под нее танцует.
Конструкция
Так уж получается, что и этот проект не содержит никаких изменений в конструкции робота. Он будет танцевать под музыку и для проигрывания мелодии нужен звукоизлучатель, в качестве которого может выступить бузер. Контроллер Вертор Стандарт оснащен встроенным бузером, поэтому ничего дополнительно устанавливать не придется.
Алгоритм
Быть артистом сложно. Не так много людей обладают талантом в части исполнения музыки, песен или танцев для выступления на публике. Аналогично и создание подобного рода робота — задача не самая простая. Алгоритм получается очень большой и сильно структурированный.
Для воспроизведения мелодии будет использоваться бузер. Он представляет собой пьезокерамический звукоизлучатель, который издает звук в результате колебаний керамической пластинки. Когда на нее подается сигнал в виде логической единицы (напряжением 5 вольт) — пластинка прогибается. При подаче нуля — возвращается обратно. Получается, что если определенным образом подавать чередующиеся логические нули и единицы, то пластинка будет колебаться и издавать звук. Частота подаваемых сигналов определяет тональность звучания. Меняя частоту и, какрезультат, тональность, можно проигрывать мелодию, что и реализовано в данном проекте.
Наверно, каждый знает, что музыкальная мелодия складывается из нот. Они звучат поочердно сменяя друг друга, в результате чего и получается музыка. А каждая нота — это звук определенной частоты. Таким образом для вопроизведения музыки надо на звукоизлучатель подавать череду сигналов с разной частотой. Каждый из этих сигналов должен длиться столько, скольно нужно для образования мелодии. Аналогично и паузы между конкретными нотами также должны быть определенными, чтобы мелодия сложилась.
Вроде бы, просто. Достаточно просто запрограммировать эту совокупность сигналов с разными частотами и подать на бузер в нужные моменты времени. Но если попытаться это сделать «в лоб», то программа получится огромной, состоящей из нескольких сотен блоков. Ведь она еще должна содержать танцевальные па робота.
Поэтому необходимо выполнить оптимизацию программы. Для этого следует обратиться к нотной науке музыкантов.
В нотной грамоте принято всю мелодию делить на отдельные фрагменты с равной временной длительностью. Такие фрагменты называются тактами. Они нужны, чтобы задавать темп воспроизведения мелодии. В такте может быть разное количество нот. Оно определяется длительностью воспроизведения конкретной ноты и величиной паузы между соседними нотами. Фактическое количество нот в такте, длительность их звучания и пауз между ними в рамках выполнения данного проекта будем называть формой такта.
Как правило бывает так, что в мелодии эти формы повторяются. В этом случае для каждой разновидности формы такта можно сформировать по далгоритм (функцию в рамках программы), который будет воспроизводить ноты из нее. А дальше достаточно вызывать в основном алгоритме эти функции, передавать им конкретные ноты, которые воспроизводятся в текущем такте, и мелодия получится сама собой. А благодаря использованию одного и того же набора блоков для вопроизведения разных фрагментов, мы получим существенное сокращение общего объема программы.
Можно подвести итог общему алгоритму, по которому будет функционировать робот. Его запуск традиционно будем производить с помощью кнопки запуска. Если она нажата, то пусть робот предупредительно моргнет 3 раза своими светодиодными индикаторами и после этого уже начнется его выступление. В рамках выступления он будет с помощью заранее описанных функций с подалгоритмами вопроизводить последвательность музыкальных тактов с разными формами. Одновременно с определенной периодичностью будут задаваться режимы вращения моторов, обеспечивающие движение робота в нужном направлении. Все подобрано так, чтобы эти движения выполнялись в ритме воспроизводимой музыки.
Все выступление продлится около 30 секунд. По его завершении робот остановится. Для повторения выступления надо будет снова нажать на кнопку запуска.
Сборка
С дополнительными сборочными операциями в данном проекте повезло также, как и в предыдущем. Для реализации проекта потребуется только загрузить другую программу.
Целью проекта является более близкое знакомство с приемами программирования, основанными на прерываниях. Откройте программу к проекту и попробуйте разобраться, как создается мелодия и выполняется одновременное движение робота. Помочь в этом могут комментарии к блокам. Перед запуском робота загрузите ее в контроллер.
Программы для загрузки в контроллер по данному проекту можно скачать в двух вариантах по ниже указанным ссылкам:
- для среды программирования Студия Эвольвектор ,
- для среды программирования Arduino IDE.
Проверка робота в работе
Подключите к контроллеру питание, нажмите кнопку запуска (с зеленым колпачком) и насладитесь артистичностью нашего колесного робота.
Написать отзыв
Ваше Имя:Ваш отзыв: Внимание: HTML не поддерживается! Используйте обычный текст.
Оценка: Плохо Хорошо
Введите код, указанный на картинке: