DMD_STM32 - версия библиотеки DMD для СТМ32Дуино

b707
Offline
Зарегистрирован: 26.05.2017

FoxJone пишет:

Да это не рисовал, просто разъемов накидал на плату без дорог...

Но в принципе за час разведу - там ничего нету кроме разъемов и дорог.

сразу замечания про разводку дорог - имейте в виду, что пины DATA на всех параллельных каналах должны быть на одном порту, то есть либо все PA либо все PB

b707
Offline
Зарегистрирован: 26.05.2017

уря, пршлогодний код для RGB 64x32 запустил. Панель 80x40 имеет ровно такую же разводку, как 64х32, только линий сканирования больше.  Поправил в коде 16 сканов на 20 - заработала и 80х40

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

ProTim
Offline
Зарегистрирован: 26.04.2021

b707 Добрый вечер. Повторяю ваш пример с UARTTransfer из 207 поста. Вывожу статичный текст- для теста две разные строки каждую секунду. Всё работает и выводится чуть больше минуты, потом зависает. После ресета Стм32 тоже минуту работает. Отправляет Уно, монитор порта показывает, что отправка произходит. В этом деле новичок, не могу найти причину.

 

b707
Offline
Зарегистрирован: 26.05.2017

пока не могу сказать, в коде вроде ошибок нет.

Попробуйте увеличить интервал посылки данных (просто для теста) - изменится время до зависания или нет?

ProTim
Offline
Зарегистрирован: 26.04.2021

Поменял на 2000 - 18 циклов, 5000 - 10 циклов. Немного дольше, но тоже самое. При перезагрузке Уно пару раз срабатывает . После зависания тоже редко несколько раз срабатывает 

b707
Offline
Зарегистрирован: 26.05.2017

версия библиотеки - с гитхаба?

Какая версия аддона СТМ32?

 

Попробую на выходных воспроизвести вашу проблему.

ProTim
Offline
Зарегистрирован: 26.04.2021

DMD с гитхаба, если неошибаюсь, 0.4.2

ArduinoIDE - SMT32duino, прошиваю ST-link

Плата STM как у вас на часах с дополнительными гнездами

ProTim
Offline
Зарегистрирован: 26.04.2021

Собрал на Уно часы, посылаю каждую секунду. На СТМ в лооп добавил deley (100), теперь  показывает и после минуты, но много пропусков. В библиотеку поставил принт.

