Четырёхразрядный индикатор (Troyka-модуль) QuadDisplay и 4-я точка

Тема в разделе "Arduino & Shields", создана пользователем Pvgdrk, 9 июн 2019.

  1. Pvgdrk

    Pvgdrk Нуб

    Ранее были приобретены Troyka-модули четырёхразрядного индикатора http://wiki.amperka.ru/продукты:troyka:quad-display, которые успешно использовались в ряде проектов. Но теперь возникла необходимость индикации всех 4-х точек модуля. Оказалось, что крайняя правая точка (первый разряд числа) не горит и ей нельзя управлять. Подскажите, что можно придумать? Простая подпайка резистора RN1A к SPD1 просто зажигает точку на постоянку. На запись в регистр состояние точки не реагирует.[​IMG]
     
  2. Daniil

    Daniil Гуру

    Запись как производится? Если через библиотеку, то, может быть, в ней этот вывод зафиксирован?
     
  3. Pvgdrk

    Pvgdrk Нуб

    Да, через стандартную библиотеку QuadDisplay. Как понять зафиксирован вывод или нет? И что делать? На первый взгляд функция
    Код (C++):
    static void sendByte(uint8_t pin, byte data, byte n = 8)
    посылает все 8 бит. И если работает для 3 сегментов, то почему не работает для 4-го?.
     
  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Расшифруйте назначение аргументов ф-ции. Как задается разряд в который выводить ?
    Сегмент - это часть символа в знакоместе. А позиция знакоместа - разряд. Не путайте.
     
  5. Belkin

    Belkin Гик

    А-ля WS2812... ;)
    Цепочкой загоняются 4 х 8 бит через последовательные регистры посредством "псевдо-SPI".
    Первый байт - для "дальнего" индикатора.
    Пауза более какого-то времени - сигнал "остановка передачи"...

    А что-то "расшифровать" - думаю, что "вопрос в никуда"... ;)
     
  6. Pvgdrk

    Pvgdrk Нуб

    Это ф-ция библиотеки QuadDisplay из файла QuadDisplay.cpp https://github.com/amperka/QuadDisplay
    Хорошо, пусть будет знакоместо. Однако это никак не приближает к решению проблемы.
    В большей степени я ждал ответа от разработчиков. Или от того, у кого есть практический опыт решения данной проблемы.
     
  7. b707

    b707 Гуру

    Ariadna-on-Line,Belkin
    там обычный каскад 4х сдвиговых регистров
    Думаю, там ккакя-то аппаратная проблема, возможно просто модуль "битый"
     
  8. Daniil

    Daniil Гуру

    разработчики тут есть, для ускорения получения ответа, можете в тех. поддержку написать.
    Скорее всего они по будням сюда заходят, не обращал внимания.
     
  9. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Проблему решают ваши ответы на вопросы, на которые вас просят ответить. Откуда эта библа мы прочитали. Но там нет описалова ЭТОЙ ф-ции. Не хотите отвечать - ждите разработчиков. Возможно действительно битый сдвиговый регистр IC1. Как предполагает Сова.
     
    Последнее редактирование: 10 июн 2019
  10. AlexU

    AlexU Гуру

    Судя по схеме, подпайка RN1A к SPD1 должна решить Вашу проблему. Для проверки можно вызвать функцию: displayDigits(pin, digit1, digit2, digit3, digit4), где digit1 = digit2 = digit3 = digit4 = 0 (т.е. все циферки равны нулю).
    Если не сработает, то либо верно предположение 'b707', либо реальный модуль не соответствует схеме. Нужно проверить, что от RN1A идёт дорожка к 15му выводу IC1 (например прозвонить тестером), а не куда-то ещё (скорее она может идти на землю).
     
  11. b707

    b707 Гуру

    есть
     
  12. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Сова, не томите. Еслиб нашел, яб не спрашивал. Или вы о самом коде библиотеки ? По коду, функция выводит в одно знакоместо при n=8. А для 4-х разрядов вызывается 4 раза. Если так, достаточно вызвать один раз с n=2 и data=FF. Загорятся сегмент А и точка - модуль жив. Если точки нет - замена IC1.
    ПС. Не понял, зачем коротыш слева нарисован с R3=0 и R4=0 ??
    ППС. Есть свой проект (схема) на 595х ( для PIC ), где вывод библиотекой однопроводной шины Даллас. Надо - выложу.
     
    Последнее редактирование: 10 июн 2019
  13. b707

    b707 Гуру

    конечно. Вот она, эта функция
    Код (C++):
    static void sendByte(uint8_t pin, byte data, byte n = 8)
    {
        for (byte i = n; i > 0; i--) {
            if (data & 1) {
                noInterrupts();
                MACRO_DIGITAL_WRITE(pin, LOW);
                MACRO_DIGITAL_WRITE(pin, HIGH);
                interrupts();
                delayMicroseconds(30);
            }
            else {
                MACRO_DIGITAL_WRITE(pin, LOW);
                delayMicroseconds(15);
                MACRO_DIGITAL_WRITE(pin, HIGH);
                delayMicroseconds(60);
            }
            data >>= 1;
        }
    }
     
  14. AlexU

    AlexU Гуру

    Ниже (в левом нижнем углу) заморские буковки объясняют суть данного коротыша.
     
  15. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Спс. Сам удивляюсь как проглядел.
    Рискую нарваться, но спрошу. - Зачем в Си значки " * " и "&" имеют по две функции
    & - (bitwise and) и & - reference operator, * - (multiplication) и * - dereference operator
    Это из Ардуинского справочника, если что. Лишний ведь напряг однако.
     
    Последнее редактирование: 11 июн 2019
  16. parovoZZ

    parovoZZ Гуру

  17. parovoZZ

    parovoZZ Гуру

    что такое указатели и что такое разыменовывание указателя - там по полочкам разложено.
     
  18. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Паровоз, это у вас такая манера тролления чтоль ? Вроде русским-по-белому вопросы написаны.
     
    Последнее редактирование: 13 июн 2019