2013-07-29 109 views
1

我已經寫了一個Arduino的類,讀取HiTechnic LEGO Mindstorms compass sensor的指南針數據。Arduino上的不同I2C地址?

使用線庫,我可以非常好地從相應的寄存器中獲取數據。在我的Arduino庫中,我通過0x01對傳感器進行了尋址,其中有人已經完成了on the Arduino forums。但在網絡上的其他地方(RobotC-forums for LEGO Mindstormsin the code example at the very bottom of this document),它說,該傳感器的I2C地址是0x02

那麼爲什麼我必須使用地址0x01才能與我的傳感器通信,而其他編程語言似乎是0x02

回答

2

有不同格式的I2C地址 - 7或8位。 Arduino使用7位格式,因此要將8位地址轉換爲7位,只需將其右移一位即可。這就是如何將0x02 8位地址轉換爲0x01 7位地址。

來源:http://arduino.cc/en/reference/wire

「注: 有I2C地址的兩個7-和8-位版本7位識別裝置,和第八位確定,如果它被寫入或讀出。 Wire庫總是使用7位地址如果你有一個使用8位地址的數據表或示例代碼,你會想要丟掉低位(即將值向右移一位),產生一個0和127.「

+0

這似乎是它。謝謝。 –