После того как я прописал всю возможную периферию, оказалась что свободных выходов, на модуле Ардуино Nano, почти нет :( , с трудом выделил 4 порта для выхода.
И тут на помощь пришел наш старый друг aliexpress, в лице двух модулей PCF8574 и PCF8575.
Модуль PCF8574 - расширитель на 8 портов и i2c (TWI) интерфейсом.
Модуль PCF8575 - расширитель на 16 портов и i2c (TWI) интерфейсом.
Чтоб не рушить общую идеологию я использовал плату PCF8574 как 8 входов, а плату PCF8575 как 12 выходов, 4 выхода использую аппаратные порты контроллера.
Схема включения достаточна проста, питаем платы расширителей портов от питания процессора и подключаем i2c (TWI) интерфейс.
Не забываем про подтяжки интерфейса i2c (TWI), обе шины кидаем на + питания через резисторы от 2 кОм до 4.7 кОм.
Использовать в модуле Ардуино Nano модули PCF8574 и PCF8575 я решил опционально, поэтому использования этих плат активируется подачей минуса (GND) на порт PD7. Это пришлось сделать потому, что библиотека PCF8575 модуля PCF8575 написана криво и при ее отсутствии программа зависает. Переписывать библиотеку мне пока некогда, так что пока пользуемся перемычкой.
Адреса устройств: для платы PCF8575 ничего делать не надо, а вот для платы PCF8574 соединяем все перемычки на минус (см. картинку).