【マイクロビット応用】[9.1]キッチンタイマーのプログラム:最初のバージョンのプログラム

マイクロビット

 キッチンタイマーのプログラムの最初のバージョンだよ~。

動作環境

 簡単に動作環境を説明しておこう。

 0ピンにスイッチ、1ピンと2ピンにLEDを追加したのでしたね。

画像に alt 属性が指定されていません。ファイル名: p0003007a.gif

 マイクロビットはバージョン2を使用したのだ。

 詳しくは、本文を見てね~(新しいタブで開きます。)

【マイクロビット応用】[9] キッチンタイマー(3)最初のバージョンのプログラムを作る

プログラム

 今回作成したプログラムの全文を掲載するのだ。

  • __1行目 # kitcchen timer program ver.1
  • __2行目 from microbit import *
  • __3行目 import utime
  • __4行目 import audio
  • __5行目 
  • __6行目 STATE_SETTING = 0
  • __7行目 STATE_COUNT_DOWN = 1
  • __8行目 STATE_ALARM = 2
  • __9行目 
  • _10行目 # s : キッチンタイマーの設定時間(秒)
  • _11行目 s = 0
  • _12行目 
  • _13行目 # Aボタンが押されたとき、Bボタンが押されているかどうかを調べる。
  • _14行目 def UserInput_CheckB():
  • _15行目  if button_b.is_pressed():
  • _16行目   return ‘w’
  • _17行目  return ‘a’
  • _18行目 
  • _19行目 # Bボタンが押されたとき、Aボタンが押されているかどうかを調べる。
  • _20行目 def UserInput_CheckA():
  • _21行目  if button_a.is_pressed():
  • _22行目   return ‘w’
  • _23行目  return ‘b’
  • _24行目 
  • _25行目 # どのボタンが押されたか調べる。
  • _26行目 def UserInput():
  • _27行目  if button_a.was_pressed():
  • _28行目   return UserInput_CheckB()
  • _29行目  if button_b.was_pressed():
  • _30行目   return UserInput_CheckA()
  • _31行目  if pin0.read_digital() == 0:
  • _32行目   return ‘c’
  • _33行目  return ‘ ‘
  • _34行目 
  • _35行目 # マイクロビットに記録されたボタンの情報をクリアする。
  • _36行目 def ClearButtonInfo():
  • _37行目  button_a.was_pressed()
  • _38行目  button_b.was_pressed()
  • _39行目 
  • _40行目 # 「設定の状態」の動き
  • _41行目 def StateSetting():
  • _42行目  global s
  • _43行目  while True:
  • _44行目   display.scroll(s)
  • _45行目   data = UserInput()
  • _46行目   if data == ‘a’:
  • _47行目    s = s + 60
  • _48行目   elif data == ‘b’:
  • _49行目    s = s + 1
  • _50行目   elif data == ‘w’:
  • _51行目    s = 0
  • _52行目    display.scroll(s)
  • _53行目    ClearButtonInfo()
  • _54行目   elif data == ‘c’:
  • _55行目    break
  • _56行目 return STATE_COUNT_DOWN
  • _57行目 
  • _58行目 # 「カウントダウンの状態」の動き
  • _59行目 def StateCountDown():
  • _60行目  global s
  • _61行目  nextState = STATE_ALARM
  • _62行目  # 終了時刻を設定する。
  • _63行目  deadLine = utime.ticks_add(utime.ticks_ms(), s * 1000)
  • _64行目  # HAPPYのイメージを表示して開始音を鳴らす。
  • _65行目  display.show(Image.HAPPY)
  • _66行目  audio.play(Sound.HELLO)
  • _67行目  # 現在時刻が終了時刻より前の間はループする。
  • _68行目  while utime.ticks_diff(deadLine, utime.ticks_ms()) > 0:
  • _69行目   display.scroll(utime.ticks_diff(deadLine, utime.ticks_ms() / 1000)
  • _70行目   # ボタンが押されたかどうかを調べる。
  • _71行目   data = UserInput()
  • _72行目   # Cボタンが押された場合は中止する。
  • _73行目   if data == ‘c’:
  • _74行目    nextState = STATE_SETTING
  • _75行目    break
  • _76行目 return nextState
  • _77行目 
  • _78行目 # 「アラームの状態」の動き
  • _79行目 def StateAlarm():
  • _80行目  alarmCount = 1
  • _81行目  # ループ
  • _82行目  while True:
  • _83行目   # 一回目はHAPPYのイメージを表示して片方のLEDを光らせる。
  • _84行目   if alarmCount == 1:
  • _85行目    display.show(Image.HAPPY)
  • _86行目    pin1.write_digital(1)
  • _87行目   # 二回目はSNAKEのイメージを表示してもう一方のLEDを光らせる。
  • _88行目   elif alarmCount == 2:
  • _89行目    display.show(Image.SNAKE)
  • _90行目    pin2.write_digital(1)
  • _91行目   # 三回目はHEARTのイメージを表示して両方のLEDを光らせる。
  • _92行目   elif alarmCount == 3:
  • _93行目    display.show(Image.HEART)
  • _94行目    pin1.write_digital(1)
  • _95行目    pin2.write_digital(1)
  • _96行目   # 四回目になったらアラーム終了。
  • _97行目   else:
  • _98行目    break
  • _99行目   # ボタンが押されたかどうかを調べる。
  • 100行目   data = UserInput()
  • 101行目   # Cボタンが押された場合は中止する。
  • 102行目   if data == ‘c’:
  • 103行目    break
  • 104行目   # 音を鳴らす。
  • 105行目   audio.play(Sound.SPRING)
  • 106行目   # LEDを消灯する。
  • 107行目   pin1.write_digital(0)
  • 108行目   pin2.write_digital(0)
  • 109行目   # 回数を1増やす。
  • 110行目   alarmCount = alarmCount + 1
  • 111行目 return STATE_SETTING
  • 112行目
  • 113行目 # 最初は「設定の状態」とする。
  • 114行目 state = STATE_SETTING
  • 115行目
  • 116行目 while True:
  • 117行目  if state == STATE_SETTING:
  • 118行目   state = StateSetting()
  • 119行目  elif state == STATE_COUNT_DOWN:
  • 120行目   state = StateCountDown()
  • 121行目  elif state == STATE_ALARM:
  • 122行目   state = StateAlarm()
  • 123行目  else:
  • 124行目   state = STATE_SETTING

 プログラムの内容については、以下を見てね!

【マイクロビット応用】[9] キッチンタイマー(3)最初のバージョンのプログラムを作る

コメント

タイトルとURLをコピーしました