MCP23017 plus LCD display

For that you don't need to modify the library - as I said above

All you need to do in order to substitute pins would have been this

// instead of
// LiquidCrystal lcd(5, 4, 3, 2, 1, 0);
// which would be better written as this anyhow
// LiquidCrystal lcd(D5, D4, D3, D2, D1, D0);
// just write 
LiquidCrystal lcd(A0, D4, D3, D2, D1, D0);

You cannot change d5 (which is a variable name) to a pin label (A0 - which is a macro for the number literal 10).
When A0 gets expanded to its value your parameter definition would read uint8_t 10 which is of course not allowed.

1 Like