MCP23017という石があります。
IO拡張系の石なのですが、マイコン側からはI2Cで通信できるので線の分お得。
配線も減るし、上手に分離すればモジュール化も容易なんじゃないかと思い、手元のM5stackで実験してみました。
実際のところ
#include <M5Stack.h> #include "Wire.h" void setup() { M5.begin(); //Init M5Core. M5.Power.begin(); //Init Power module. Wire.begin(); // wake up I2C bus // set I/O pins to outputs Wire.beginTransmission(0x20); Wire.write(0x00); // IODIRA register Wire.write(0x00); // set all of port A to outputs Wire.write(0x00); // set all of port B to outputs Wire.endTransmission(); } void ledBup(int val) { Wire.beginTransmission(0x20); Wire.write(0x13); // address bank B Wire.write(val); // except B0, all Bs HIGH Wire.endTransmission(); delay(500); } void loop() { M5.update(); ledBup(0xf0); ledBup(0xf1); ledBup(0xf2); ledBup(0xf4); ledBup(0xf8); ledBup(0xff); }