- Преподавателю
- Информатика
- Урок по легоконструированию Воспроизведение звуков NXT
Урок по легоконструированию Воспроизведение звуков NXT
Раздел | Информатика |
Класс | - |
Тип | Другие методич. материалы |
Автор | Гузаева М.Ю. |
Дата | 18.08.2015 |
Формат | doc |
Изображения | Есть |
Воспроизведение звуков NXT
На этом занятии мы продолжим знакомиться с воспроизведением звуков NXT. Узнаем, как создавать свои собственные звуки и обмениваться ими. Попробуем написать программу-генератор случайной мелодии.
Вы можете использовать этот блок для воспроизведения звукового файла или отдельного тона. Для создания мелодии расположите несколько блоков последовательно, каждый из блоков будет отвечать за свой тон.
Иконки на изображении блока отражают следующее.
Показывает, что будет воспроизводиться - звуковой файл или отдельный тон.
Режим работы блока - начало воспроизведения или его остановка.
Громкость воспроизведения .
Обозначает специальный контакт для подключения проводников, идущих к другим блокам. По этим проводникам может передаваться информация, управляющая работой.
Настройка блока
Радио-кнопка Действие (Action) выбирает тип звука: звуковой файл (sound file) или тон определенной частоты (tone).
Выбирает режим работы: воспроизведение (Play) или остановка воспроизведения (Stop).
Вы можете установить желаемый уровень громкости, перемещая движок или же вводя точное значение в соответствующее поле.
Воспроизведение звукового файла
Если вы выбрали воспроизведение файла, то у вас появляются дополнительные опции.
Циклическое воспроизведение файла. При выборе этой функции опция "ждать конца воспроизведения" становится недоступной.
Свойство файл (File) позволяет выбрать имя файла из имеющегося списка. Все звуковые файлы хранятся в папке "Sound Files" на жестком диске.
При установленном свойстве "Ожидание конца воспроизведения" управление следующему блоку передано не будет, пока не операция не будет выполнена. При сброшенном флажке свойства при переходе на следующий блок воспроизведение не останавливается. Исключение составляет цепочка из блоков Звук, в этом случае при воспроизведении нового звука воспроизведение предыдущего автоматически прекращается.
Воспроизведение тона
Свойство нота позволит выбрать соответсвующий тон. Вы можете воспользоваться маленькой (на три октавы) фортепьянной клавиатурой, обозначение ноты появится в соответствующем окошке. В окне Длительность (Duration) можно задать длительность ноты в десятых секунды.
Аналогично, установленный флажок "Ожидание конца воспроизведения" заставит блок ждать завершения операции.
Активация робота звуком
При создании робота к NXT могут быть подключены разнообразные датчики, благодаря которым робот может реагировать на изменения в окружающей среде. Одним из таких датчиков является микрофон.
Напишем программу, заставляющую робот двигаться, когда он услышит хлопок определенной громкости.
1. Создайте новый документ. Левой кнопкой мыши перетащите в рабочую зону иконку блока Движение.
2
Настройте блок, выбрав двигатели B и С, направление движения - вперед, уровень мощности 75%, длительность - неограничена.
3
Добавим к программе блок Жди для микрофона, подключенного ко 2-му порту.
4
Настройте блок: порт 2, пороговое значение 60, активация диапазоном БОЛЬШИМ порогового значения.
5
Последним блоком программы является снова блок Движение.
6
Настройте блок, выбрав двигатели B и С, направление движения - остановка. В конце операции должен будет включен тормоз.
Чем громче, тем быстрее
Теперь напишем программу, также управляющую роботом, измеряя интенсивность звука, но распознающую 4 уровня громкости:
0 - 20
20 -40
40 - 60
60 - 100
В зависимости от громкости звука меняется скорость робота.
Программа имеет следующий вид. Рассмотрим отдельные ее составляющие.
1
Создайте новый документ. Левой кнопкой мыши перетащите в рабочую зону блок Цикл.
2. Бесконечный цикл
3
Внутрь цикла поместите первый блок-переключатель, сконфигурированный на работу с датчиком звука.
4
Порог срабатывания для этого блока установим в 40.
5
Второй блок-переключатель будет выполняться при уровнях громкости >40 %.
6
Он, в свою очередь, настроен на порог в 60%.
7
Итак, при громкости >60% выполняет блок движение, ...
8
... подающий на оба мотора 60% максимальной мощности.
9
В диапазоне громкости 40-60% ...
10
... на моторы подается уже 40 % мощности.
11
Для диапазона <40% мы используем третий блок-переключатель.
12
Его порог - 20%.
13
В диапазоне 20-40% громкости ...
14
... используется только 20% мощности двигателя.
15
Наконец при громкости <20%
16
Двигатели вообще останавливаются
Нажмите кнопку RUN, программа будет загружена в NXT и запущена.
Регулируя уровень громкости источника звука, легко управлять скоростью движения робота.
Задание: Напишите программу для управления скоростью движения робота микрофоном.
Измените программу так, чтобы робот ехал тем быстрее, чем ТИШЕ звук.
Робот-футболист. Вам предстоит собрать самую сложную модель в рамках этого курса - робота-футболиста. Робот должен подъехать к мячу, идентифицировать его и нанести удар. Кроме этого вы должны будете модифицировать робота так, чтобы он смог двигаться к мячу вдоль черной линии. Вы познакомитесь и с новым блоком языка NXT-G - блоком переменная.
Теперь мы усложним задачу - поместим мяч в конце извилистого пути, обозначенного черной линией на белом фоне. Датчик освещенности теперь должен смотреть вниз и следить за линией в процессе движения робота. Одновременно с этим робот должен контролировать расстояние до препятствия. При обнаружении мяча робот должен нанести удар вне зависимости от его цвета.
Нарисуйте на белом листе бумаги трассу. Если трасса извилистая, то робот может обнаружить мяч и попытается нанести удар раньше, чем дойдет до ее конца.
Итак, программа имеет следующий вид. Здесь мы в первый раз используем возможность NXT выполнять параллельно несколько программ или процессов. Верхняя ветвь программы определяет расстояние до объекта, в нашем случае, подставки с мячом. Нижняя ветвь управляет двигателями, отслеживая черную линию. Обмен информацией между этими параллельными процессами происходит через специальную логическую переменную (Logic 1), для чего мы добавили в программу новый блок - переменная.
1
Начнем с верхней ветви. Создайте новый документ и назовите его find_ball. Вставьте в программу блок Цикл, настройте его на работу с ультразвуковым датчиком.
1
2
Работа цикла прекратится, как только расстояние до объекта станет менее 22 см. Таким образом пустой цикл работает просто как блок жди.
3
Следующим за циклом идет блок Переменная.
4
В нем мы в переменную "Logic 1" записываем логическое значение False. Это дает знать нижней ветви программы, что робот приблизился к мячу на расстояние удара.
5
После этого робот должен произнести слово Объект ...
6.
7
... отвести клюшку и ...
8.
9.... нанести удар. Эти два блока Движение аналогичны блокам рассмотренной ранее программы.
10
11
Перейдем теперь к нижней ветви программы. Первая команда - это блок Переменная.
12
Этот блок инициирует логическую переменную "Logic 1", помещая в нее значение True. Это означает, что робот еще не достиг мяча и что он должен двигаться, следуя черной линии.
13
Следующей командой идет блок цикл,
14
настроенный на выход по логическому состоянию False.
15
Внутрь тела цикла мы помещаем блок-переключатель.
16
Он настроен на работу с датчиком освещенности при пороговом значении в 40. Как и раньше это значение подбирается, исходя из освещенности белого фона и черной линии
17
18
Следующие команды как и в предыдущей программе реализуют поворот робота вправо или влево.
19
20
21
22
23
24
25
Последней командой в теле цикла является чтение значение переменной "Logic 1".
26
Если ее значение False цикл прекращает свою работу.
27
После чего программа выключает двигатели и робот останавливается.
28
Загрузите программу в NXT, поставьте его на начало трассы и запустите программу.