Для каждого количества микросхем при последовательном соединении сделал 4 отдельных блока для 1, 2, 3 и 4 микросхем в каскаде.
21.01.2017 – добавлен блок для 10 микросхем.
Отличия от стандартного встроенного блока:
– подключать можно к любым, в том числе и «цифровым из аналоговых» выходам Arduino (в стандартном блоке, из-за использования аппаратного модуля SPI – два вывода «привязаны жёстко»)
– добавлены два дискретных входа «Reset_Out» и «Set_Out» для «быстрого» одновременного перевода всех выходов в состояние «0» или «1» (удобно, когда, например, в проекте есть сигнал «Reset», который должен отключить все выхода)
– данные на 74НС595 передаются (обновляются) постоянно (в стандартном блоке – только один раз при изменении состояния). Из-за этого, при использовании стандартного блока при первом включении питания или в результате помех, на выходах 74НС595 могут долгое время находиться случайные данные (до тех пор, пока не поступит команда на изменение, какого либо выхода).
Добавлю ещё такую информацию – полностью избавиться при первом включении питания от «мусора» на выходах 74НС595 я не смог. В моём применении это было важно (часть выходов коммутирует контроллер газовой горелки и подключены исполнительные механизмы, которым нежелательно «дёргание» при включении, т.к. в этот момент рядом могут находиться люди и могут что-нибудь «прищемить» себе) – пришлось отдельной «герконовой» релюшкой, от отдельного выхода Arduino коммутировать питание выходных реле, подключенных к 74НС595 (через буферную ULN2803). Для таких критически важных применений, вместо 74НС595 лучше применить микросхему UCN5821, в которой есть отдельный вход «ОЕ» и не надо «усилять» выхода дополнительной ULN2803.
В прилагаемом архиве: блоки, пример в FLProg, проект под этот пример в Proteus.