Уважаемый автор! просим исправить ошибку в модуле mcp23017. ошибка заключается в том, что при конфигурировании ног расширителя ваш модуль нумерует их с 1 по 16 а правильно когда с 0 по 15 вот как правильно работает(исправлено вручную):
_MCP2307_0.init(0);
_MCP2307_0.pinMode(0, OUTPUT);
_MCP2307_0.pinMode(1, OUTPUT);
_MCP2307_0.pinMode(2, OUTPUT);
_MCP2307_0.pinMode(3, OUTPUT);
_MCP2307_0.pinMode(4, OUTPUT);
_MCP2307_0.pinMode(5, OUTPUT);
_MCP2307_0.pinMode(6, OUTPUT);
_MCP2307_0.pinMode(7, OUTPUT);
_MCP2307_0.pinMode(8, INPUT);
_MCP2307_0.pinMode(9, INPUT);
_MCP2307_0.pinMode(10, INPUT);
_MCP2307_0.pinMode(11, INPUT);
_MCP2307_0.pinMode(12, INPUT);
_MCP2307_0.pinMode(13, INPUT);
_MCP2307_0.pinMode(14, INPUT);
_MCP2307_0.pinMode(15, INPUT);
а вот что получается при автоматическом конфигурировании:
_MCP2307_0.init(0);
_MCP2307_0.pinMode(1, OUTPUT);
_MCP2307_0.pinMode(2, OUTPUT);
_MCP2307_0.pinMode(3, OUTPUT);
_MCP2307_0.pinMode(4, OUTPUT);
_MCP2307_0.pinMode(5, OUTPUT);
_MCP2307_0.pinMode(6, OUTPUT);
_MCP2307_0.pinMode(7, OUTPUT);
_MCP2307_0.pinMode(8, OUTPUT);
_MCP2307_0.pinMode(9, INPUT);
_MCP2307_0.pinMode(10, INPUT);
_MCP2307_0.pinMode(11, INPUT);
_MCP2307_0.pinMode(12, INPUT);
_MCP2307_0.pinMode(13, INPUT);
_MCP2307_0.pinMode(14, INPUT);
_MCP2307_0.pinMode(15, INPUT);
_MCP2307_0.pinMode(16, INPUT);
в этом случае один вход и один выход работают неправильно.
Жутко неудобно править это вручную, очень просим