Здравствуйте уважаемые Амперчане. Прошу вас помочь разобраться с возникшей у меня проблемой. Значит так : Идея : Как всегда из-за людской жадности, я экономлю моих родных, милых и маленьких выводов микросхемы... Atmega328 (Arduino Diecimila 328). По этому я решил, что для отображения четырехзначной информации на 7-сегментниках необходимо использовать сдвигающие регистры 74hc595 (тоже 4) и интерфейс SPI. Материалы: Сдвигающий регистр 74hc595 Схема соединения(только вместо лпт spi) Соответственно Q0…Q7 – выходы идущие на 7-сегментник ПРОБЛЕМА: Заключается в зажигании последующих 7-сегментников... Пишем программу как в видеоуроке и получаем: .... digitalWrite(SS. LOW); //здесь сигнал SS я использую не как чип селектор, а как управлющий //для защелкивания данных в регистрах.(ST_CP) SPI.Transfer(число); //1000 SPI.Transfer(число); //100 SPI.Transfer(число); //10 SPI.Transfer(число); //1 digitalWrite(SS. HIGH); //ST_CP в 1 digitalWrite(SS. LOW); // ST_CP в 0 ... И вот тут значит все и случилось, по идее когда мы гоним 32 бита данных в сдвигающие регистры (по 8 бит в каждый) они должны распространяться во 2,3,4 ый сдвигающий регист через Q7′ и потом по общему сигналу ST_CP защелкнуться, и отобразиться приятной, гармоничной, завораживающей картинкой, которая поможет обрести мне внутренний покой ... однако в результате отображается корректно только первый 7-сегментник остальные молчат. И вот не знаю почему ((( схему взята из рабочего проекта и гарантированно работает, в принципе думаю, что здесь что то не так с самой библиотекой такое ощущение, что SPI.Transfer сама защелкивает DS после посылки 8 бит , и что даже двойная посылка просто подряд дважды защелкивается в первом сдвигающем регистре , но как это исправить в самой библиотеке не разобрался, скорее всего количество передаваемых бит как то выставляется SPI_MODE но где его перенастроить не нашел ((Помоги люди добрые!!
попробуй тут посмотреть. http://robocraft.ru/blog/arduino/519.html там как раз рассмотрен вариант с каскадом.