LoginSignup
0
0

Adafruit MCP23017 Arduino Library (Adafruit_BusIO)で I2C ピンを変更する

Posted at

Adafruit MCP23017 Arduino Library (Adafruit_BusIO)で I2C ピンを変更する

環境

  • Arduino IDE 1.8.19
  • esp32 by Espressif Systems Version 2.0.14
  • Adafruit MCP23017 Arduino Library Version 2.3.2
  • Adafruit BusIO Version 1.14.5

プログラム

「ファイル」-「スケッチ例」-「カスタムライブラリのスケッチ例」-「Adafruit MCP23017 Arduino Library」-「mcp23xxx_blink」

冒頭部分を MCP23017 に合わせて書き換え

#include <Adafruit_MCP23X17.h>
#define LED_PIN 8
Adafruit_MCP23X17 mcp;

void setup() {
  Serial.begin(115200);
  Serial.println("MCP23xxx Blink Test!");
  if (!mcp.begin_I2C()) {
    Serial.println("Error.");
    while (1);
  }
  mcp.pinMode(LED_PIN, OUTPUT);
  Serial.println("Looping...");
}
void loop() {
  mcp.digitalWrite(LED_PIN, HIGH);
  delay(500);
  mcp.digitalWrite(LED_PIN, LOW);
  delay(500);
}

エラー

実行すると

MCP23xxx Blink Test!
Error.

I2C ピンの変更

これは、デフォルトでは ESP32 は

  • SDA:GPIO21
  • SCL:GPIO22

となっているため。しかしながら今回使用したハードウェアでは以下のようになっていた。

  • SDA:GPIO14
  • SCL:GPIO15

さて、 Adafruit_MCP23017 Arduino Library ではどのように指定したらいいかな・・・と調べてみたがドキュメントが無い? ソースもみてみたが関係しそうな記述がなかった。多分 Adafruit_MCP23017 Arduino Library が使用する Adafruit_BusIO でそこらへんは管理しているのだろう。

解決策

setup() 中に以下を入れる。

  Wire.setPins(14,15);

実行すると、

MCP23xxx Blink Test!
Looping...

となり、ポート8(MCP23017 のGPB0)に接続した LED を Blink できた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0