3

HiTechnic LEGO Mindstorms コンパス センサーのコンパス データを読み取る Arduino 用のクラスを作成しました。

Wire-library を使用すると、それぞれのレジスタからデータをうまく取得できます。0x01Arduino のライブラリで、誰かがArduino フォーラムで既に行っているセンサーに対処します。しかし、ウェブ上のどこでも ( LEGO Mindstorms の RobotC フォーラム、またはこのドキュメントの一番下にあるコード例)、そのセンサーの I2C アドレスは0x02.

では、他のプログラミング言語の0x01ように見えるのに、センサーと通信するためにアドレスを使用する必要があるのはなぜですか?0x02

4

1 に答える 1

4

I2C アドレスには、7 ビットまたは 8 ビットのさまざまな形式があります。Arduino は 7 ビット形式を使用するため、8 ビット アドレスを 7 ビットに変換するには、アドレスを 1 つ右にシフトするだけです。これが、0x02 8 ビット アドレスが 0x01 7 ビット アドレスに変換される方法です。

ソース: http://arduino.cc/en/reference/wire

「注: I2C アドレスには 7 ビットと 8 ビットの両方のバージョンがあります。7 ビットはデバイスを識別し、8 番目のビットはデバイスに書き込みまたは読み取りを行うかどうかを決定します。Wire ライブラリは全体で 7 ビット アドレスを使用します。 8 ビット アドレスを使用するデータシートまたはサンプル コードでは、下位ビットをドロップ (つまり、値を 1 ビット右にシフト) して、0 から 127 の間のアドレスを生成する必要があります。」

于 2013-07-29T13:10:34.517 に答える