№5. Секундомер


В этом занятии мы напишем простейший секундомер для микрокомпьютера microbit. Для начала создадим новый проект и назовем его stopwatch (что в переводе с английского значит секундомер).

Работу секундомера организуем следующим образом: кнопка A будет обнулять счетчик секунд и запускать отсчет времени, кнопка B будет показывать текущее значение счетчика секунд и приостанавливать или возобновлять отсчет времени. Для начала перетащим блок «кнопка … нажата» на рабочую область.

Для работы секундомера нам понадобится две переменные: счетчик секунд sec и логическая переменная isStopped, которая при значении «истина» будет останавливать отсчет времени. Создадим эти переменные в разделе «переменные».

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

Так как кнопка A запускает отсчет времени, при нажатии на кнопку A нужно присвоить переменной isStopped значение «ложь». Блок со значением «ложь» можно найти в разделе «логика».

Так как кнопки A и B всего-лишь включают/выключают отсчет времени, сам отсчет мы вынесем в блок «постоянно».

Отсчет будем производить в цикле. В данном случае нам больше всего подойдет блок «пока … делать». Смысл этого блока можно объяснить так: пока логическое значение после «пока» истинно, блок будет повторять команды, записанные после «делать» до тех пор, пока условие после «пока» не перестанет быть истинным.

В нашем случае в качестве логического выражения после «пока» будет выступать значение, противоположное значению переменной isStopped, т.е. если isStopped истинно (т.е. отсчет времени остановлен), то после «пока» должна стоять ложь, чтобы избежать выполнения команд внутри блока и наоборот. Чтобы создать противоположное значение, воспользуемся блоком «не» из раздела «логика».

Отсчет времени внутри цикла будет прибавлять единицу к счетчику секунд и после этого вызывать паузу на одну секунду. Для прибавления единицы воспользуемся блоком «изменить … на» из раздела «переменные»

Блок паузы можно найти в разделе «основное». Число внутри блока — это длина паузы в миллисекундах. Так как нам нужна пауза в 1 секунду, установим значение 1000.

Теперь перейдем к программированию кнопки B. Как мы уже определили, ее функцией будет приостановка/возобновление отсчета времени и отображение текущего значения счетчика секунд. Для приостановки/возобновления счета достаточно изменить значение isStopped на противоположное. Для начала вытащим в рабочую область блок «кнопка … нажата» и выберем кнопку B.

Теперь изменим значение переменной isStopped на противоположное с помощью блока «задать для … значение» из раздела «переменные» и блока «не» из раздела «логика».

Теперь осталось добавить вывод текущего значения счетчика секунд на дисплей. Для этого используем блок «показать число» из раздела «основное».

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