見出し画像

(1) M5StickC Plus2でUIFlow調査

手元では無印M5StickC Plus(以下無印)が現役ですので、まだ自分自身が授業で使用することはないと思いますが、市場では無印はもう流通してないと思うので、M5StickC Plus2(以下2)の動作を確認し、留意点を考えてみました。
なお、UIFlow v1.13.4での確認です、バージョンが上がれば改善されるかもしれません。

M5StickC Plus(無印)はディスコンだと思っていたのですが、在庫が復活してますね。スイッチサイエンスも在庫限りから通常販売に切り替えたようです。(2024/9/23)

RTC、NTP関係

無印に比べて結構癖がある印象です。ただ、機能的には2が上っぽいです。
2と無印は、UIFlowで扱われてきた期間が違うので、比べるのもなんですが、無印の方が洗練されているように思います。要するに、扱いやすい。
2の方は、RTCにアラームを設定することができるようで、そこは活用次第だと思います。あと、Weekday(曜日)も設定できるようになっています。

・RTCの「年」の設定は0-99
無印の方は、一応2桁設定ではありましたが、4桁での設定もできました。
2では4桁を設定しようとするとエラーが出ます

・RTCの「曜日」の設定は1-7
ブロックのデフォルト値は0なので、デフォルト値でエラーが出るという始末。最初なぜエラーが起きているかがよくわかりませんでした。

ブロックのデフォルト値
ブロック移動時にツールチップとして出てくる説明

・NTPの「年」は「2024」などの4桁
NTPで取得できる「年」は4桁で、このままRTCに突っ込むとエラーがおきます。
2000を引いてから突っ込むことで2桁に補正しました。

・NTPの「曜日」は「Sun」などの文字列で取得される
これも、そのままではRTCに突っ込めませんので、変換用の関数を用意しました。

かなりの部分でRTCとNTPに齟齬があります。
無印ではNTPのブロックをそのまま使ってRTCの時刻調整なんかができましたが、2では、ブロックそのままではエラーを吐いて使用できません。
解決するためには、いくつか変換を噛ませてあげる必要があります。

また、単体で日付や時刻を扱えるブロックがありません。そのため、「日付」「時刻」を変数としてブロックを作成ました。

無印の方の日時ブロック
変数「日時」、「時刻」を作成

ただ、リストを使って文字列にしましたが、RTCから取得できるのは数値なので、テキストに変換してからリスト化しないと、エラーが出ます。

プログラム全体
UI部分

2では、曜日が扱えるようになったようですが、RTCは数値で、NTPは文字列として扱うようなので、相互変換のための関数を作成しました。

曜日関連の関数群

(1)としましたが、(2)があるかどうかは分かりません。

この記事が気に入ったらサポートをしてみませんか?