Библиотека 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 «не так, как ожидает любая библиотека» (т. е. красным я обозначил адреса столбцов для моего дисплея, а зеленым — то, какими они должны быть, чтобы эта библиотека правильно отображала текст).
У меня два вопроса:
- Существует ли хорошая графическая библиотека Arduino, которая позволила бы мне программно исправить проблему адресации, характерную для моего дисплея?
- Поскольку в будущем я планирую сделать дисплей 16x64 из 4 таких, то есть ли библиотека, способная сделать это (т.е. иметь вертикальный размер шрифта 12-16 пикселей)?
@user389238, 👍-1
Обсуждение2 ответа
Проблема незначительная. Похоже, библиотека была разработана для немного другого матричного дисплея/проводки.
Посмотрите на библиотеку, она, скорее всего, сопоставляет входной буфер с сегментной/точечно-матричной информацией. Поиграйтесь с этим.
Автор сделал 99% работы за вас. Вам нужно просто закончить последний 1%.
Вы имеете в виду изменить код в самой библиотеке? Это несколько накладывает на меня бремя обслуживания, чтобы поделиться форком пропатченной библиотеки Parola с моим кодом, пока я не передам эти изменения Parola в восходящем направлении, а нисходящий поток (т. е. Arduino Web IDE) не подхватит их. Поэтому я бы предпочел использовать библиотеку, которая может справиться с этой проблемой из коробки, если таковая имеется., @user389238
Решение очень простое: поменять местами биты. Поэтому вам просто нужно написать функцию, которая меняет местами бит 7 <-> бит 0, бит 6 <-> бит 1, бит 5 <-> бит 2, бит 4 <-> бит 3. Это очень просто сделать., @dannyf
У меня была та же проблема. Это проблема конструкции оборудования. Вероятно, поэтому эти вещи были такими дешевыми на 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
- Считывание 10-контактного 7-сегментного (2 цифры) сингла Arduino 1
- Почему светодиоды заметно мерцают?
- Прокрутка слева направо на дисплее MAX7219
- Случайные светодиоды загораются на 10 модулях MAX7219
- Светодиодный матричный модуль FC-16 на базе MAX7219
- MAX7219 и Ардуино
- Можно ли подключить 4 4-разрядных 7-сегментных светодиодных дисплея к одной плате Arduino?
- Использование Bluetooth-терминала Android для изменения предустановленных состояний светодиодных матриц 8x8.
Ни одно программное обеспечение не будет работать должным образом, если не работает оборудование., @Ignacio Vazquez-Abrams
@IgnacioVazquez-Abrams Я представляю, что если бы была графическая библиотека, которая позволяла бы мне визуализировать пиксели в буфере памяти, а не напрямую на оборудовании, то я мог бы компенсировать этот аппаратный баг, используя библиотеку LedControl и вызывая что-то вроде setColumn((7-addr&0x7)+addr&252,value). Так есть ли библиотека, которая позволяет визуализировать пиксели в буфере памяти?, @user389238
[Это](https://www.gammon.com.au/forum/?id=11516) может помочь. Трудно сказать, плохое ли у вас оборудование или плохая библиотека., @Nick Gammon