Arduino × MCP23017_連携方法

MCP23017
http://ww1.microchip.com/downloads/jp/DeviceDoc/20001952C_JP.pdf

初期設定 参考サイト
https://www.petitmonte.com/robot/howto_io_expander.html

ARUDINO MCP23017 ハードウェア接続方法

・デバイスアドレスを指定 (A0, A1, A2 のPINで指定)
※デバイスアドレスはArduinoからMCP23017へ指令する際に指定するアドレス 
A0, A1, A2 のPINに対して 「High ⇒ 1  Low ⇒ 0」 で指定
計算方法は、 2 (2乗) * A2 + 2 (1乗) * A1 + 2 (0乗) * A016進数で 0x20 ~ 0x27 の8通りのデバイスアドレスを指定することが可能(8つの、MCP23017 を接続することが可能)

・VDD, VSSで電源を供給
グラウンド、電位
https://blogs.yahoo.co.jp/denshiyorimichi/33243395.html

・SCL、SDAを接続
https://novicengineering.com/i2c%E9%80%9A%E4%BF%A1%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
SCL:SDA:

Arduino R2 の場合
Uno: SDA=A4 SCL=A5
※Arduinoの世代によって接続するPINが異なるので注意
https://trac.switch-science.com/wiki/Arduino-diffhttp://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=342

ARUDINO MCP23017 ハードウェア接続方法 ※スケッチ作成

・ライブラリ Wire.h をinclude
#include <Wire.h>

・デバイスアドレスを指定
A0, A1, A2 で指定したデバイスアドレス0x20 ~ 0x27 の8通りのデバイスアドレスを指定することが可能uint8_t DEVICE_ADDRESS = 0x20; 

・初期設定
setup()内で、決まったお作法をしてデバイスアドレスを指定した MCP23017 と接続

void setup() {// マスタとしてI2Cバスに接続する  
Wire.begin();  // 初期設定(IODIRA/IODIRB)  Wire.beginTransmission(DEVICE_ADDRESS);  // 先頭アドレスへ  
Wire.write(0x00);  // I/O設定Aの全てを出力設定にする 
Wire.write(0x00);  // I/O設定Bの全てを出力設定にする  
Wire.write(0x00);  Wire.endTransmission();// GPIOA(GPA0~GPA7)  
Wire.beginTransmission(DEVICE_ADDRESS);  

Wire.write(0x12);  // 全てのGPAピンをHIGH(出力)にする  
Wire.write(0xff);  Wire.endTransmission(); // GPIOB(GPB0~GPB7)  
Wire.beginTransmission(DEVICE_ADDRESS);  
Wire.write(0x13);  //  GPB0をLOW(入力)でそれ以外のGPBピンはHIGH(出力)にする  
Wire.write(0xfe); // 2進 11111110  
Wire.endTransmission();}

・GPIOA GPIOB の各ピンへの指令方法

// デバイスアドレスを指定     
 Wire.beginTransmission(DEVICE_ADDRESS);
 // GPIOA or GPIOB を指定(右側の0 ~ 7 / 左側の0 ~ 7 どちらを操作)      
Wire.write(0x13);
// 0 ~ 7 のどのPINをHIGH・LOWに指定するかを「0 , 1」で指定      
Wire.write(0b11111111); // 2進 11111111
// データ転送      
Wire.endTransmission();

コメントを残す

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