UNIT ULTRASONIC-I2Cを使う

M5Stackの超音波測距ユニットを買ってみました。

IOで制御するボードは持っていましたが、I2Cで接続できるのは便利そうです。

docs.m5stack.com

ドキュメントを読んだ感じではライブラリも用意されているので深く考えずに使えそう・・と思ってましたが、ちっとも動かない。
故障か?と思えるほどにずっと同じ値が返ってきてます。

UIFlowでやってみたらそれっぽい値を読み取れてます。よかった故障じゃないみたい。

ライブラリのソースを見ても、I2Cでレジスタアドレス(0x01)を書き込んで3バイト読み込んでるだけのシンプルな実装です。
採用されているRCWL-9620のデータシートを検索してみましたがヒットしません。  

超音波測距センサは仕組み上ある程度の測定時間が必要なはずなので、ライブラリで入っているウエイト(10ms)を長くしてみます。というかこれぐらいしか試すことがないです。

ダメ元でやってみたところ50msでデバイスから応答が返ってくるようになりました。   仕様が不明なのでこれでいいのかわかりませんが、とりあえずウエイトを増やすことでなんとか動くようになるようです。
ソースコードはこんな感じになってます。

情報入手

M5Stackからリプライもらいました。 雰囲気で読み取ると50msのウエイトで良さそうですね。