GyverSegment. Обсуждение библиотеки

_Vladimir

✩✩✩✩✩✩✩
11 Июл 2024
2
0
Доброго всем времени суток и обстановки!
Пытаюсь использовать библиотеку GyverSegment для своего дисплея. Конкретно класс Disp595Static. Отличие в том, что между сдвиговым и дисплеем у меня uln2803, дисплейчики на 12 вольтах. По факту, как и ожидается, получаю негативное изображение. попытался инвертировать DS, есть лишний элемент 74hc00, первая цифра норм выводится, вторая криво. Подскажите, кто как думает - правильный способ - программно фиксить, или копать в сторону железа?
Вот , к примеру, как выводится 5.5

0-02-05-f14a9f3ea34d8527a9e6af754891bf6603602bd7937bdae4353bef94f8e685d5_40783b48648fdce2.jpg
 

_Vladimir

✩✩✩✩✩✩✩
11 Июл 2024
2
0
да, дело в железе: интерфейс опторазвязанный, плюс длинная линия.
почти пофиксил установкой 0,47 мкф на линии интерфейса и заменил 74hc00 на 74hc132
иногда артефакты все равно проскакивают
Вопрос - DISPxxx_CLC_DELAY это длительность синхроимпульсов? до скольки ее можно увеличивать? просто увеличивая намного, снова появляются кракозябры.
а как бы в интерфейсе увеличить чуток задержку между ST_CP(т.е. между первой и второй цифрой ) может дело в этом?
 

bort707

★★★★★★✩
21 Сен 2020
3,077
915
По факту, как и ожидается, получаю негативное изображение. .... Подскажите, кто как думает - правильный способ - программно фиксить, или копать в сторону железа?
Конечно программно. Это элементарно решается в коде добавлением одной строчки.
Достаточно побитно инвертировать байты, отправляемые на дисплей функцией getCharCode(
 

Shar3

✩✩✩✩✩✩✩
27 Сен 2020
2
0
Всем добра!
Имею индикатор TM1637 с двоеточием.
Используя библиотеку Gyversegment, выбрал Disp1637Colon disp(DIO_PIN, CLK_PIN);
и пытаюсь включить двоеточие:
void colon(bool show);
Требуемого результата нет и с disp.update() и без.
Что я делаю не так?
P.S. С библиотекой TM1637.h все работает.
 
Изменено:

Bruzzer

★★★✩✩✩✩
23 Май 2020
501
149
Что я делаю не так?
Не показываете полный короткий пример, который демонстрирует вашу проблему.

colon(bool show) должен сразу включать или выключать двоеточие.
Т.е. код ниже будет мигать двоеточием (для Disp1637Colon )
C++:
void loop() {
  disp.colon(false);
  delay(1000);
  disp.colon(true);
  delay(1000);
}
Но это не настройка, а разовое вкл или выкл точек. И после следующего print() может потребоваться снова вызывать colon(bool show)
Ошибка это, или так и было задумано - не известно. Т.к. в документации не написано.
 
Изменено: