Библиотека MAX7219, которая может компенсировать плохо спроектированную/неправильно подключенную панель 8x32?

У меня есть этот пример кода:

#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>


#define MAX_DEVICES 4
#define CLK_PIN   11
#define DATA_PIN  12
#define CS_PIN    10

MD_Parola P = MD_Parola(DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

void setup(void) {
  P.begin();
  P.print("PPPPPPPP");
}

void loop(void) {
}

И вот как загорается дисплей:

Я предполагаю, что код отображает текст неправильно, потому что производитель дисплея подключил отдельные дисплеи 8x8 «не так, как ожидает любая библиотека» (т. е. красным я обозначил адреса столбцов для моего дисплея, а зеленым — то, какими они должны быть, чтобы эта библиотека правильно отображала текст).

У меня два вопроса:

  1. Существует ли хорошая графическая библиотека Arduino, которая позволила бы мне программно исправить проблему адресации, характерную для моего дисплея?
  2. Поскольку в будущем я планирую сделать дисплей 16x64 из 4 таких, то есть ли библиотека, способная сделать это (т.е. иметь вертикальный размер шрифта 12-16 пикселей)?

, 👍-1


2 ответа


1

Проблема незначительная. Похоже, библиотека была разработана для немного другого матричного дисплея/проводки.

Посмотрите на библиотеку, она, скорее всего, сопоставляет входной буфер с сегментной/точечно-матричной информацией. Поиграйтесь с этим.

Автор сделал 99% работы за вас. Вам нужно просто закончить последний 1%.

,

0

У меня была та же проблема. Это проблема конструкции оборудования. Вероятно, поэтому эти вещи были такими дешевыми на EBAY.

Эти штуки смещают по одному биту за раз по змеевидной схеме. Они были неправильно подключены. Их нужно было подключить так, чтобы отображать биты

1-8 in col 1, 
9-16 in col 2,
17-24 in col 3,
25-32 in col 4,
33-40 in col 5,
41-48 in col 6,
49-56 in col 7,
57-64 in col 8.

однако они были запрограммированы на

1-8 in col 8, 
9-16 in col 7,
17-24 in col 6,
25-32 in col 5,
33-40 in col 4,
41-48 in col 3,
49-56 in col 2,
57-64 in col 1.

Это можно исправить программно с небольшими проблемами. Чипы, которые они использовали, по сути, являются сдвиговыми регистрами. Но у них нет возможности очищать экран. Вы могли бы использовать некоторые трюки с таймингом, чтобы нарисовать весь дисплей, затем сделать паузу, а затем нарисовать весь дисплей снова. Это единственный способ, которым, как я вижу, можно добиться движения. Вы бы почувствовали быстрое размытие движения между каждым движением. Как правило, нежелательно.

Ни одно программное обеспечение не будет работать должным образом, если не работает оборудование. – Игнасио Васкес-Абрамс 3 декабря 2017 г. в 20:26

,