1boolean UARTTransfer::receiveData() {
2    uint8_t mess_len = 0;
3    uint8_t in_char;
4 
5    if (rx_stage > 5) return false;
6  
7    if ((rx_stage) && ((millis() - rx_time) > rx_timeout)) {
8       Serial1.println(rx_stage);
9        clearMessage();

Нашёл возможную причину, переменная rx_stage при пропуске отличается от нуля . Не понимаю причину, после приёма она же обнуляется. 

b707
Offline
Зарегистрирован: 26.05.2017

ProTim пишет:

Нашёл возможную причину, переменная rx_stage при пропуске отличается от нуля . Не понимаю причину, после приёма она же обнуляется. 

это не причина, это следствие. Насколько я помню эту библиотеку, когда сообщение принимается частично, эта переменная остается отличной от нуля.

Судя по происходящему, у вас проблемы с приемом. Но не вполне понимаю, почему. 6 матриц такой нагрузки давать не должны, это совсем немного. Приведенный Вами код - это все? или в программе есть что-то еще?

 

 

ProTim
Offline
Зарегистрирован: 26.04.2021

На принимающеи стороне это всё. Ещё обнаружил,что переменная rx_time с каждым приёмом некапливается до примерно 60 000 , потом резко падает до 600 и опять растёт. Но это несовпадает с пропусками. Возможно так и должно быть.

ProTim
Offline
Зарегистрирован: 26.04.2021

Передаётся всё коректно, как мне посмотреть, что приходит, можно както переправить все с Serial2 на Serial1?

b707
Offline
Зарегистрирован: 26.05.2017

ProTim пишет:

Передаётся всё коректно, как мне посмотреть, что приходит, можно както переправить все с Serial2 на Serial1?

Serila.print() ?

Собрал макет для проверки, сегодня постараюсь проверить ваш код, вчера вообще не удалось матрицу запустить.

ProTim
Offline
Зарегистрирован: 26.04.2021

Вывел на монитор переменную in_char, в принципе принятая строка с буфера. Вот что получилось, мои добавления st(rx_stage)и значение и С (clear message)

183 - header 1, 7- header 2, 51-header 3, 66- STRING, 10- ?, дальше время hh:mm:ss, cs 

 

b707
Offline
Зарегистрирован: 26.05.2017

Наконец запустил Ваш пример. Вроде нашел ошибку, в файле UARTTransfer.h тип переменной rx_time поменяйте на uint32_t.

После этого у меня уже 10 минут не виснет, а исходный вариант вис через минуту.

Все остальные изменения (задержки и прочее) - не нужны, можете убрать.

 

Добавка - мигало 35 минут, так и не зависло. Дальше выключил.

Если найдете еще косяки - пишите, я пока схему разбирать не буду.

 

ProTim
Offline
Зарегистрирован: 26.04.2021

Спасибо, всё работает уже 3 часа, ни одного пропуска. Пустил даже через RS 485 и 30 метров кабеля - всё чётко. Работает даже Ваша регулировка яркости из часов, на приём и отображение не влияет.

Вопрос. Если я данные буду брать прямо из ПК через RS 485 флешку, как прицепить эту библиотеку, или как сформировать строку с подщетом cs?

b707
Offline
Зарегистрирован: 26.05.2017

ProTim пишет:

Вопрос. Если я данные буду брать прямо из ПК через RS 485 флешку, как прицепить эту библиотеку, или как сформировать строку с подщетом cs?

надо больше подробностей, какой протокол у вас бегает по 485

ProTim
Offline
Зарегистрирован: 26.04.2021

Сейчас изпользую две платки TTL - RS485, хочу с ПК без Уно такой

  • Кабель USB-RS485-это usb-кабель RS485 с последовательным преобразователем UART, включающий FTDI FT232R USB в последовательный UART ИНТЕРФЕЙС IC, который обрабатывает все сигналы и протоколы USB.

 

b707
Offline
Зарегистрирован: 26.05.2017

это вы мне железо показываете. А я вас спросил про протокол.

Какая программа и в каком виде будет данные по этому кабелю посылать?

b707
Offline
Зарегистрирован: 26.05.2017

Обновление  - новый релиз v0.5.0 (для СТМ32)

Выложил на гитхаб новый релиз. По сути это на 70% новая библиотека, поэтому завел на гитхабе новую ветку (branch) и изменил название базового класса с DMD_STM32 на DMD_STM32a.

Основные изменения:

- Главное - добавлена поддержка многоцветных RGB панелей.
- графическая система библиотеки теперь наследуется от известной либы Adafruit GFX, что позволяет использовать большое число встроенных в эту либу функций.
- добавлена двойная буферизация, что уменьшает мерцание на быстроменяющихся картинках, а так же позволяет проворачивать кое-какие визуальные эффекты.
- для монохромных матриц введен новый "параллельный" тип подключения, когда каждый горизонтальный ряд матриц подключается к своему отдельному DATA пину, позволяя выводить изображение на все ряды одновременно. Имеет смысл на больших многорядных панелях.
- сильно переписан код, библиотека получила модульную структуру с одним базовым классом и кучей дочерних для разных типов матриц.

Пока поддерживаются следующие типы RGB матриц: 32x16 8scan, 64x32 16 scan, 80x40 20scan и 64x64 32scan. В ближайшее время добавятся еще два или три типа с 2s и 4s. Дальнейшее расширение парка поддерживаемых матриц зависит от спроса и наличия у меня таковых матриц для тестов.

Документация по новой версии пока полностью отсутствует. Пины для подключения описаны в примерах. По остальному спрашивайте.

Новая версия лежит на гитхабе в отдельной ветке. Чтобы скачать код, необходимо выбрать ветку dev-V2 в выпадающем списке выше слева над списком файлов или воспользоваться прямой ссылкой: https://github.com/board707/DMD_STM32/tree/dev-V2 Стабильная версия 0.4.2 остается доступна как основная ветвь "master".

Важное замечание -  для работы требуется библиотека Adafruit-GFX версии 1.7.х или старше (то есть 1.6, 1.5 и тд). Более новые версии Adafruit-GFX пока не поддерживаются.

Поскольку базовые классы новой и старой версии называется немного по разному (DMD_STM32 и DMD_STM32a), обе ветки можно устанавливать в Ардуино ИДЕ одновременно, не опасаясь конфликтов.

 

Отдельное спасибо FoxJone за предоставленные для тестов матрицы.

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018
Пытаюсь запустить тестовый пример на PlatformIO с флагом
ib_ldf_mode = deep+
и 
lib_deps =              adafruit/Adafruit GFX Library @ ^1.10.7
Получаю ошибку
.pio\libdeps\genericSTM32F103C8\Adafruit GFX Library\Adafruit_GrayOLED.h:30:10: fatal error: Adafruit_I2CDevice.h: No such file or directory
 
Добавляю библиотеку adafruit/Adafruit BusIO @ ^1.7.3
Ошибка
.pio\libdeps\genericSTM32F103C8\Adafruit BusIO/Adafruit_I2CDevice.h:1:10: fatal error: Wire.h: No such file or directory
 
Явно указываю 
#include <Wire.h>
 
и пошли ошибки несоответсвия типов
.pio\libdeps\genericSTM32F103C8\Adafruit BusIO\Adafruit_I2CDevice.cpp:88:47: error: invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'uint8* {aka unsigned char*}' [-fpermissive]
и
.pio\libdeps\genericSTM32F103C8\Adafruit BusIO\Adafruit_SPIDevice.cpp:133:31: error: no matching function for call to 'SPIClass::transfer(uint8_t*&, size_t&)'
 
Понимаю что можно поправить в библиотеках, но это как-то неправильно будет.
Знаю что Вы с PlatformIO не работаете, но может подскажите где правильно копать?
 
b707
Offline
Зарегистрирован: 26.05.2017

Попробовал - и правда с последними версиями Adafruit-GTX не собирается. Они там начиная с 1.8.х поменяли структуру библиотеки. Скачал версию 1.7.0 - с ней все нормально. Попробуйте пока с ней, а я может потом разберусь, как с новыми версиями запустить

Версию 1.7.0 можно скачать с гитхаба Адафруита: https://github.com/adafruit/Adafruit-GFX-Library/releases/tag/1.7.0

Библиотека Adafruit BusIO тогда не нужна.

 

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Спасибо, попробую.

(в PlatformIO удобно что можно версию в ini файле указать)

b707
Offline
Зарегистрирован: 26.05.2017

FoxJone пишет:

понял, чего не хватает в библиотеке!

Не хватает метода вывода картинки из байтового массива! То есть я в курсе, что в библиотеке все делается через дравпиксель и можно сделать самому... Но было бы круто иметь готовый метод drawimage, где на входе координаты и байтовый массив.

в библиотеке Adafruit есть готовый метод вывода битмапа из массива, а значит теперь можно использовать прямо из классов DMD_STM

можно монохром, можно цвет:

1void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w,
2                  int16_t h, uint16_t color);
3 
4void drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], int16_t w,
5                     int16_t h);

 

Результат вывода  drawRGBBitmap в разрешении 32х32

В таком разрешении, конечно, зернисто, но картинка вполне узнаваема :)

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Собирается с Adafruit-GTX 1.7.5, с 1.8 уже ошибки.

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

- для монохромных матриц введен новый "параллельный" тип подключения, когда каждый горизонтальный ряд матриц подключается к своему отдельному DATA пину, позволяя выводить изображение на все ряды одновременно. Имеет смысл на больших многорядных панелях.

В соответствии с Вашим примером так будет выглядеть соединение?

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

В соответствии с Вашим примером так будет выглядеть соединение?

на картинке плохо видно номера пинов, но вроде так. Кстати. практичка не очень подтверждает необходимость резисторов R1 R2 - я в начале их ставил, а потом перестал - разницы не вижу. Если ставить, то 3к маловато, лучше 6.8 - 10К

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018
b707
Offline
Зарегистрирован: 26.05.2017

да, схема правильная.

При таком подключении резисторы включены параллельнj  и мое замечание в предыдущем сообщении тем более актуально.  Достаточно одного резистора на все каналы.

FoxJone
Offline
Зарегистрирован: 19.04.2019

Вам то хорошо, есть время поиграться...

Кстати, вот этот шунтирующий резистор для меня новость. Он откуда взялся и вообще зачем нужен? То есть я примерно представляю (вот теперь, когда увидел его), но хотелось бы точную версию услышать.

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Да, забыл убрать резисторы.

