Читаем Робототехника: практическое введение для детей и взрослых полностью

<p>Проверка состояния кнопки</p>

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

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

Код программы показан на рис. 3.8. Вы найдете эту программу в файле microbit-Вселенная-кнопка-А.hex.

Рис. 3.8. Программа работает только при нажатой кнопке A

Здесь мы добавили в постоянно блок если. В качестве условия в блок если мы вставили проверку кнопка нажата. Эта проверка находится в палитре Ввод.

Давайте усложним нашу программу. Пусть теперь звезды зажигаются и гаснут, если кнопка A не нажата, и перестают зажигаться и гаснуть, когда мы нажимаем кнопка A.

Для кнопки B тоже найдется работа. Каждый раз когда мы будем ее нажимать, процесс зажигания и угасания звезд должен замедляться.

Новый вариант программы показан на рис. 3.9, файл microbit-Вселенная-на-паузе.hex.

Рис. 3.9. Новая версия программы управления звездами

В блоке при начале мы задаем в переменной задержка начальное значение задержки, равное 0. При нажатии на кнопку B мы увеличиваем значение задержки на 50 мс.

В блоке постоянно мы использовали цикл если иначе. Как он работает?

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

Как мы уже говорили, по умолчанию значение параметра для блока пауза, которое хранится в переменой задержка, равно нулю. Если вы будете нажимать кнопку B, то это значение будет увеличиваться на 50 мс при каждом нажатии. В результате жизнь наших звезд будет каждый раз замедляться.

<p>Сенсорная кнопка в виде логотипа</p>

В micro:bit версии 2 появилась сенсорная кнопка в виде логотипа (рис. 3.10). Ее можно нажимать, дотрагиваясь пальцем.

Рис. 3.10. Логотип стал сенсорной кнопкой

Для работы с сенсорной кнопкой в виде логотипа в палитре Ввод, в разделе micro:bit (V2) появились блоки on logo и logo is pressed (рис. 3.11).

Рис. 3.11. Блоки для работы с сенсорной кнопкой в виде логотипа

Блок on logo получает управление, если дотронуться до логотипа пальцем. С помощью блока logo is pressed можно проверить, нажат логотип в настоящее время, или нет.

На рис. 3.12 мы показали простейшую программу microbit2-Сенсорный-логотип.hex, реагирующую на нажатие логотипа.

Рис. 3.12. Обработка событий от логотипа

Если нажать логотип, на экране micro:bit появится галочка. Чтобы она исчезла, нажмите кнопку А.

В блоке on logo можно указать, что событие от логотипа должно возникать только в том случае, если нажимать на него достаточно долго. Такое поведение демонстрирует программа microbit2-Логотип-нажат-долго.hex (рис. 3.13).

Рис. 3.13. Реагирование на длительное нажатие логотипа

Вы также можете регистрировать события, возникающие в момент отпускания логотипа. Для этого в меню блока on logo выберите строку отжата.

Еще одна несложная программа microbit2-Сенсорный-логотип-2.hex демонстрирует использование блока logo is pressed (рис. 3.14).

Рис. 3.14. Проверяем нажатие логотипа в цикле

Эта программа проверяет состояние кнопки логотипа в цикле. Пока логотип нажат, программа рисует на экране micro:bit бьющееся сердце. Но как только вы отпустите логотип, сердце исчезает!

<p>Сенсорные контакты</p>

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

Сенсорные кнопки на micro:bit версии 2 могут работать в емкостном и резистивном режиме.

В емкостном режиме используется тот факт, что прикосновение к кнопке равносильно подключению к ней конденсатора.

В резистивном режиме предполагается, что человек касается одновременно кнопки и общего провода (земли, минуса источника питания). При этом изменяется сопротивление между кнопкой и землей от практически бесконечного до значений, исчисляемых единицами или десятками КОм.

Перейти на страницу:

Похожие книги

Диверсант (СИ)
Диверсант (СИ)

Кто сказал «Один не воин, не величина»? Вокруг бескрайний космос, притворись своим и всади торпеду в корму врага! Тотальная война жестока, малые корабли в ней гибнут десятками, с другой стороны для наёмника это авантюра, на которой можно неплохо подняться! Угнал корабль? Он твой по праву. Ограбил нанятого врагом наёмника? Это твои трофеи, нет пощады пособникам изменника. ВКС надёжны, они не попытаются кинуть, и ты им нужен – неприметный корабль обычного вольного пилота не бросается в глаза. Хотелось бы добыть ценных разведанных, отыскать пропавшего исполина, ставшего инструментом корпоратов, а попутно можно заняться поиском одного важного человека. Одна проблема – среди разведчиков-диверсантов высокая смертность…

Александр Вайс , Михаил Чертопруд , Олег Эдуардович Иванов

Фантастика / Прочее / Самиздат, сетевая литература / Фантастика: прочее / РПГ