見出し画像

M5Stack を使ってみた #03

UIFLowのブロックを使ってみる

まずは、参考書のサンプルを実行する

開発環境が出来たので、早速開発!という訳には行きません。まず、参考書のサンプルを実際に自分で作って、そのふるまいを確認するところから始めました。

「習うよりも慣れろ」という言葉がありますが、意味が良く分かっていなくても、説明のとおりにブロックを配置し、実行し、ふるまいを確認するというプロセスを繰り返すことで、だんだんと分かってくるようになりました。

参考書の内容は、全部やってみました。
そのあと、UIFlow のブロックに表示される Load Example とか Demo を表示させて、実際に動かしてみました。

少しわかると、「では、こうするとこうなるはず」と、コードを少し変えたり追加したりしてふるまいを確認します。うまく行かなかったときは、何故かを考えて、その上で仮説を立て、コードを直して、ふるまいを確認します。こんな感じで、勉強しました。
これは、仕事でやって来た方法と変わりがないのですが、仕事では無くて趣味でやる分にはストレスが無くて楽しいです。

そういった中で、いっくつか気付きを得たことがあります。他の人にも参考になるかもしれないので、いくつか紹介します。

変数はグローバル

変数を使う時は、あらかじめ変数のブロックを定義します。プログラムは、その変数のブロックをドラッグアンドドロップして使います。
関数を定義するブロックを調べていて、関数内でしか使わなくても変数はあらかじめグローバルに定義しなくてはいけない事に気が付きました。

UIFLowのBlocklyの画面

緑の枠内が定義された変数のブロックです。
これがすべてグローバルなので、microPythonで見ると、

def InitialSetting():
  global LightOn, RUN, FName, EnvData, ProgramTitle, DebugMode, Current, indx, dTemp, YEAR, DataFileName, ddTemp, MONTH, MaxDataSize, TEMP, DAY, BARO, Last1Data, TIME, HUMI, FileIndx, Last2Data, dBaro, ddBaro, dHumi, ddHumi, wdt

となります。個人的には、全く好みではないのですが、プログラミングが初めてという人には分かりやすいのだと、納得です。

microPython で編集しても、Blocklyには更新されない

ビジュアルプログラミングは直観的で良いのですが、同じブロックを続けて配置する時など、面倒くさいと思う事も度々あります。そのようなときは、普通のIDE環境の方がいいと思えます。

それで、UIFLowを microPython のモードにすると、ビジュアルプログラミングの内容が、Pythonのコードで表現されます。

こっちの方で効率よく編集して、元に戻せば良い!と思ったのですが、駄目でした。編集が出来ません。ちょっとでも編集すると、警告画面が出ます。

microPythonでロジックを確認する

プログラムの編集には使えませんが、作成したプログラムのロジックを Python のコードとして確認できるのはとても勉強になります。
UIFlow は分かりやすいですが、ちょっと大きなプログラムになると、画面にブロックが収まらなくなります。その内、ちゃんとしたIDEで開発する必要が出てくると思います。その準備として、Python のコードに慣れておくのは良いと思いました。

シリアル出力はデバッグに便利

シリアル出力のブロックは、デバッグに便利です。

UIFlow では、ブレイクポイントを設ける事も、変数の値をウォッチする事も出来ません。なので、要所要所で、テキストや変数の値をシリアル出力させるブロックを追加しておきます。すると、プログラムがちゃんと動いているか、変数は意図したとおりになっているかを確認できて便利です。

VBAには、Debug.Print  という構文がありますが、あれと同じです。

ブロックの移動に失敗したら、すぐにUNDO

ブロックの直観的に入れ替え出来るのがビジュアルプログラミングの良いところですが、マウスの操作がうまく出来なくて、思った通りにブロックが動いてくれない時があります。また、使い始めは、画面全体をパンさせるつもりがブロックを動かしてしまった、という事が良くあります。

画面移動を間違えると、ブロックをドラッグしてしまう

移動したブロックが何処にあったのかわからなくて、慌てることがあります。そんな時は、下手に戻そうとせずに、UNDOをするのが良いです。代わりに正しい位置に戻してくれます。

.m5f ファイルのロードに失敗する時がある

作成中のプログラムは、.m5fという拡張子のテキストファイルとして保存できます。

しかし、そのファイルが開けなくなる時があります。保存した時は、なんの警告も出てません。どうもプログラムの内容によって、保存できても開けない、という事が起きるようです。プログラムの内容に起因するので、ある時点以降のプログラムは全滅となるので、結構めげます。

防止する方法は今のところ見つかってません。なので、嫌な予感がするときは、UIFLowをもう一つ立ち上げておいて、ちゃと開くことを確かめる様にしています。

※ 22/09/05 追記
ロードに失敗する理由が分かりました。カスタムブロックを使っている場合でした。あらかじめカスタムブロックを開いておいてから、ロードしないと駄目な事に気が付きました。

役に立った!という記事にはぜひサポートお願いします。サポート頂けると大変に励みになります。