I2Cとは?
ザクっとしか知らなかったけど
しっかりと学びたいと思う。
今まで知ってたイメージだと
I2C(アイスクエアシーと読む)は
と4カ所接続して使うもので、
特徴としては
ここから延長ケーブル引っ張って先っぽに
タコ足配線して複数の機器を扱えるという便利なもの
といったイメージ
SDA(データ信号)と、
SCL(クロック信号)
で動作している。
ではなぜ複数タコ足配線しても
機器を見分けて認識できるのだろう?
以下
なるほどわかりやすい。
I2Cの機器の特徴
・I2C機器にはあらかじめI2Cアドレスが設定されている
(8番から119番まで)
(または書き換えることもできる)
・機器側はそのアドレスを入力してやらないと認識しない
(同じアドレスのもを重複して使うことはできない)
アドレスとは?
これがまた
表記方法がわかりにくい。
表記してあるのは16進数(例:0x??)(0xが頭についているのが特徴)
(他にもI2Cアドレスの表記方法には、10進数表記、16進数表記、2進数表記、7ビット表記、8ビット表記などがあるらしい)
例えば今回使用するパーツには16進数で表記してあり、
機器に認識させるには10進数で入力しなければいけない
変換方法
この表記を10進数へ変換せよ
というミッションだった場合。
この自動計算機に打ち込め
https://hogehoge.tk/tool/number.html
これが一番早い。
暗算の考え方としては
16進数は10は16だから16
20だと16が2回分だから32
30だと16x3で48
といった感じ
中途半端な数字だと計算できないから
そのときは計算機を使えばいい。
Ardupilot内でどう使ったかと言うと
Lider距離センサー搭載時
RNGFND1_ADDR
のところで10進数で打ち込み
無事に認識しました。
16進数もっと知りたい方はこちら記事も書きました。
たいへん勉強になりました。