概要
ATOM Echo で ENV II のサンプルコード を動かすには Wire.begin(26,32);
で Grove 端子のピン番号を指定する必要がある.
目的
ATOM Echo に Grove で ENV II を繋いで温度等を取得する.
ハードウェア
Arduino IDE
設定
項目 | 値 |
---|---|
ボード | M5Stick-C |
Upload Speed | 1500000 |
ENV II のサンプルコード を動かす.
そのままでは ENV II が認識できない旨のエラーになる. そこで次のような変更を行う.
変更点 include
必須かは不明だが一応変更する.
+ #include <M5Atom.h>
- #include <M5Stack.h>
変更点 Wire.begin()
恐らく最重要変更点.
ネット上の arduino の資料には, Wire.begin()
の引数に I2C のスレーブとして動作する為のアドレスを指定する云々とあるが, 以下のように Atom Echo の Grove に使われているピン番号を引数として指定するとその IO で I2C の通信を行うようである.
- Wire.begin();
+ Wire.begin(26,32);
ちなみに Grove ではなく 25,21 番のピンで I2C 通信する場合は, M5Atom ライブラリの src/M5Atom.cpp ファイルには以下のような記述があるので M5.begin(true, true, false);
等と記述する方法もある. (未検証)
...
M5Atom::begin(bool SerialEnable , bool I2CEnable , bool DisplayEnable ) {
...
if( I2CEnable )
{
Wire.begin(25,21,10000);
}
...
}
...
変更点 M5.Lcd
Atom Echo には LCD はついてないのでコメントアウトか削除する.
- M5.Lcd.setBrightness(10);
- M5.Lcd.setTextSize(3);
- M5.Lcd.println("Could not find a valid BMP280 sensor, check wiring!");
- M5.Lcd.clear(BLACK);
- M5.Lcd.println("ENV Unit test...");
- M5.Lcd.setCursor(0, 0);
- M5.Lcd.setTextColor(WHITE, BLACK);
- M5.Lcd.printf("Temp: %2.1f \r\nHumi: %2.0f%% \r\nPressure:%2.0fPa\r\n", tmp, hum, pressure);
まとめ
Atom Echo の Grove で I2C 通信する場合は, Wire.begin(26,32);
のようにピン番号を手動で指定する必要がある.
M5Stack Basic や M5StickC では手動指定する必要はなかったりするのだろうか?
参考
- M5Stick-C で
Wire.begin(32, 33);
の記述 -> https://lang-ship.com/blog/work/m5stickc-i2c/ - IDE の設定参考 -> https://programresource.net/2020/04/14/3265.html