b707
Offline
Зарегистрирован: 26.05.2017

FoxJone пишет:

Вам то хорошо, есть время поиграться...

Евгений, Вы как-то слишком мрачно настроены :) Я по Вашему заказы битмапы добавил :), видели?

Цитата:
Кстати, вот этот шунтирующий резистор для меня новость. Он откуда взялся и вообще зачем нужен? То есть я примерно представляю (вот теперь, когда увидел его), но хотелось бы точную версию услышать.

Я тоже представляю только примерно. Уже не помню, в каком из DMD проектов на гите есть такая рекомендация. Как я уже писал выше - в принципе отлично работает и без него. Я этот резистор не ставлю.

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Подскажите плз по соединению с RGB.
У Вас в скетче
#define DMD_PIN_SCLK PB7
Это на других обозначениях LAT (STB) (14 пин)?

#define DMD_PIN_A PB6
#define DMD_PIN_B PB5
#define DMD_PIN_C PB4
#define DMD_PIN_D PB3
#define DMD_PIN_E PB9
С A-D понятно, а E какой пин?
 
R0, G0, B0, R1, G1, B1
это в некоторых обозначениях R1, G2, B1, R2, G2, B2?
b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

Подскажите плз по соединению с RGB.
У Вас в скетче
#define DMD_PIN_SCLK PB7
Это на других обозначениях LAT (STB) (14 пин)?

да, это то же самое что LAT, обозначение осталось от монохромных матриц.

Цитата:

#define DMD_PIN_A PB6
#define DMD_PIN_B PB5
#define DMD_PIN_C PB4
#define DMD_PIN_D PB3
#define DMD_PIN_E PB9
С A-D понятно, а E какой пин?

пин Е есть только на матрицах высотой более 32 пикселей (например 80х40 или 64х64). Вообще, в зависимости от типа матрицы у вас может быть от двух (А и В) до пяти (А - Е) микшерных пинов. Значения тех пинов. что у вас нет - можете ставить любые, они не используются, библиотека их не инициализирует и ничего в них не пишет.
В примере обозначены все пины вплоть до Е, чтобы один и тот же пример подходил на любые поддерживаемые матрицы.
 
Цитата:
R0, G0, B0, R1, G1, B1
это в некоторых обозначениях R1, G2, B1, R2, G2, B2?

да, это цветовые каналы

b707
Offline
Зарегистрирован: 26.05.2017

шкала из соседней ветки :) 4 матрицы 64х32, один бит на цвет, подключение зигзагом с поворотом на 180 градусов (поворот, потому что положил на диван вверх ногами и вертеть 4 матрицы с проводами было сложно :)

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Пытаюсь запустить параллельное соединение.

