とっくんラボ

電子工作、プログラミングで日々の発見や成果をよろづに

ESP32 (ESP-WROOM-32)でi2C通信


2017/03/12追記:実際に使ってみました


先日、Arduinoの環境で開発できるということで、ESP32を購入しました。

 

私はATmega328(Arduino UNO)ではi2Cを頻繁に使用していたので、早速購入したESP32でもi2Cを使ってみました。

しかし、躓いた点があったので報告します。

 

Arduinoでi2C通信する際に欠かせないWireライブラリですが、最初に

Wire.begin();

を実行しますよね。

ATmegaではi2Cで使うSCL, SDAピンは固定されていますが、ESP32では対応している複数のピンの中から2つを選んで使うことができます。そのため、まず最初に使用するピンを指定しなければなりませんでした。

ESP32でWireライブラリを使う場合、SCL, SDAピンの指定は

int SDA = 25;
int SCL = 26;

Wire.begin(SDA, SCL);


のように、beginの引数にSDA、SCLの順にピンの番号を入れることで出来ます。

i2Cで使えるセンサーを使う時、データシートをみながらプログラムをコツコツ書かずに、誰かが作ったライブラリを用いることがあると思います。その場合にも、ライブラリ内のbegin()の部分を書き換える必要がありそうです。

以上!