Звук. Передача сообщений с помощью радиосигнала. Построение графиков

Цель: рассмотреть блоки для воспроизведения звуков с помощью платы Micro:bit; научится использовать радиомодуль платы Micro:bit; научиться собирать и визуализировать информацию датчиков.

Задание 1. Звук

1.1 Музыкальный автомат

Создайте музыкальный автомат, который будет воспроизводить разные мелодии в зависимости от нажатых клавиш:

Создание нового проекта

Создайте новый проект с именем 1-1 Музыкальный автомат.

Составьте следующую программу:

Задания для самостоятельной работы

  • Поменяйте воспроизводимые мелодии.
  • Выводите на матрицу название мелодии и изображение.
  • Добавьте воспроизведение одной из трёх случайных мелодий при встряхивании платы.

1.2 Тамагочи

Разработаем программу с помощью которой реализуем игру, в которой необходимо заботится о питомце, живущем в плате Micro:bit. Если в течении некоторого времени не взаимодействовать с устройством питомец будет реагировать на отсутствие внимания.

Создание нового проекта

Создайте новый проект с именем 1-2 Тамагочи.

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

После запуска программы покажем изображение на матрице и проиграем звук:

Добавим основную часть программы. После того, как пройдёт определённое количество времени, питомец начнёт скучать (изображение на матрице изменится, проиграется звук). Бесконечный цикл Пока необходим для того, чтобы по прошествии 40 секунд никакие взаимодействия с тамагочи не смогли сменить его состояния:

Добавим часть программы с помощью которых можно будет поднять настроение питомца:

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

Задания для самостоятельной работы

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

Задание 2. Использование радиопередатчика

2.1 “Поделись секретом”

Разработаем программу с помощью которой можно отвечать на вопросы друга таким образом, чтобы ответ знал только ваш друг, получая его на своё устройство. Вопросы должны подразумевать два возможных ответа - да или нет. Нажатие на кнопку A отправит ответ Да и покажет галочку на втором устройстве, нажатие на кнопку B - ответ Нет и покажет крестик на втором устройстве.

Создание нового проекта

Создайте новый проект с именем 2-1 Поделись секретом.

Блок Радио:задать номер группы предназначен для того, чтобы задать номер радиоканала, по которому будут передаваться и приниматься данные. Номер может принимать значения от 0 до 255. В случае если в помещении работает множество пар устройств, для каждой пары необходимо выбрать уникальный номер группы.

При запуске программы зададим номер группы:

Добавим отправку ответа Да после нажатия на кнопку A:

Добавим отправку ответа Нет после нажатия на кнопку B:

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

Сравнение строк

Для сравнения строк используйте следующий блок с кавычками:

Блок-переменная receivedString содержит полученное радиосообщение. Данный блок-переменную можно взять в заголовке блока При получении данных по радио. Создавать самостоятельно данную переменную нет необходимости.

Задания для самостоятельной работы

  • Используйте жесты акселерометра и одновременное нажатие на обе кнопки, чтобы реализовать передачу других ответов (“Возможно”, “Однозначно” и др.).
  • Измените ответы с Да (yes) и Нет (no) на Точка (dot) и Тире (dash), чтобы отправлять сообщения азбукой Морзе.

2.2 Игральный кубик для двух игроков

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

Создание нового проекта

Создайте новый проект с именем 2-2 Кубик на двоих.

Создайте переменную кубик, в которой будет храниться случайное значение от 1 до 6.

Программа отвечающая за бросок выглядит следующим образом:

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

Задание для самостоятельной работы

Добавьте блоки с помощью которых информация будет отправляться только игрокам с определённым номером канала.

Задание 3. Сбор данных. Построение графиков

3.1 Металлоискатель

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

Создание нового проекта

Создайте новый проект с именем 3-1 Металлоискатель.

Создайте переменную с именем сила.

Составьте следующую программу для измерения силы магнитного поля и построения графика по измеренным значениям:

Вывод данные в последовательный порт

Блоки для записи значений в последовательный порт можно найти, перейдя в раздел Расширенные - Последовательный порт.

Загрузите программу в плату и нажмите следующую кнопку:

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

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

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

Задания для самостоятельной работы

  • Добавьте воспроизведение звука, когда плата находится над металлическим предметом.
  • Если металл не найден, на светодиодной матрице покажите изображение крестика.

3.2 Фитнес-браслет

Micro:bit позволяет измерять величину ускорения по трём пространственным осям x, y и z. Воспользуемся данной возможностью, для того, чтобы подчитывать количество прыжков, которые сделаны во время зарядки.

На основе трёх значений ускорения ax, ay и az получим усреднённое скалярное значение ускорения, воспользовавшись следующей формулой: \[ acc=\sqrt{ax^2+ay^2+az^2} \]

Создание нового проекта

Создайте новый проект с именем 3-2 Фитнес-браслет.

Перейдите в раздел Переменные и создайте четыре переменные: x, y, z и acc.

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

Порядок составления блоков в формуле

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

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

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

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

Создайте переменную jumps, в которой будет сохраняться количество прыжков. Инициализируем её нулём при запуске программы:

В конце блока Постоянно добавьте следующее условие:

Значение, обозначенное вопросами, подберите самостоятельно, исходя из экспериментальных данных, отображённых на графике. Если условие верно, то значение переменной jumps увеличится на 1. На матрице в течении 100 мс будет отображаться изображение сердца.

Задание для самостоятельной работы

Добавьте отображение количества прыжков по нажатию на кнопку A.

Проект для самостоятельной работы

Сигнализация

Составьте программу, которая выполняет следующие действия, используя функцию передачи данных по радиоканалу:

  1. первая плата измеряет уровень освещённости с периодом в 5 секунд;

  2. если на плату падает большое количество света, отправляется сообщение “lights on”, иначе отправляется сообщение “lights off”;

  3. по нажатию на кнопку A на матрицу выводится текущий уровень освещённости;

  4. вторая плата при получении сообщения “lights on” показывает смайлик на экране и воспроизводит мелодию на ваш выбор, в случае получения сообщения “lights off” экран очищается.