熊おふし五郎が行く

主にマイコンボードを動かした記録を書いています

REPL(エラーメッセージ表示、変数の値の監視)

概要

micro:bitが実行中に内部データを読み込むときは、MuエディタのREPL機能がとても便利です。

REPLとは

REPLとは、「Read-Eval-Print loop(読んで評価して表示して繰り返す)」の略語です。pythonの命令を実行したり、Micro:bitからのprint命令の内容を出力したりしてできる対話型評価環境です。

できることは

REPLでできることを以下に示します。なお、ここではMicro:bitからのデータを表示する使用例だけにします。

  • エラーメッセージを表示
  • デバッグで変数などの内容を表示
  • micro:bitが読み込んだデータを表示

基本的な使い方

Micro:bitからのデータを表示する基本的な方法を以下に示します。Micro:bitはあらかじめプログラムをロードします。

  1. ボタンをクリックして、下側に「REPL」ウィンドウを表示します。
  2. Micro:bitのリセットボタンを押します。
  3. 「REPL」ウィンドウにMicro:bitからのデータが表示されます。

◆注意

REPL表示中は<転送>ボタンと<ファイル>ボタンは使用できません。 再度ボタンをクリックした後は、<転送>ボタンと<ファイル>ボタンは使用できます。

エラーメッセージを表示

LEDディスプレイにエラーメッセージが流れたとき、読みにくいことがあります。 「REPL」ウィンドウを表示して、Micro:bitのリセットボタンを押すと、「REPL」ウィンドウにエラーメッセージが表示されます。

エラーメッセージを表示するコードの例を以下に示します。

from microbit import *

i = 1 + 3: display.show(str(i))

上記のコードのエラーメッセージを以下に示します。 エラーメッセージに"line 3"と"SyntaxError"があるので、3行に文法の間違いがあると確認できます。
f:id:bear_9973:20200613091418p:plain:w600
エラーメッセージ表示

デバッグで変数などの内容を表示

想定していない動作があったとき、プログラムの変数の内容を確認したいときがあります。確認したい変数に格納されたデータは、print文で「REPL」ウィンドウに出力することができます。
以下のプログラムを実行した結果、LEDディスプレイに想定外の表示があったときのデバッグを例にします。想定では「11」が表示されるはずですが、LEDディスプレイは「1」が表示されます。

from microbit import *

j = 5 * 2 i = 1 + j display.show(str(i)) print('i=', i, 'j=', j)

「REPL」ウィンドウを表示して、Micro:bitのリセットボタンを押すと、「REPL」ウィンドウで正常に計算していることが確認できます。そこでLEDディスプレイの表示方法を見直すという修正方針ができました。

f:id:bear_9973:20200613092409p:plain:w600
データ表示

ログデータを表示

Micro:bit搭載のLEDディスプレイは、1文字しか表示できません。デバイスの動作を細かく確認したいときは、「REPL」ウィンドウに確認したいデータをprint文で表示フォーマットを整えて出力できます。
温度センサの測定値を「REPL」ウィンドウに表示するプログラムを以下に示します。
from microbit import *

while True: temp = temperature() display.show(Image.HAPPY) print(str(temp) + 'C') sleep(500)

「REPL」ウィンドウを表示して、Micro:bitのリセットボタンを押すと、「REPL」ウィンドウに温度センサーの値が表示されます。

f:id:bear_9973:20200613093246p:plain:w600
データ表示

結果

Micro:bitの開発環境のひとつであるMuは、デバックに有効な機能が最低はそろっています。 例えば、センサからの出力データ(生データ)を確認することができます。