Skip to content

アクティビティ

タッチストップウォッチ

中級 | MakeCode, Python | LED表示, タッチロゴ, ボタン | ブール論理, 入出力, 変数, 算術演算子, 計測

ステップ1: 作る

説明

新micro:bitのタッチロゴセンサーを追加ボタンとして使用して、本物のストップウォッチを作りましょう。

はじめに

プログラミングガイド

学ぶこと

  • 実用的プロジェクトで新micro:bitのタッチロゴセンサーを追加ボタンとして使用する方法
  • 時間を測定するための変数と数学演算子の使い方
  • 数学演算子を使用して単位を変換する方法 (ミリ秒から秒)
  • ブール変数についてと、プログラムのフロー制御のための使い方

使い方

  • スピーカーを内蔵した新micro:bitにプログラムを書き込みましょう。
  • Aボタンを押してストップウォッチを起動します。 計測中、LEDディスプレイにはドキドキする心臓のアニメが表示されます。
  • ボタンBを押して停止します。 好きなだけ開始や停止でき、本物のストップウォッチのように時間に追加し続けます。
  • micro:bitの前面にある金色のタッチロゴを押せば、測定時間を秒単位で表示します。
  • 時間をゼロに戻すには、micro:bitの背面にあるリセットボタンを押します。

動作の仕組み

  • micro:bit はミリ秒(1/1000秒)単位で電源投入時からの時間を計測しています。 これを実行時間と呼びます。
  • Aボタンを押すと、変数 start が現在の実行時間に設定されます。
  • Bボタンを押すと、ストップウォッチ開始からどれだけ時間が過ぎたかを計算するため、start は新しい実行時間から減算されます。 この差分は合計時間に追加され、変数 timeに格納されます。
  • タッチロゴを押すと、LEDディスプレイに合計経過時間が表示されます。 時間をミリ秒(1/1000秒)から1000で割って秒に変換します。 整数除算演算子を使って結果を整数で与えます。
  • プログラムは、プログラムを制御するためにブール変数 runningを使用します。 ブール変数は true または false の 2 値しか持てません。 runningがtrueなら、ストップウォッチが開始されています。 running がfalseの場合、ストップウォッチは開始されていないか停止しています。
  • running がtrueの場合、ループはLEDディスプレイに心臓のアニメを表示し続けます。
  • ストップウォッチが停止しているとき、つまりrunningtrueではないときには、ロゴを押したときしか、時間を表示しません。
  • このコードは読み込みミスを防ぐために、変数timeを、ストップウォッチが開始されているとき、つまり変数runningがtrueのとき、Bボタンを押すことでしか数が変わらないようにしています。

必要なもの

  • サウンド付きの新micro:bit(またはMakeCodeシミュレーター)
  • MakeCodeまたはPythonエディター
  • バッテリーパック(オプション)

ステップ2: プログラムする

1from microbit import *
2time = 0
3start = 0
4running = False
5
6while True:
7    if running:
8        display.show(Image.HEART)
9        sleep(300)
10        display.show(Image.HEART_SMALL)
11        sleep(300)
12    else:
13        display.show(Image.ASLEEP)
14    if button_a.was_pressed():
15        running = True
16        start = running_time()
17    if button_b.was_pressed():
18        if running:
19            time += running_time() - start
20        running = False
21    if pin_logo.is_touched():
22        if not running:
23            display.scroll(int(time/1000))

ステップ3: 改善する

  • プログラムを変更して、micro:bitを振ったら時間をリセットできるようにしましょう。
  • タイマーを正確にするために、整数ではなく小数を使いましょう。
  • ストップウォッチ実行中にロゴをタッチすると、その時点での時間が表示されるようにラップタイム機能を追加しましょう。 これが変数 time の合計に加えられていないことを、忘れずに確認しましょう。