01#define DMD_PARA
02/*--------------------------------------------------------------------------------------
03  Includes
04--------------------------------------------------------------------------------------*/
05#if defined(DMD_PARA)
06#include "DMD_Monochrome_Parallel.h"
07#else
08#include "DMD_MonoChrome_SPI.h"
09#endif
10 
11// Fonts includes
12#include "st_fonts/UkrRusArial14.h";
13#pragma GCC diagnostic ignored "-Wnarrowing"
14#pragma GCC diagnostic ignored "-Woverflow"
15#include "gfx_fonts/GlametrixLight12pt7b.h"
16#include "gfx_fonts/GlametrixBold12pt7b.h"
17#pragma GCC diagnostic warning "-Wnarrowing"
18#pragma GCC diagnostic warning "-Woverflow"
19#include "my_fonts/FranklinGotMC18.h" //'°C' & (#38 symbol); ° ~ (#126 symbol) 'mm Hg' symbol '}' #125
20 
21//Number of panels in x and y axis
22#define DISPLAYS_ACROSS 3
23#define DISPLAYS_DOWN 2
24 
25// Enable of output buffering
26// if true, changes only outputs to matrix after
27// swapBuffers(true) command
28// If dual buffer not enabled, all output draw at matrix directly
29// and swapBuffers(true) cimmand do nothing
30#define ENABLE_DUAL_BUFFER true
31 
32// ----- Select pins for P10 matrix connection ------------
33// pins A, B, SCLK may be any digital I/O, pin nOE should be Timer3 PWM pin as PB0,PB1
34// if connect as SPI, do not use corresponding MiSO pin - PA6 for SPI1 and PB14 for SPI2
35#if defined(DMD_PARA)
36#define DMD_PIN_A PA1
37#define DMD_PIN_B PA4
38#define DMD_PIN_nOE PB1
39#define DMD_PIN_SCLK PA15
40#else
41#define DMD_PIN_A PB11
42#define DMD_PIN_B PB12
43#define DMD_PIN_nOE PB1
44#define DMD_PIN_SCLK PB10
45#endif
46 
47 
48// pins for SPI connect
49// SPI specific pins as CLK and R_DATA has predefined values:
50//   for SPI(1) CLK = PA5  R_DATA = PA7
51//   for SPI(2) CLK = PB13  R_DATA = PB15
52// --------------------------------------------------------
53 
54//=== Config for Parallel connect ====
55#if defined(DMD_PARA)
56//pins for rows at x axis
57// example for two rows
58// all those pins must be selected from same port!
59uint8_t pins[] = { PA5, PA7, PA8 };  // CLK , row1, row 2
60 
61//Fire up the DMD object as dmd
62DMD_Monochrome_Parallel dmd(DMD_PIN_A, DMD_PIN_B, DMD_PIN_nOE, DMD_PIN_SCLK, pins, DISPLAYS_ACROSS, DISPLAYS_DOWN,ENABLE_DUAL_BUFFER);
63#else
64 
65//=== Config for SPI connect ====
66SPIClass dmd_spi(1);
67DMD_MonoChrome_SPI dmd(DMD_PIN_A, DMD_PIN_B, DMD_PIN_nOE, DMD_PIN_SCLK, DISPLAYS_ACROSS, DISPLAYS_DOWN, dmd_spi, ENABLE_DUAL_BUFFER);
68#endif
69 
70// --- Define fonts ----
71// DMD.h old style font
72DMD_Standard_Font UkrRusArial_F(UkrRusArial_14);
73 
74// GFX font with sepatate parts for Latin and Cyrillic chars
75DMD_GFX_Font GlametrixL((uint8_t*)&GlametrixLight12pt7b,(uint8_t*)&GlametrixLight12pt8b_rus,0x80,13);
76DMD_GFX_Font fontMiddle((uint8_t*)&FranklinGothicMediumCond18pt7b,(uint8_t*)&FranklinGothicMediumCond18pt8b_rus, 0x80, 22);

 

 

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv, добрый день!

если вопрос еще актуален - пишите мне в почту

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Здравствуйте.

Актуален. Напомните плиз первую строку адреса.

b707
Offline
Зарегистрирован: 26.05.2017

нашли причины бага, указанного в #335

Для монохрома при параллельном соединении панелей пины CLK и пины R-DATA всех рядов должны располагаться на одном порту МК в его младшем байте, то есть выбираться из диапазонов A0-A7 или B0-B7. А я сам в примере указал пины  А5 А6 _А8_ - поэтому и не работало. Пример в библиотеке поправил.

Чтобы снять это ограничение и заработал весь порт целиком - надо поменять тип элементов массива буфера с uint8 на uint16 - что приведет к увеличению расхода памяти в два раза и будет неэффективно для матриц менее чем 7 строк по горизонтали.

Поэтому пока осталяю так, На сегодня максимальное число горизонтальных строк матриц при таком подключении составляет 7.    Кому 7 строк мало - пишите отдельно.

 

 

 

b707
Offline
Зарегистрирован: 26.05.2017

   Обновление - версия v0.6.3

  https://github.com/board707/DMD_STM32/tree/v0.6.3

   Изменния:

   - добавил поддержку однобитного цвета для RGB панелей. Режим предназначен для табло и вывесок, где не нужно сложных цветов и достаточно 2-3 основных цвета. Занимает меньше места в памяти и работает быстрее. Управление яркостью в этом режиме сделано аналогично монохромным панелям - ШИМ-ом на пин ОЕ. Соответственно к выбору пина применяются те же требования - то есть для ОЕ нужно использовать PWM пин Таймера3. Подробнее см. пример dmd_rgb

 - серьезно переписан вывод текста и функции бегущей строки. Скорость вывода фонтов увеличилась в 6-10 раз по сравнению с версией 0.5.1. Относится ко всем типам матриц, но особенно должно быть заметно на RGB.

 - добавлена поддержка соединения панелей зигзагом

 - куча мелких исправлений

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

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

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Стартовое табло для гоночных лодок. Три панели вертикально.

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

