I/O Expanderを使ってみる その1(MCP23S08-E/P)

はじめに

 今回はI/O ExpanderMCP23S08を使ってみました。

 I/O Expanderを使うと、マイコンのピンを増やすことができます。SPI通信やI2C通信でI/O Expanderのピンを制御するのですが、その中でもMCP23S08はSPI通信で制御するものです。GPIOピンを8本増やすことができます。

 他にもMCP23017というI/O Expanderがあるのですが、こちらはI2C通信でGPIOピンを16本増やすことができます。MCP23017のほうがネット上の情報が多くて、ピンの数も多いので、そちらのほうが便利かもしれません。

 なおI/O Expanderをカタカナで書くと、「IOエキスパンダ」とか「IOエクスパンダ」になってパンダっぽくなるので、このサイトでは英語で書いています。

▼今回購入したものはこちら

 https://akizukidenshi.com/catalog/g/gI-10643/

▼MCP23017も使ってみました。

I/O Expanderを使ってみる その2(MCP23017)

はじめに  以前MCP23S08というI/O Expanderを使いましたが、今回はMCP23017です。  MCP23017はI2C通信で16ピンまで増やせます。しかもアドレスを指定するピンが3つある…

回路を組む

 MCP23S08のGPIOピンで、8つのLEDを制御します。ArduinoからはSPI通信用に4つのピンを使います。これだけだとあまりピンが増えていないように感じますが、MCP23S08はアドレスを指定することで最大4つまで扱えるのでもっと増やせます

▼LEDはこれに似たバーグラフというものです。

 https://eleshop.jp/shop/g/gB5G366/

▼回路図はこちら

▼実際の配線

プログラムを書く

 Arduino IDEでプログラムを書くのですが、MCP23S08のライブラリを検索したらありました。まずはライブラリをインストールしてください。

▼Arduino IDEの「ツール→ライブラリを管理」でライブラリマネージャを開きます。

▼MCP23S08のライブラリはいくつかありますが、今回はAdafruitのものを使いました。

 このライブラリを使うと、MCP23S08のピンを、Arduinoのピンを制御するときと同じように扱うことができます。pinMode()やdigitalWrite()などで制御できます。

 注意点があるのですが、setup()関数のところにあるpinModeでピンの宣言をしないと制御できません。ArduinoのピンだとpinModeを省略しても制御出来たりするのですが、MCP23S08のピンは省略すると制御できませんでした。

▼参考にしたサンプルプログラム

▼サンプルプログラムを組み合わせたプログラム

▼実際の動作

最後に

 今回のプログラムはアドレスの指定をしていませんが、それができればピンをもっと増やせます。ライブラリを詳しく見てみようと思います。MCP23S08は日本語のデータシートがあったからという理由で買ったのですが、用語が多くてよく分からないんですよね。

 I/O Expanderについて調べていたら、本当にMCP23017のほうが情報が多くて使いやすそうでした。MCP23S08は全然使わないかもしれません…


趣味的ロボット研究所をもっと見る

購読すると最新の投稿がメールで送信されます。

I/O Expanderを使ってみる その1(MCP23S08-E/P)” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です