Четырёхразрядный индикатор (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. Расшифруйте назначение аргументов ф-ции. Как задается разряд в который выводить ?
    Сегмент - это часть символа в знакоместе. А позиция знакоместа - разряд. Не путайте.
     
  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. Проблему решают ваши ответы на вопросы, на которые вас просят ответить. Откуда эта библа мы прочитали. Но там нет описалова ЭТОЙ ф-ции. Не хотите отвечать - ждите разработчиков. Возможно действительно битый сдвиговый регистр 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. Сова, не томите. Еслиб нашел, яб не спрашивал. Или вы о самом коде библиотеки ? По коду, функция выводит в одно знакоместо при 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. Спс. Сам удивляюсь как проглядел.
    Рискую нарваться, но спрошу. - Зачем в Си значки " * " и "&" имеют по две функции
    & - (bitwise and) и & - reference operator, * - (multiplication) и * - dereference operator
    Это из Ардуинского справочника, если что. Лишний ведь напряг однако.
     
    Последнее редактирование: 11 июн 2019
  16. parovoZZ

    parovoZZ Гуру

  17. parovoZZ

    parovoZZ Гуру

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