なかなか大変だったのでメモ書き.

M5Stack(M5SickC)のプログラムをMakecode風にビジュアルに開発できるUIFlowを試しています.これはM5StickCのHATやGroveのUnit用のライブラリが組み込まれていて大変便利です.

迷路探索ロボットの実験のためにRoverCToF距離センサユニットを組み合わせて次のような簡単なプログラムで試してみました. プログラム

しかしこれでは,”I2C bus error (19)”と出て同時に使えません.距離センサの読み取りとRoverCへの動作命令の間に50ミリ秒程度のウェイトをいれるとうまくいく場合はありますが,エラーが出ることもあり,どうにも不安定です.

調べてみても,なかなか同じような問題に当たっている人がいないようです.ソースコードらしきものを発見してみてみると,70ミリ秒ごとのタイマー割り込みで値の取得をしているようです.どうもこのタイマー割り込みが怪しそうということで,tof0.deinit()でタイマーをとめて,tof0._update()をしてから値を取得するようにすると...ビンゴ!.エラーが出なくなり,またセンサの値の更新も高速になりました. プログラム2

最終的にこの_tof.pyを参考にしながら,タイマー割り込みを使わないCustom Blockを作成しました.