Вы находитесь на странице: 1из 7

Программируем BBC micro:bit

Шаг 3. Переменные, датчики и принятие решений

На этом шаге мы познакомимся с ветвлением в алгоритме и условной командой. Небольшое, на


первый взгляд, развитие на практике позволит существенно расширить круг задач и
приблизиться к реальным STEM-проектам.

Значения переменных, о которых мы говорили на Шаге 2, могут быть разными — это могут быть
числа и строки, логические значения, показания датчиков, случайные числа.

Встроенных в микроконтроллер датчиков несколько — датчик температуры, освещённости,


акселерометр, магнитометр. ​Особенности датчиков BBC micro:bit описаны в конце документа.

Опираясь на показания датчиков BBC micro:bit, как и в реальной жизни при использовании бытовых
датчиков, принимают те или иные решения.

К сожалению, браузерный эмулятор контроллера не позволит в полной мере проверить работу


датчиков, но может дать представление о них.

Принятие решения основывается на выборе какого-то варианта из нескольких возможных. В


программировании это называется ​ветвлением​.

Пример 1. Измерение температуры

Измерить температуру среды. Если температура комфортная — выше 20 градусов, то вывести на


дисплей весёлый смайлик, иначе вывести печальную рожицу.

Для решения этой задачи нам надо воспользоваться новой группой — ​Logic​— и блоком​​If-then-else.
Если условие выполнено (его значение “правда”, “true”), то выполняется блок команд, которые
следуют за словом “​then​” (“тогда”). Иначе выполняется блок команд, которые следуют за словом
“​
else​
” (“иначе”).

Измерение температуры привяжем к событию “​Нажата кнопка A​”. При нажатии кнопки A измеряем
температуру и значение, полученное от датчика, сравниваем с заданным​. ​При встряхивании экран
очищается.

Решение задачи:

В эмуляторе с помощью мыши можно регулировать показания датчика температуры — подтягивая


красный столбик наверх или, наоборот, опуская вниз.

Позже мы рассмотрим более содержательные, но и более сложные проекты с датчиком


температуры.

Тузова О. А. Программируем BBC micro:bit. Шаг 3. Переменные, датчики и принятие решений


Пример 2​. ​Фокус с кнопками (Button Trick)

Пример заимствован с сайта ​https://makecode.microbit.org/projects/ ​>> ​magic button trick

В этом примере используется возможность BBC micro:bit измерять характеристики магнитного поля.
В данном случае — индукции (единица измерения - микротесла).

Суть “фокуса” состоит в том, что кнопки микроконтроллера “вдруг” меняют свою реакцию на нажатие.
Сначала при нажатии кнопки A на дисплее появлялось изображение буквы A, при нажатии кнопки B
— изображение буквы B. Но вдруг, по “непонятным причинам” картина меняется: при нажатии кнопки
A на дисплее появляется изображение буквы B, при нажатии кнопки B — изображение буквы А. Но
человеку посвящённому причина вполне понятна — к микроконтроллеру подносится магнит, который
меняет параметры магнитного поля.

Решение:

Обратите внимание: переменная ​магнит​получает значение ​модуля​измеряемой величины. Блок


absolute of​(модуль числа) находится в группе ​Math => More

Пример 3. Развитие примера 1

Если температура среды выше 20 градусов, вывести весёлый


смайлик. Иначе, если температура выше 15 градусов, вывести
рожицу “удивление”. Иначе вывести печальную рожицу.

Чтобы построить такую усложнённую конструкцию нам понадобится


больше ветвлений, которые становятся доступными, если нажать на
синюю кнопку с шестерёнкой в блоке​if​:

Тузова О. А. Программируем BBC micro:bit. Шаг 3. Переменные, датчики и принятие решений


Пример 4. Micro:bit компас

Пример заимствован с сайта ​The Brooke Primary School Space Programme

Этот самодельный компас можно, как описано на сайте, использовать в весёлой игре “Найди клад”.
Один из участников игры прячет “клад” и описывает дорогу к нему, указывая направление (по
компасу) и количество шагов. Игра не только весёлая, но и полезная, наглядно демонстрирующая,
как погрешности в измерении влияют на конечный результат.

В этом примере мы используем бесконечный цикл ​forever​, блок которого находится в группе ​
Basic.

Кроме того, нам понадобится логическая операция ​and (И), ​так как для определения значений
“Север” (N — North) , “Юг” (S — South), “Запад” (W — West) и “Восток” (E — East) мы будем
использовать угловой диапазон — для начала 40 градусов:

Если указатель стрелки компаса находится в промежутке от 70 до 110 градусов (больше 70 ​ И​ меньше
110), то будем считать, что он указывает на восток, от 160 до 200 (больше 160 ​И ​меньше 200) — на
юг, от 250 до 290 (больше 250 ​И ​меньше 290) — на запад. Северное направление для единообразия
разобъём на два промежутка — от 340 до 360 и от 0 до 20, но так же в этом случае можно
использовать логическую операцию or (​ИЛИ) ​— измерение меньше 20 ​ИЛИ​больше 340.

Тузова О. А. Программируем BBC micro:bit. Шаг 3. Переменные, датчики и принятие решений