Стартовое табло для гоночных лодок.

круто :)

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

b707 пишет:

   Обновление - версия v0.6.3

  https://github.com/board707/DMD_STM32/tree/v0.6.3

   

Эта версия тоже работает только с 
Adafruit GFX Library @ 1.7.5
?

На 10-й выдает ошибку

libdeps\genericSTM32F103C8\Adafruit GFX Library\Adafruit_GrayOLED.h:30:10: fatal error: Adafruit_I2CDevice.h: No such file or directory

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

Эта версия тоже работает только с 
Adafruit GFX Library @ 1.7.5?

да

sansanich
Offline
Зарегистрирован: 12.04.2018

Отличная библиотека! столько возможностей, подумываю попробовать стм32 ради неё. 

Сейчас делаю проект на 8266 DMD2, всё получается, но вот потребовалось подключить СД карту и встал вопрос. SPI занят, а со вторым я так и не понял, в общем стал смотреть на esp32 а затем и сюда попал ))

Спасибо автору за труд!

Анатолий89
Offline
Зарегистрирован: 16.03.2021

B707,я вам вопрос задавал здесь http://arduino.ru/forum/proekty/imitatsiya-razlichnykh-shkal-na-displee-12864?page=6#comment-615567

ответ будет?

sansanich
Offline
Зарегистрирован: 12.04.2018

если можно я тоже вопрос задам - смогу ли я на СТМ32 подключить при работающей DMD2 модуль GPS по уарту и SD карту для файла конфигурации (считывается при загрузке передавая значения в переменные)?

Я сделал на ESP8266 свой проект, он определяет координаты и по уарту передаёт в еоп и тот исходя из заложенной программы -  воспроизводит,  значения вводим через веб интерфейс (файловая система, редактор, есть урок на эту тему в сети на основе примеров библиотек 8266) в контроллер (но одновременной работы DMD2 бегин и вай фай я не смог добиться и сделал в сетапе по кнопке или то или это), но мне показалось что перспективнее ваша библиотека, она живая(развивается активнее. универсалььнее) думаю что смогу перестроится на стм 32 (даже платки есть в шкафу, на всякий брал, простые и дискавери) но мне хотелось бы обойтись одним МК и чтоб пригодилось не раз ))

FoxJone
Offline
Зарегистрирован: 19.04.2019

sansanich ESP8266 не работает с ДМД и вайфаем одновременно - проверено уже неоднократно.

С другой стороны у меня СТМ (а до этого атмеги) прекрасно работает с ДМД + RS485 (который подключен как раз через уарт). Так что не вижу никаких проблем для работы любого оборудования через уарт.

b707
Offline
Зарегистрирован: 26.05.2017

Анатолий89 пишет:

B707,я вам вопрос задавал здесь http://arduino.ru/forum/proekty/imitatsiya-razlichnykh-shkal-na-displee-12864?page=6#comment-615567

ответ будет?


уточните, что за вопрос? - а то там уже много понаписали. Если про русские фонты - то вроде ответил. Если про размер фонта - то был неправ, обсчитался.
Еще что-то?

FoxJone
Offline
Зарегистрирован: 19.04.2019

Сегодня часа два пытался запустить две независимые марикуе (бегущие строки) на одном экране. В принципе дошел до того момента, где Дмитрий попиксельно сдвигает миррор экрана и понял что этот мирор надо делить на области и сдвигать независимо. Так стало лениво, что плюнул и сделал простым дравстрингом со смещением (да, знаю что низкий класс - но лень).

Если вдруг кто то сделал две бегучки на одном экране, поделитесь?

 

b707
Offline
Зарегистрирован: 26.05.2017

Евгений, параметр

bool use_shift = true;

базового класса DMD отвечает за перемещение бегущей строки сдвигом всего экрана (true) или перерисовкой строки заново если false

Опишите его как public и тогда сможете прямо в коде вызывать dmd.use_shift = false;

и отключать этот режим.