2023年12月14日木曜日

ToFセンサーの読み取りができなかった原因を検証してみた

 
先週まで書いていたToFセンサーのコードは、
センサーの読み取りができずに、途中までで作業が止まってしまいました。

・・・が、その後サンプルコードを公開していただいたので、
自分のコードと見比べて、動かなかった原因を検証してみました。

ToFセンサーでデータを取れていなかった原因

その1 データの文字列を参照する位置がずれている

iotgetで取得した文字列を参照するとき、
Distanceのデータではない場所を読みに行っていた。
(signal countのところのデータを参照していた)

その2 メインループの戻り先不良。

センサーのデータを1件表示した後、0x14をiotputしてiotgetするところへ戻ってループしていたが、それだとセンサーのデータ取得がうまくいかない。
0x00と0x01をiotputする所まで戻ってループしないと正常に動作しない。


以上の2点を修正したところ、自分のプログラムでも距離データを取得することができました。
 
サンプルコードでは、デバッグ用の16進数データを整形して、固定された場所にきれいに表示してある点とかはいいなと思いました。
 
自分のデバッグ用表示は桁がそろっていなかったりして、 わかりずらくてこういう点でバグが入り込んでも気がつけなかったのでしょう。
 
自分の書いたコードと、他の人のコードを比較していくのは、楽しいしとても勉強になりますね。
 
サンプルコード参考:
M5Stack用ToF測距センサユニット (Ninune-waさん)
https://github.com/msx-sample-code-space/for_msx0/tree/main/sensor/M5Unit-ToF