1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M5Stack用超音波測距ユニット I2C(RCWL-9620)をATOM&公式ライブラリで使う際のサンプルコード修正点

Last updated at Posted at 2022-09-02

はじめに

M5社のATOM LiteM5Stack用超音波測距ユニット I2C(RCWL-9620)をつなぎ、製品サイトからリンクされている公式のライブラリを使い、その中にあるATOM用サンプルコードを使って動かそうとしたものの、どうしても正常に動かず。原因が分からず難儀しましたが、結局サンプルコードを一部修正することで、動くようになりました。※その後情報追記あり。

環境

  • macOS Monterey バージョン12.5.1
  • Arduino IDE 1.8.19(通常は下記 Visual Studio Code を使用していますが、問題の切り分けのために使用しました。今回はこの環境で検証してます。)
  • Visual Studio Code + PlatformIO(普段の開発環境&現象を発見した環境)

トラブルの内容

  • そのまま動かしても、シリアルに何も流れてこない。
  • サンプルコードでは20〜4000未満の数値しかシリアルに流れないようになってるのため、サンプルコードのif文を削除し、取得したデータ全てをシリアルに流すようにしたところ、どんな距離であっても「4500.00」のみを流してくる。

修正点

ATOM用のサンプルコード内の22行目にある

M5.begin(true, true, fasle);

のうち、

  • 2つ目の引数「true」を「false」に
  • 3つ目の引数「fasle」を「false」に(単純なスペルミス)

と修正、つまり・・

M5.begin(true, false, false); 

と書き換えると、動作しました。

原因

今回いただいたアドバイスによると、

  • M5.beginの2番目の引数はWireだが、trueだとSDA=25, SCL=21で初期化されてしまう(今回のセンサーをATOM LiteのGROVE互換端子経由で使う場合は、SDA=26, SCL=32)。
  • sensor.begin()でもWireを使っている。

ためではないか、とのことでした。

ちなみに他の機種用のサンプルコードも確認しましたが、M5.begin()内で引数を指定しているのはATOM Lite用のみで、他は引数なしでした。

その他

この問題を検証中に、Arduino IDEでコンパイルできない問題が出ましたが、検証前にたまたましていたOSをアップデートが理由でした。その解決にはこちらのサイトを参考にさせていただきました。

謝辞

今回の問題解決に際して、Facebookの「M5Stack User Group Japan」で多数のヒントやアドバイスをいただきました。ありがとうございました。

※追記(2024.8.10)

「読み出しのウエイトを50ms入れる」という対処法が書かれた記事がありました。手元では未検証です。
情報元:UNIT ULTRASONIC-I2Cを使うイナバちゃんログ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?