キッチンタイマーのプログラムの最初のバージョンだよ~。
動作環境
簡単に動作環境を説明しておこう。
0ピンにスイッチ、1ピンと2ピンにLEDを追加したのでしたね。
マイクロビットはバージョン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)最初のバージョンのプログラムを作る
コメント