![見出し画像](https://assets.st-note.com/production/uploads/images/58674076/rectangle_large_type_2_7a1797e7059e2f00ae817fd047aa56bc.png?width=1200)
M5StickC Plus とUIFlowでプログラミング(5) - 反復(繰り返し)
2023/09/25
ここの流れは、RTCで行うとスムーズだと後から気付きました。
RTCはRealTimeClockなのですが、M5StickC Plusには初めから搭載されています。
時刻を取得することで、本来、刻一刻と進んで欲しい、時刻が止まっていることで、生徒に「ずっと」ブロックの必要感が自然と生まれてくるように思います。(現在自分が行っている授業では、RTCの使用にしています)
2024/3/24追記
(5')として、記事を起こしました。この記事の代わりに使用できます。
電池残量をラベルに表示してみる
今度は、M5StickC Plusの内蔵電池の残量をラベルに表示してみましょう。中央エリアの「ハードウェア」にM5StickC Plusが備えているセンサなどのハードウェアにアクセスできるブロックがまとまっています。今回は「Power」の中の「Get battery percentage」 をプログラミングエリアに追加してください。(4) の記事で作った「Hello,World!.m5f」で使用した
「ラベル( label0 )に ("Hello M5") を表示」ブロックの中の「("Hello M5")」の代わりにこのブロックをはめます。
![画像5](https://assets.st-note.com/production/uploads/images/59754394/picture_pc_3356938da3fa9a5ba859ff91900ee8ec.gif?width=1200)
できたら転送して確かめて見ましょう。表示されましたか?
ただし、これには重大な欠陥があります。それは、「Setup」ブロックから始まって、「ラベル( label0 )に (Get battery percentage) を表示」ブロックを実行してラベルに表示したら、プログラムが終了してしまうということです。バッテリーの残量は使えば減りますし、充電すれば増えるはずですが、プログラムは1回通りしか走らないので、プログラムを転送したときに1回バッテリー残量を表示して、ずっとそのときの数字を表示したままになってしまっているのです。これをなんとかする(更新させる)には、「イベント」の中にある「ずっと」ブロックを使用します。
![1_イベント_1_ずっと](https://assets.st-note.com/production/uploads/images/58565919/picture_pc_b568f8347a53991fc77f7f40fb4e4cf0.png)
「ずっと」ブロックは「ずっと」ブロックの中にある処理を順に実行していって終わりまでくると「ずっと」ブロックの先頭の処理に戻って、文字通り「ずっと」実行してくれます。
修正後のプログラムはこのようになります。
![画像3](https://assets.st-note.com/production/uploads/images/58565966/picture_pc_de74d29af2f91653fd6becd6a0195953.png)
これは、プログラムの基本の一つ「反復(繰り返し)」です。「( 1 ) [秒] 停止」ブロック を挟んでいるのは、(4)でも述べた通り、そのままだと、「反復」が非常に速いペースで繰り返されてしまうので、1秒毎に表示するようにしているからです。バッテリー残量はそれほど頻繁に変わらないので、更新間隔を下げてあげてもよいでしょう。必要に応じて、2秒とか、10秒などにでも変更するとよいです。
更新間隔を10秒に変更して、「ハードウェア」から「スピーカー」を使用した例です。「ずっと」ブロックの中に「スピーカーを鳴らす」ブロックがあるので更新するたびに音が鳴ります
![画像4](https://assets.st-note.com/production/uploads/images/58566248/picture_pc_756aaa177d03ab5f8c20d9375e512d03.png)