ESP8266用のMCP23x17ライブラリ

数年前に作成したライブラリ。今も一生懸命働いているのに存在すら忘れられていて可哀そうなので今更ながらの公開となった。(笑)
なお、ESP32で動作するかは未検証であるがそれ以外のCPU向けにも移殖は比較的簡単にできるはず。と思う。

MCP23017(I2C)とMCP23S17(SPI)に対応するために基本部分を抽象クラス、インターフェースの違いを継承クラスとして実装している。基本仕様は、pinModeやdigitalRead,digitalWriteなどのArduino互換仕様であるが、pin引数に0xFFを指定すると全ポートが処理対象となる仕様となってるようだ...って、おいおい!(笑)

使い方として注意すべき点は、入出力の効率化と全ポート同時入出力可能とするため、digitalWriteのデータはflushにて出力、digitalReadのデータはrefreshにて読み込みされる点である。flush/refreshを忘れると入出力が行われない。

ちなみに初期設定は次の通り。
I2C 400KHz (SDA=2, SCL=14)※任意のポートに変更可能
SPI 10MHz (MISO=12, MOSI=13, CLK=14, CS=15)※固定

【抽象クラスの概要】

【サンプル・コードの例】