Прочитал, что можно использовать любые цифровые для программной реализации SPI. -- доступны функции shiftIn(miso_pin, sclk_pin, bit_order) и shiftOut(mosi_pin, sclk_pin, order, value), они предоставляют программную полудуплексную передачу данных по SPI — этакие половинки метода transfer():shiftIn() только принимает, а shiftOut() только передаёт данные. Как видно по их аргументам, они позволяют использовать любые цифровые пины Arduino в качестве линий SPI, но вы сами должны настроить их как входы/выходы, функции shiftIn() и shiftOut() этого не делают. --- есть ли у кого-нибудь пример или опыт реализации этой функции?
SPI насколько простой протокол, что реализуется за полчаса самостоятельно. Другое дело, что в этом нет совершенно никакого смысла, поэтому вряд ли вы что-то найдете готовое.