Выбрать главу

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. Также добавим паузу, чтобы точка не “убегала” слишком быстро. Получается немного громоздкая, но вполне понятная конструкция.