Здравствуйте! Примерно месяц назад стал счастливым обладателем матрёшки-Y. собрал индикатор с двумя разрядами как описано в вики. однако не удалось соединить драйверы через mod 10. драйвер которому на вход подан данный выход всегда отображает ноль. пришлось использовать два цифровых выхода с ардуины. резет у драйверов, конечно, общий. но необходимость подключать каждый драйвер отдельно меня бы почти не печалила, если бы не куда более серьёзная проблема. драйвер не реагирует на сигнал от выходного регистра! я использую 74HC595. сейчас к нему подключён один RGB-диод и ещё два простых. все работают как надо! RGB-диод умеет даже показывать разные цвета (жёлтый, голубой) используя самописную функцию имплементирующую PWM через shiftOut если подключить драйвер индикатора к выходу регистра и попробовать этим выходом поморгать, то драйвер всё равно отображает ноль и не проявляет никаких признаков что на него как-то воздействуют. если подключить вместо драйвера диод, то диод будет моргать. что важно - частота моргания немного меняется при изменении цифры которую пытаюсь показать. что примечательно: если к тому же диоду подвести выход с ардуины который предназначен для дравера и с которым драйвер прекрасно работает то диод вспыхивать не будет! подскажите, если кто знает или может хотя бы предположить: почему драйверы ведут себя так?
А ресет у драйвера Вы не забыли дернуть перед выдачей импульсов? Без сдвигового регистра пробовали подключать? Этот пример пробовали? Выложите схему и код.
Собственно по этому примеру изначально всё и собрал. данный пример как раз без сдвигового регистра. резет дёрнуть вроде не забыл, но если что-то в чём-то понимаю, то даже если бы забыл, то поведение индикатора отличалось бы от просто отображения цифры 0. код и схему пока выложить не могу, так как код нужно сначала привести к такому состоянию чтобы там была только работа с индикатором, а схемы не знаю где нарисовать можно =)
Есть программка Fritzing; можно на бумажке от руки и сфотать) Можно просто сфотать макетку Вашу, но только чтобы все хорошо было видно - что с чем соединяется...
о, спасибо за наводку! главное для мака с линупсом подходит. макетку только вечером увижу. выложу сюда фотку. на самом деле, честно говоря, сомнений в правильности сборки практически нет по причине того, что драйверы от ардуины работают и диоды от регистра тоже. я несколько раз проверял, перетыкал, проверял провода, снова перетыкал...
А в коде затыка быть не может? Попробуйте прогнать версию кода, где есть только работа с индикаторами и больше ничего - мало ли что...
вот этот кусочек кода управляет драйверами если они подключены к ардуино напрямую как видите используются 2 пина: для десятков и единиц. код работает. на индикаторе корректно отображаются числа от 0 (как 00) до 99. Код (Text): void resetNumber() { digitalWrite(RESET_PIN, HIGH); digitalWrite(RESET_PIN, LOW); } void showNumber(int n) { resetNumber(); showNumber(n / 10, 6); showNumber(n % 10, CLOCK_PIN); } void showNumber(int n, int pin) { while (n--) { digitalWrite(pin, HIGH); digitalWrite(pin, LOW); } } вот этот код, теоретически, должен щелкать одним из индикаторов. другой индикатор и резет по-прежнему управляются напрямую с ардуины: Код (Text): int val = 0; //... void showNumber(int n, int pin) { while (n--) { if (pin == CLOCK_PIN) { digitalWrite(pin, HIGH); digitalWrite(pin, LOW); } else { vBit(5, true); vBit(5, false); } } } //... void vBit(byte i, boolean bitVal) { if (bitVal) { val = val | (1 << i); } else { val = val & ( 0xFFFFFF ^ (1 << i) ); } digitalWrite(LATCH_PIN, LOW); shiftOut(DATA_PIN, CLOCK_R_PIN, MSBFIRST, val); digitalWrite(LATCH_PIN, HIGH); } если вместо драйвера подключить диод, то мозно наблюдать его мерцание. хорошо заметно на удачно смазанной фотке. но я пока не понял как ее сюда прикрепить ))
А зачем отдельно пины для десятков и единиц? У драйвера есть нога, которая дрыгается каждый десяток импульсов, ее нужно подключить ко входу второго драйвера, а ресеты объединить, тогда при выдаче 10 типульсов на первом индикаторе получим 0, а на втором 1 и т.д. Насчет сдвигового постараюсь завтра отписать, мозг уже не хочет думать...