ラズパイpicoにはGP0からGP28まで合計29個のI/Oポートがありますが、更にI/Oポートが欲しい時、IC2バスで接続できるMCP23017というDIPパッケージ28ピン(幅300mil)のICを使うことができます。これ1つで16ポート増設できます。一つのI2Cバスに最大8個接続できるので、ラスパイpicoにある2つのI2Cバスを使えば、8x2x16=256ポートまで増設可能です。
取りあえず、MCP23017を1つだけ繋いで、実験してみました。
#include <Wire.h>
#include <MCP23017.h>
#define MCP23017_ADDR 0x20
MCP23017 mcp = MCP23017(MCP23017_ADDR);
void setup()
{
Wire.setSDA(20); //GP20
Wire.setSCL(21); //Gp21
Wire.begin();
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
Serial.begin(115200);
while (!Serial); // wait for serial monitor
Serial.println("\n Test program for the MCP23017\n");
mcp.init();
mcp.portMode(MCP23017Port::A, 0); //Port A as output
mcp.portMode(MCP23017Port::B, 0); //Port B as output
mcp.writeRegister(MCP23017Register::GPIO_A, 0x00); //Reset port A
mcp.writeRegister(MCP23017Register::GPIO_B, 0x00); //Reset port B
}
void loop() {
mcp.writePort(MCP23017Port::A, 0xff);
mcp.writePort(MCP23017Port::B, 0x00);
delay(500);
Serial.print(".");
digitalWrite(LED_BUILTIN, LOW);
mcp.writePort(MCP23017Port::A, 0x00);
mcp.writePort(MCP23017Port::B, 0xff);
delay(500);
digitalWrite(LED_BUILTIN, HIGH);
}
WordPressにHighlighting Code Blockのプログインをインストールして、ソースコードを記述してみました。gooブログでは、色付けによるハイライトはおろかインデントさえ十分にできなかったので、凄く見易く良くなりました。WordPressに引っ越しして正解です。


コメント