見出し画像

M5StickC Plus とUIFlowでプログラミング(16) - UIFlowアップデートに伴うじゃんけんプログラム改修

(15)でも触れましたが、UIFlowのバージョンアップに伴って、EspNowの通信部分が変更になりました。それによって、以前のプログラムを読み込んでもエラーが出て実行できなくなりました。

 対応版を作成しましたので、アップロードします。
※(2023/07/19)追記
v1.12.0に更新され、ESPNow関連のFIXが入ったので、動かなくなっています。さらに差し替えたものを上げます。

・自分のグーチョキパー、相手のグーチョキパー、計6つの画像ファイルをDeviceFileManagerでM5StickC Plusに送る必要があります
(画像は(7)(8)にあります)
・EEPROMに相手のmacアドレスを書き込んでおく必要があります
(プログラム上では、Key「A、B、C、D」の4つのそれぞれに対して
別のM5StickC Plusのmacアドレスを登録してあります。)

※v1.12.0対応版


主な変更部分は(15)で触れた通り、

・ブロードキャストが使用不可能になったため、macアドレスを指定しての通信に変更
・そのため、macアドレスを本体EEPROMにあらかじめ保存し、読み込んで使用

となっています。したがって、プログラムの中で、A~DをキーとしてEEPROMからmacアドレスを拾ってくる部分があり、その部分は、予めmacアドレスを本体EEPROMに保存しておかなければ機能しません。適宜、ご自分の環境や設定に応じて変更してご使用ください。

動作がかなり変更になっており、大きいのはUIFlowにおいて、「Run」でプログラム転送後、再び「Run」でプログラムを転送しようとしたときに、反応しなくなっていることです。おそらく、Wi-FiがEspNowに持っていかれているのだと思われます。

また、新たにSetUp部でEspNowのinitブロックを読まないとエラーになるようになっています。チャンネルを指定してEspNowを初期化するブロックです。

initブロック

これをやらないとEspNowの全てのブロックが使用不可能です。
例えば、macアドレスの取得ブロックなども、以前は特に初期化を明示しなくても使用できたのですが、エラーになります。

macアドレス取得ブロック

その上で、macアドレスを指定して、idをつけて相手を決定する必要があります。

peerにmacアドレスを指定

initブロックの必須化は、ブロードキャストブロックの削除直後はなかったと思うのですが、Webサービスなので、向こう側の変更に合わせるしかありません。

これらの変更によって、授業展開にも影響が出てきます。それまでは、通信部分について、とりあえずブロードキャストさせておけばよかったのですが、macアドレスのこと、initブロック、EEPROMへのmacアドレスの保存と読み出しについて、触れる必要が出てきているのと、何より、通信部分が入っているとプログラムの書き換えにリセットが必須となり、「Run」ボタンの使い勝手が落ちるという…。

EEPROMはあらかじめこちらで書き込んでおけばまぁいいとして、macアドレスについては触れないといけないでしょう。initはおまじない扱いかな…。「Run」ボタンは痛いなぁ。まぁ、リセットすればよいのだけど。何より、Callbackも含めて、扱うブロックが増えてしまったのが、敷居が高くなってしまった感じがします。

また、考えます。

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