加速度センサモジュールMMA8451 をESP32につなぐ
MMA8451モジュールは、githubにライブラリがあるので簡単に使えます。GitHub - adafruit/Adafruit_MMA8451_Library: Arduino library for the MMA8451 Accelerometer sensors in the Adafruit shop
D1miniでは問題なく動作しました。
しかし、SoftwareSerialと併用すると問題が発生。 正常にコンパイル完了しますが、書き込んで動作させるとうまく動きません。I2Cとして未接続となります。
ハッキリとしたメッセージが出ないので推測ですが、SoftwareSerialで使っている何かのリソースが競合しているように思います。
そこで、マイコンを一回り大きいESP32で試してみることにします。ところが、これもすんなりとはいきませんでした。
ESP32では、I2Cのピンを自由に選択することができます。
int SDA = 25; int SCL = 26; Wire.begin(SDA, SCL);
というようにbegin の引数にSDA,SCLのピン番号を入れます。
ESP32を考慮されていないMMA8451ライブラリにこの設定を加えてあげる必要があります。
ということで、
bool Adafruit_MMA8451::begin(uint8_t i2caddr) { //Wire.begin(); Wire.begin( 17, 16); _i2caddr = i2caddr;
とすることで、正しくコンパイルできて実行もできるようになります。