Решение:

Развитием проекта может быть введение промежуточных значений — северо-восток, юго-запад и т.п.

Пример 5. Агрегатные состояния воды

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

Из жизненного опыта нам известны два факта:

1. Вода может находиться в трёх состояниях — жидком, твёрдом и газообразном.

2. Состояние воды зависит от температуры окружающей среды и в зависимости от этой температуры


вода может переходить из одного состояния в другое. Если мы тёплую воду вынесем на мороз, она
сначала будет постепенно охлаждаться, а затем превратиться в лёд. Если мы внесём лёд в комнату,
то он сначала будет таять, а затем вода нагреется до комнатной температуры. Нагревание воды
может перевести её в новое состояние — пар.

Построим модель, которая условными изображениями на экране дисплея продемонстрирует этот


процесс. Попробуйте самостоятельно “собрать” код программы по её описанию.

1. Заведём две переменные — ​Температура среды​, ​Температура воды​. В начальный момент


on start​​зададим этим переменным значение 20 (градусов Цельсия).
2. Кнопками A и B температуру среды можно менять — повышать на 10 градусов каждым
нажатием (кнопка A) и понижать на 10 градусов (кнопка B). При этом на экране появляется
указатель — стрелка вверх или стрелка вниз.
3. Событие​logo up ​свяжем с выводом температуры среды на экран, событие ​logo up ​—
выводом температуры воды на экран.
4. Основной процесс программируем в цикле ​forever​(всегда).

Тузова О. А. Программируем BBC micro:bit. Шаг 3. Переменные, датчики и принятие решений


a. Если температура воды меньше температуры среды, то она увеличивается на 20
градусов. Но температура не должна превышать 100 градусов. Поэтому после
увеличения температуры мы сравним это значение с числом 100 и, если получили
значение больше, то зададим переменной ​Температура воды​значение 100.
b. Иначе, если (​else if​) температура воды больше температуры среды, то она
уменьшается на 20 градусов. Так же делаем проверку, чтобы температура воды не
опускалась ниже 0 градусов.
c. Подбираем подходящие изображения для каждого из трёх состояний и пишем
несложное ветвление:
i. Если температура воды меньше или равна 0, то показать “лёд”
ii. Иначе, если температура воды < 100, то показать “жидкость”
iii. Иначе показать “газ”.
d. Небольшая пауза перед очисткой экрана.

Ниже приведён код программы, но вы уже вполне можете справиться с таким заданием
самостоятельно.

Код программы “Агрегатные состояния воды”

Пример 6. Самодельный комнатный термометр

В этом интересном проекте предлагается смастерить действующую модель комнатного термометра с


использованием сервомотора. Тем, у кого нет микроконтроллера под рукой или сервомотора, не
стоит отчаиваться, эмулятор позволит создать виртуальную модель с подключением внешних
устройств. Подробные инструкции — в видеоролике ​Getting Started with micro:bit Part 3: Temperature

Тузова О. А. Программируем BBC micro:bit. Шаг 3. Переменные, датчики и принятие решений



Gauge​.​ Ролик на английском языке, но все объяснения наглядны и понятны,
незнание языка не будет проблемой.

В этом проекте возникает интересная математическая задача отображения диапазона значений


измеряемой температуры на угловой диапазон поворота стрелки термометра, привязанной к
сервоприводу: ​20..35 градусыцельсия => 0..180 градусы поворота ​(7:05 минута ролика). Решается
эта задача с помощью функции ​map. ​Можно предложить ученикам построить требуемое
отображение без её использования​.

_________________________________________________________________

Встроенные датчики микроконтроллера BBC micro:bit. Некоторые особенности


конструкции и использования

1. Датчик температуры

Датчик температуры микроконтроллера на самом деле не является точным измерителем, он может


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

Тузова О. А. Программируем BBC micro:bit. Шаг 3. Переменные, датчики и принятие решений


2. Магнитометр

Магнитометр используется как компас, детектор металла и скрытой проводки или выступает в роли
датчика Холла (​http://amperka.ru/product/bbc-microbit​). При использовании магнитометра на реальном
устройстве при каждом новом запуске программы потребуется выполнить калибровку.

3. Акселерометр

Один из самых интересных датчиков. В микроконтроллер встроен полноценный трёхосный


акселерометр, который позволяет определять ускорение действующее в направлении осей X, Y, Z и
применяется для определения ориентации объекта в пространстве: ​углов крена и тангажа. ​ Это даёт
возможность пользователю управлять внешними устройствами или выводом на дисплей с помощью
“жестов” — наклонов устройства вправо и влево, вверх или вниз “головой”, вверх или вниз “лицом”,
встряхивания.

Пример: ​https://youtu.be/Hi3Km1PV45M

4. Датчик освещённости

Для определения освещённости используются 9 светодиодов из 25, которые формируют матрицу


дисплея. Таким образом, если вы хотите измерить освещённость какого либо объекта, направляйте
на него дисплей микроконтроллера.

Подробности здесь: ​https://lancaster-university.github.io/microbit-docs/extras/light-sensing/

Тузова О. А. Программируем BBC micro:bit. Шаг 3. Переменные, датчики и принятие решений