ESP32でI2Cのピンを変えてつまづいた話(M5 ATOM同士でI2C通信)

ESP32

※この記事は「Arduino IDE 2.3.6」「esp32 ライブラリ 3.1.3」時点での記事です。将来的に仕様が変わる可能性があります。

ESP32同士でI2C通信をしようとして、特にSlave側での設定でつまづいたので、そのメモ

結論

先に結論。I2CでデフォルトのPINを使うときはWire.setPins(SDAピン番号,SCLピン番号)を使う(特にSlave側)。

MasterSlave
デフォルトのピン番号(SDA=21, SCL=22)を使用Wire.begin();Wire.begin(Slaveアドレス);
それ以外のピンをI2Cに使用Wire.begin(SDAピン番号, SCLピン番号);
→これは使える

Wire.setPins(SDAピン番号, SCLピン番号);
Wire.begin();
→これも使える
Wire.begin(SDAピン番号, SCLピン番号, Slaveアドレス);
→これは使えない

Wire.setPins(SDAピン番号, SCLピン番号);
Wire.begin(Slaveアドレス);
→こっちは使える

やったこと

M5 ATOM同士をGroveケーブルでつないでI2C通信。

プログラム

ESPRESSISの例から抜粋

・Master側

・Slave側

コメント

タイトルとURLをコピーしました