basic.forever(() => {
basic.showLeds(`
. . # . .
. # . # .
# . . . #
. # . # .
. . # . .
`)
basic.pause(500)
basic.showLeds(`
. . . . .
. . # . .
. # . # .
. . # . .
. . . . .
`)
basic.pause(500)
})
Здесь, как можно видеть, задается лишь функция basic.forever, что делается внутри нее, вполне читабельно и понятно.
Еще один удобный момент - при добавлении компонентов, симулятор платы слева начинает работать автоматически, показывая что получится в результате. Таким образом, для написания и отладки программы даже не нужна сама плата BBC Micro:bit, все можно сделать прямо в симуляторе на странице.
Наконец, посмотрев на программу в симуляторе, можно загрузить ее в реальную плату. Подключаем Micro:bit к компьютеру USB-кабелем (она определится в системе как диск), на странице нажимаем Download, и сохраняем получившийся Hex-файл на новый диск. После сохранения, программа запустится автоматически, и мы увидим горящие светодиоды. Как и в случае с Arduino, программа сохраняется во флеш-памяти, и при следующем включении платы будет запущена автоматически. Это позволяет использовать BBC Micro:bit автономно, отдельно от компьютера.
5.3 Возможности ввода-вывода
Несмотря на небольшой размер, BBC Micro:bit имеет достаточно разнообразные способы ввода данных.
Пользователю доступны:
- нажатие кнопок А или В,
- одновременное нажатие кнопок А+В,
- прикосновение одной рукой к контакту 0, 1 или 2, другой к GND,
- встряхивание,
- использование акселерометра.
Для примера, сделаем простой счетчик, увеличивающий значение при нажатии кнопки “А” или “В”, одновременное нажатие будет сбрасывать счетчик в 0. Он может пригодиться например, при подсчете числа посетителей на спортивном соревновании, птиц, прилетающих к кормушке, и пр. Такие устройства, кстати, до сих пор производятся и продаются в “механическом” виде:
Ну а мы сделаем электронную версию такого счетчика. “Код” несложно создать мышью, блок-схема показана на рисунке.
Те, кто использовал кнопки в Arduino, наверняка увидят знакомые конструкции. В целом, код не нуждается в комментариях, все просто и очевидно. Ординарное нажатие кнопки используется для инкремента счетчика, двойное нажатие используется для его сброса. К сожалению, матрица светодиодов не позволяет отображать длинные цифры, поэтому если значение счетчика больше 10, то автоматически включается прокрутка.
Как говорилось выше, код можно протестировать прямо в браузере, с помощью симулятора:
Когда программа проверена и отлажена, ее можно загрузить в реальную плату. Кстати, в комплекте с платой идет блок питания от батареек, так что BBC Micro:bit можно брать с собой и использовать не только дома, но и с друзьями или на улице.
Самостоятельная работа: попробовать остальные способы ввода, доступные на BBC Micro:bit. Кстати, среди них есть довольно-таки экзотические, например в качестве события можно использовать “свободное падение”.
5.4 Управление наклонами платы - использование акселерометра
Рассмотрим режим, наиболее подходящий для несложных игр - выведем на экране пиксел, которым можно будет управлять, наклоняя плату в разную сторону. За наклоны платы “отвечает” акселерометр - сенсор, позволяющий получить значения относительно осей x, y и z.
Шаг-1: Узнаем, как меняются показания акселерометра при наклоне платы. Это можно найти в документации, но гораздо проще и быстрее просто проверить. Для этого создаем простую программу, выводящую значения на экран.
Запускаем программу, наклоняем плату и убеждаемся что значения варьируются в диапазоне -1023...1023.
Шаг-2. Выведем на экране точку, положение которой будет определяться двумя координатами x и y.
Матрица светодиодов имеет размерность 5х5, соответственно, координаты точек будут изменяться от (0,0) до (4,4).
Шаг-3. Изменим значение x, если наклон платы превышает определенную величину. Максимальный наклон равен 1023, возьмем нечто меньшее, например 200. Также необходимо будет добавить проверку на пересечение краев экрана: х не должно быть меньше 0 и больше 4. Также добавим паузу, чтобы точка не “убегала” слишком быстро. Получается немного громоздкая, но вполне понятная конструкция.