• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Модуль MAX7219

AndrF

Active member
Пытаюсь задействовать модуль на основе MAX7219 - ну такие на Ali продают:


Вроде примеров в интернете много, но проблема - ни один толком не запускается. К тому же выложены в интернете они как правило кусками - отсутствуют модули библиотек, которые вполне могли и поменять. Вот и гадай в итоге...

Единственный , который хоть как-то пошел это (отсюда):

Код:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>

Max72xxPanel matrix = Max72xxPanel(D8, 4, 1);

unsigned long ticker_next;
String tape = "Hello from RobotClass!";
int spacer = 1;
int width = 5 + spacer;

void setup(void){
    matrix.setIntensity(7);
}

void handleTicker(){
    for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) {
        matrix.fillScreen(LOW);

        int letter = i / width;
        int x = (matrix.width() - 1) - i % width;
        int y = (matrix.height() - 8) / 2;

        while ( x + width - spacer >= 0 && letter >= 0 ) {
            if ( letter < tape.length() ) {
                matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1);
            }
            letter--;
            x -= width;
        }

        matrix.write();
        delay(50);
    }
}

void loop(void){
    handleTicker();
}
Но пошел криво - работает только одна матрица из 4-х и текст в ней повернут и скроллируется по вертикали, а не по горизонтали... Ну текст я еще могу повернуть, а вот разобраться как заставить работать другие матрицы модуля не получается.

Посмотреть что там с сигналами - тоже не могу - осциллограф отсутствует. Но модули менял - эффект тот же. Сейчас собрано на макетке...

Можете подсказать в чем дело или поделиться рабочим примером со всеми библиотеками?
 

Andy Korg

Moderator
Команда форума
...одна матрица из 4-х и текст в ней повернут и скроллируется по вертикали, а не по горизонтали....
Напрашивается вывод, что задана размерность шириной в одну матрицу и высотой в несколько (в четыре например). Где там задается размерность? может тут: Max72xxPanel matrix = Max72xxPanel(D8, 4, 1);
 

AndrF

Active member
Напрашивается вывод, что задана размерность шириной в одну матрицу и высотой в несколько (в четыре например). Где там задается размерность? может тут: Max72xxPanel matrix = Max72xxPanel(D8, 4, 1);
Да, именно там. 4 по горизонтали и 1 по вертикали. Наборот тоже пробовал - вообще не идет...
 

AndrF

Active member
Непонятно то что команды, которые должны воздействовать на все матрицы, действуют только на первую.

К примеру, setIntensity(..);

Но почему так не пойму - модули соединены нормально. Но модули стоящие за первым в упор не видят что передают.

Скорей всего проблема одна...
 

AndrF

Active member
Шорт! Поехало!

Проблема была в следующем - питание для модуля я брал с контакта VIN макетки для модуля Nodemcu - по идее там должно было быть 5 вольт. Но, похоже, не было. То есть вообще не было. Замерить-то было нечем. А модуль с матрицами, выходит, изображал работу будучи подключенным к одним сигнальным контактам и GND! Светил слабовато, но одна матрица работала как надо, а остальные просто светились... Сейчас переткнул на 3,3V и все поехало. По крайней мере в этом примере.
 
Сверху Снизу