Связка Mega2560 с p10 led module

LVS
Offline
Зарегистрирован: 31.05.2017

Ну и получаю фигню:

 

LVS
Offline
Зарегистрирован: 31.05.2017

Может я не в той ветке спрашиваю?

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

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

Попробуй поискать решение на форуме Адафрут https://forums.adafruit.com/. Да, инглиш, но гугл.переводчик более-менее справляется

LVS
Offline
Зарегистрирован: 31.05.2017

Hr.Smartus пишет:

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

Попробуй поискать решение на форуме Адафрут https://forums.adafruit.com/. Да, инглиш, но гугл.переводчик более-менее справляется

Печально это все... Тоже методом научного тыка разираюсь. Хотела по DMD завести, потому как не уверена, что получится через библиотеки Adafruitl сложить 4 матрицы... а по DMD не знаю как правильно подключить.... 

Ну выбора особо нет, буду дальше научно тыкать, когда разберусь, отпишу сюда.

И спасибо за поддержку, буду искать там.... хотя на этом форуме я уже тоже полазила немного. 

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

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

LVS
Offline
Зарегистрирован: 31.05.2017

Hr.Smartus пишет:

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

 

))))) первым делом к китайцам полезла... нет там ничего. Эти матрицы мне достались как резерв на замену на экран. Кстати там они работают, и видео, и тексты гоняют. Но там другой контроллер, и загружается туда инфа через HDплеер блоками. Ну таки методом тыка, придется попадать... или адафруитские библиотеки переписывать.

Я так понимаю, 1 матрица адафруитскими библиотеками определяется как 2 вертикальные 16х16.... попытаюсь на этой неделе как-то решить эту задачку. Или 2 вертикальные 16х32. Вобщем тыкаться надо. Мысли по этому поводу появились, нодо пробовать, а пробовать буду дома.

LVS
Offline
Зарегистрирован: 31.05.2017

Мои раскопки на ту тему привели к таким вот выводам: моя матрица 32х16 с 1\4 сканирования (pin A, B), библиотеки RGB matrix panel и Adafruit_GFX работают с матрицами 1\8 (pin A, B, C) и 1\16 (pin A, B, C, D) сканирования, т.е.  одновременно работают  1\4 или 1\8, или 1\16 часть всех светодиодов.

Библиотеки SPI и DMD работают с pin A и B и на одноцветных матрицах. Или я в этом случае ошибаюсь?

ascon
ascon аватар
Offline
Зарегистрирован: 14.08.2013

Всем привет.  я тут совсем не чего не понимаю. для меня это темный лес. 

Имеется в наличие led matrix 64х16. atmega 328/  и желание понять как это все работает.

На матрице есть такие микрухи 74hc245 2 штуки и 74hc138d 4 штуки для управления светодиодами. 74hc138d 2 шт для управления поливеками.

просьба  скинуть ссылки книжки любую полезную информацию. где будет описанно простым понятным языком.

LVS
Offline
Зарегистрирован: 31.05.2017

http://st.lartmaster.ru/1/759/621/LED_matrix_16x32.pdf

http://wreckage.ru/control-led-adafruit-from-arduino/

Погуглите про сдвиговые регистры, даташит на вашу матрицу.... ну для начала )))

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

LVS пишет:

Мои раскопки на ту тему привели к таким вот выводам: моя матрица 32х16 с 1\4 сканирования (pin A, B), библиотеки RGB matrix panel и Adafruit_GFX работают с матрицами 1\8 (pin A, B, C) и 1\16 (pin A, B, C, D) сканирования, т.е.  одновременно работают  1\4 или 1\8, или 1\16 часть всех светодиодов.

Библиотеки SPI и DMD работают с pin A и B и на одноцветных матрицах. Или я в этом случае ошибаюсь?

Как продвигается ваш поиск библиотеки для скважности 1/8? сам сейчас столконулся с этим моментом и пока что без результатов. Есть-то на примете?

LVS
Offline
Зарегистрирован: 31.05.2017

Готовых бибиотек для моих матриц и ардуино нет (((. Есть некий трансформер для контроллера RPI, но я его не пробовала, у меня ардуино уно. Искала долго и упорно... сейчас переписываю библиотеки от адафруит. Идет со скрипом, да еще и со временем проблема сейчас. А у Вас матрица с 1/8 скан? А размер? Если 16х32 и скан 1/8, то библ RGB_Panel_Matrix, стандартная должна пойти на ура.

 

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

Все несколько сложнее. у меня тут самопальная матрица 8х32 со скважностью 1/8 на сдвиговых регистрах dm115 на колонках (по 8шт на регистр, катод) и ни к чему не подвешенным контролем строк (анод). Сейчас сделал контроллер трок на 74LS145N и тразиссторами для усиления. пробуюу всем этим рулить хоть чем-нибудь. С либой DMD чтото пробегает, DMD2 тоже, но както подругому. Короче танцы с бубном продолжаются

LVS
Offline
Зарегистрирован: 31.05.2017

А, подумать надо.... 

Ну так, на вскидку, нужен дешифратор, который даст из комбинации A и B на линию анодов.... и отрулить катодами в регистре....

Суть: на аноды с дешифратора, а на катоды или побитно передавать или маской.... Сейчас не могу долго обьяснять, я на работе, аврал у меня тут

Можете попытаться без графических библиотек, только  с SPI, дать на аноды (все аноды регистра) и на какой-то из катодов.

 

LVS
Offline
Зарегистрирован: 31.05.2017

https://www.youtube.com/watch?v=yf-6UIfVDmY это посмотрите ещё

kolokchik
Offline
Зарегистрирован: 01.08.2017

Доброго времени суток! Возник вопрос, подключаю панель "P10 16x32 white" к arduino uno, запускаю примеры из библиотеки DMD, изображение есть, только оно инвертировано, т.е. вся панель горит, а светодиоды рисунка не горят. В чем может быть проблема? Заранее спасибо.

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

 Я вот делал себе шрифт только с цифрами для секундомера с реальными 16х12 точек.

что для начала нужно понять - это как библиотека обрабатывает шрифт. 

в вашем случае (со шрифтом 3х6) нужно отрисовать эти шрифты, по точкам перевести в бинарник и бинарник перевести в HEX с помощью, например, этого сайта. Или перевести Экселем, для этого есть соответствующая формула. Ну а далее собираем файл. Вот мой шрифт с комментариями. Вам нужно сделать то же самое, только в кодировке символов будет меньше значений. А далее уже играемся с парааметрами вывода на саму матрицу, выбирая позиции для нужных вам выводимых значений

#include <inttypes.h>
#ifdef __AVR__
#include <avr/pgmspace.h>
#elif defined (ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif

#ifndef DIGIT_16_H
#define DIGIT_16_H

#define DIGIT_16_WIDTH 12
#define DIGIT_16_HEIGHT 16

static const uint8_t digit_16[] PROGMEM = {

    0x30, 0x3A, // size ????  48 x 58 - не понял что это :)
    0x0C, // width 12 - ширина символа
    0x10, // height 16 - высота символа
    0x30, // first char - ASCII код первого символа
    0x0B, // char count - количество символов в шрифте

// char widths - ширина символа
        0x0A, // 0
	0x0A, // 1
	0x0A, // 2
	0x0A, // 3
        0x0A, // 4
	0x0A, // 5
	0x0A, // 6
	0x0A, // 7
	0x0A, // 8
	0x0A, // 9
	0x03, // :

// font data - кодировка символов
	0xFC, 0xFE, 0xFF, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFE, 0xFC, 
	0x3F, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, 0x3F, // 48 - 0
	
	0x00, 0x00, 0x60, 0x70, 0x38, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, // 49 - 1
		
        0x3C, 0x3E, 0x3F, 0x03, 0x03, 0x03, 0x83, 0xFF, 0xFE, 0x7C,
	0xE0, 0xF0, 0xF8, 0xDC, 0xCE, 0xC7, 0xC3, 0xC1, 0xC0, 0xC0, // 50 - 2
	
        0x18, 0x1E, 0x07, 0xC3, 0xC3, 0xC3, 0xC3, 0xFE, 0xFC, 0x38, 
	0x18, 0x38, 0x78, 0xC0, 0xC0, 0xC0, 0xC0, 0x71, 0x7F, 0x1F, // 51 - 3
	
        0x00, 0x80, 0xE0, 0x38, 0x1E, 0xFF, 0xFF, 0xFF, 0x00, 0x00,  
	0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x07, 0x07, // 52 - 4
	
	0xF8, 0xFF, 0xFF, 0x63, 0x63, 0x63, 0x63, 0xE3, 0xC3, 0x83, 
	0x18, 0x38, 0x78, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x7F, 0x1F, // 53 - 5
	
        0xF8, 0xFE, 0x87, 0xC3, 0xC3, 0xC3, 0xC3, 0x87, 0x9E, 0x1C,
	0x1F, 0x7F, 0xE1, 0xC0, 0xC0, 0xC0, 0xC0, 0xE1, 0x7F, 0x1F, // 54 - 6
	
        0x07, 0x03, 0x03, 0x03, 0x83, 0xE3, 0xF3, 0x1F, 0x07, 0x03,
	0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x00, // 55 - 7
	
        0x3C, 0xFE, 0xFF, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFE, 0x3C,
	0x3F, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, 0x3F, // 56 - 8
	
        0xFC, 0xFE, 0xFF, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFE, 0xF8,
	0x21, 0x63, 0xE3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0x7F, 0x1F, // 57 - 9
	
	0x70, 0x70, 0x70, 0x1C, 0x1C, 0x1C, // 58 - ":"
};

#endif

 

kang2k
Offline
Зарегистрирован: 15.05.2015

Приветствую.

Наставьте на путь истинный. Досталось по случаю несколько панелей P10C4V12. двухцветные Ren и Green

Любые скетчи, которые есть в инете, выдают "мусор". Подключение к Arduino nano, сделаны по схеме

Пробовал и скетчи из начала темы и библиотеки DMD, DMD2

Что еще покурить ?

kang2k
Offline
Зарегистрирован: 15.05.2015

Дубль (

LVS
Offline
Зарегистрирован: 31.05.2017

Мусор покажи

kang2k
Offline
Зарегистрирован: 15.05.2015

Это из примера сообщения №40 Волгоград

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

А что получается на примерах из библиотек дмд? В данном случае я вижу неверные параметры по входу данных на модуль и обратную полярность сигналов

kang2k
Offline
Зарегистрирован: 15.05.2015

Это пример из библиотеки DMD2 ScrollingAlphabet

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

проверьте еще раз правильность подключения матрицы к ардуино. Где-то чтото не стыкуется. Я подключаю по этой схеме к Уно и Нано - все замечательно работает.

и поищите datasheet на вашу матрицу, что бы выяснить какой пин совпадает с нужной маркировкой

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

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

LED модуль P10C4V12
 
LED панели на обычных регистрах типа 74HC595. Они выпускаются как монохромные так двух и полно цветные, особенность, что они предназначены для текстовой информации и имеют один уровень яркости. Общую яркость панелей легко регулировать, а вот если будет желание каждого пикселя, то тут надо извращаться. Для создания текстовых, бегущих строк это то что надо.
 
Мне попался в руки двухцветный модуль P10C4V12 (красные и зеленые светодиоды), с разрешением 16*32 RG.
 
Как они подключаются? По питанию проблем не будет, тут все просто, колодка, с детальным описание GND и VСС напряжение питания номинальное 5 вольт. Для подключения в комплекте идут комплекте два силовых проводов красного и черного цвета, а также интерфейсный шлейф.
Интерфейс подключения, представляет собой 16 пиновый соединитель, назначение выводов следующее:
 
Дальше идет описание процесса подключения модулей на МК PIC24FJ64GA004, что в нашем случае уже не интересно.
Полная статья тут, требуется регистрация.
 
kang2k
Offline
Зарегистрирован: 15.05.2015

Hr.Smartus пишет:

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

LED модуль P10C4V12
Полная статья тут, требуется регистрация.

Да. Сатью видел. Она единственное что в инете находится по марке модели.

Подключение проверял неоднократно. Все нормально. Жду сейчас логический анализатор с китая, буду заниматься "реверс инжинирингом" ))) От контроллера BX-5U0, панель нормально показывает. А вот от ардуины не хочет.

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

китайские контроллеры самоятоятельно сканируют модули на полярность логических элеметнтов, потому и работает. А ардуино так  не умеет, по крайней мере, из коробки. Если кто напишет такой сканер - получит 40 девственниц еще при жизни =)

В вашем случае нужно добиться хотя бы инвертированного читаемого текста, а далее ковырять саму библиотеку и донастраивать нужные параметры. Ятак с модулями на max7219 игрался, результат положительный

tika
Offline
Зарегистрирован: 22.07.2015

Сори Hr.Smartus- бьюсь 3 день и не могу прицепить к скетчу данный шрифт. скажем под названием Font3x6. В чем ошибка может быть?

#include <SPI.h>
#include <DMD.h>
#include <TimerOne.h>
#include "Font3x6.h"
#include <Bounce2.h>
#define DISPLAYS_ACROSS 3
#define DISPLAYS_DOWN 1


---------------------------------------------------
  Timer1.initialize( 5000 );
  Timer1.attachInterrupt( ScanDMD );
  dmd.clearScreen( true );
  dmd.selectFont(Font3x6);
  print_time1(0);
  print_time2(0);

-----------------------------------

/*
 *
 * Font3x6
 *
 *
 * File Name           : Font3x6.h
 * Date                : 28 Oct 2008
 * Font size in bytes  : 470
 * Font width          : 3
 * Font height         : 6
 * Font first char     : 32
 * Font last char      : 127
 * Font used chars     : 94
 *
 * The font data are defined as
 *
 * struct _FONT_ {
 *     uint16_t   font_Size_in_Bytes_over_all_included_Size_it_self;
 *     uint8_t    font_Width_in_Pixel_for_fixed_drawing;
 *     uint8_t    font_Height_in_Pixel_for_all_characters;
 *     unit8_t    font_First_Char;
 *     uint8_t    font_Char_Count;
 *
 *     uint8_t    font_Char_Widths[font_Last_Char - font_First_Char +1];
 *                  // for each character the separate width in pixels,
 *                  // characters < 128 have an implicit virtual right empty row
 *
 *     uint8_t    font_data[];
 *                  // bit field of all characters
 */

#include <inttypes.h>
#ifdef __AVR__
#include <avr/pgmspace.h>
#elif defined (ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif

#ifndef DIGIT_16_H
#define DIGIT_16_H

#define DIGIT_16_WIDTH 12
#define DIGIT_16_HEIGHT 16

static const uint8_t digit_16[] PROGMEM = {

    0x30, 0x3A, // size ????  48 x 58 - не понял что это :)
    0x0C, // width 12 - ширина символа
    0x10, // height 16 - высота символа
    0x30, // first char - ASCII код первого символа
    0x0B, // char count - количество символов в шрифте

// char widths - ширина символа
        0x0A, // 0
	0x0A, // 1
	0x0A, // 2
	0x0A, // 3
        0x0A, // 4
	0x0A, // 5
	0x0A, // 6
	0x0A, // 7
	0x0A, // 8
	0x0A, // 9
	0x03, // :

// font data - кодировка символов
	0xFC, 0xFE, 0xFF, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFE, 0xFC, 
	0x3F, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, 0x3F, // 48 - 0
	
	0x00, 0x00, 0x60, 0x70, 0x38, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, // 49 - 1
		
        0x3C, 0x3E, 0x3F, 0x03, 0x03, 0x03, 0x83, 0xFF, 0xFE, 0x7C,
	0xE0, 0xF0, 0xF8, 0xDC, 0xCE, 0xC7, 0xC3, 0xC1, 0xC0, 0xC0, // 50 - 2
	
        0x18, 0x1E, 0x07, 0xC3, 0xC3, 0xC3, 0xC3, 0xFE, 0xFC, 0x38, 
	0x18, 0x38, 0x78, 0xC0, 0xC0, 0xC0, 0xC0, 0x71, 0x7F, 0x1F, // 51 - 3
	
        0x00, 0x80, 0xE0, 0x38, 0x1E, 0xFF, 0xFF, 0xFF, 0x00, 0x00,  
	0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x07, 0x07, // 52 - 4
	
	0xF8, 0xFF, 0xFF, 0x63, 0x63, 0x63, 0x63, 0xE3, 0xC3, 0x83, 
	0x18, 0x38, 0x78, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x7F, 0x1F, // 53 - 5
	
        0xF8, 0xFE, 0x87, 0xC3, 0xC3, 0xC3, 0xC3, 0x87, 0x9E, 0x1C,
	0x1F, 0x7F, 0xE1, 0xC0, 0xC0, 0xC0, 0xC0, 0xE1, 0x7F, 0x1F, // 54 - 6
	
        0x07, 0x03, 0x03, 0x03, 0x83, 0xE3, 0xF3, 0x1F, 0x07, 0x03,
	0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x00, // 55 - 7
	
        0x3C, 0xFE, 0xFF, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFE, 0x3C,
	0x3F, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, 0x3F, // 56 - 8
	
        0xFC, 0xFE, 0xFF, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFE, 0xF8,
	0x21, 0x63, 0xE3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0x7F, 0x1F, // 57 - 9
	
	0x70, 0x70, 0x70, 0x1C, 0x1C, 0x1C, // 58 - ":"
};

#endif
 

 

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

Ну, во-первых, у нас в #include стоят кавычки "", а должны быть <> - это большая разница.
Во-вторых, чтобы напрямую задавать шрифт без указания пути, сам файл со шрифтом должен лежать в одной папке со скетчем (тогда при запуке скетча в Arduino IDE он будет открываться в соседней вкладке). Если шрифты у вас лежат не рядом со скетчем, обычно их помещают в папке font в папке с библиотекой. И обращаются к ним соответственно через #include <fonts/digit.h>
Попробуйте для начала имправить это. Если получится - возможно пролбема с самим шрифтом, может не так сохранили или еще что-то. Вот ссылка на GitHub на мой шрифт, попробуйте подставить именно его.

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

Народ, появились новые интересные матрицы - тот же DMD P10, но на SMD-светодиодах. Особенности:
- модуль тоньше и заметно легче обычной матрицы
- энергопотребление немного ниже, чем в обычных матрицах, что не может не радовать
- распиновка та же, что и на обычных Р10, что позволяет подключать их в уже существующие проекты на Ардуино
- при использовании стандартных примеров и скетчей. написанных под старые матрицы, есть неприятный момент - матрица дает инвертированное изображение. Если для библиотеки DMD описание инверсии вроде тут мелькало, то для DMD2 ничего нет, если у кого-то был опыт - отпишитесь как этим бороться, это будет полезная инфа

tika
Offline
Зарегистрирован: 22.07.2015
папка new_Font лежит в C:\Program Files (x86)\Arduino\libraries\DMD 
new_Font -название шрифта с Вашем файлом.
Ошибка -
Arduino: 1.6.0 (Windows 8), Плата "Arduino Uno"
 
sketch_dec26aOOOOO.ino: В функции 'void setup ()':
sketch_dec26aOOOOO.ino: 74: 18: ошибка: «new_Font» не был объявлен в этой области
Ошибка компиляции.
меняю все на SystemFont5x7 -Все работает. Так проблема в Вашем файле?
 
#include <SPI.h>
#include <DMD.h>
#include <TimerOne.h>
#include <new_Font.h>
#include <Bounce2.h>
#define DISPLAYS_ACROSS 3
#define DISPLAYS_DOWN 1
-------------------------------
 Timer1.initialize( 5000 );
  Timer1.attachInterrupt( ScanDMD );
  dmd.clearScreen( true );
  dmd.selectFont(new_Font);
  print_time1(0);
  print_time2(0);
 
 
-------------------------------------
Есть ВОПРОС- Как можно на панели P-10 вписать в скечь две точки постояно светящие без изменения между цифрами.
 
unsigned char screen [128]; //Видеопамять
char sl1 [] = {//Символ ": " Я не знаю -метон подбора 20,4
};
void setup() {
 for(int i = 0; i < 128; i++) //Очистка видеопамяти
{
screen[i] = 0;
};
}
void loop() {
digitalWrite(pinEn, HIGH);
 }
if (vrem == pa) {
for(int i = 0; i < 128; i++)
 
 
Может в таком духе как из первых постов?

 

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017
dmd.drawChar( 15,  3, ':', GRAPHICS_OR);

это из примера библиотеки ДМД. 15 и 3 - отсутупы слева и сверху. Выставляете нужное положение методом подбора и все, двоеточие будет всегда на одном месте. Следите только чтобы другие смволы на эту позицию не залезали, иначе начнется каша.

Насчет шрифта - не могу сказать в чем проблема. Я использую DMD2 и там все работает предельно просто. Попробуйте перенести файл шрифта в папку с самим скетчем. Или подставить мой файл шрифта с гитхаба - возможно вы чтото не так собрали в шрифтовом файле. Или переписать проект под либу DMD2, если вам не нужна бегущая строка (в DMD2 она боле дерганная, чем в DMD)

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

лично я с матрицами дело не имел, так что выложить ничего не смогу,

судя по тому что я вычитал в DMD2.cpp (и если я правильно понял) - да, только прописав в параметрах вызываемой процедуры GRAPHICS_INVERSE вы получите инверсионное изображение и естественно только в тех функциях где это реализовано, соответсвенно смотрим исходник каждой нужной процедуры.

часть процедур вообще никак этот параметр не обрабатывают :(

например 

      case GRAPHICS_INVERSE:

пусто в обработке - дописывать самим :(

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

Такс, методом проб и ошибок вышло следующее:
ДЛЯ ИНВЕРТИРОАННОЙ МАТРИЦЫ

добавляем в Setup() строку dmd.fillScreen(true); - эта команда заливает всю матрицу, НО в нашем случае она наоборот ее очистит.

Далее в коде в строку вывода добавляем параметр GRAPHICS_INVERSE, что даст инверсию поступаемых данных.

В итоге мы имеем залитую черным матрицу и красные буквы!

Вот пример кода:

#include <SPI.h>
#include <DMD2.h>
#include <fonts/Droid_Sans_16.h>
const int WIDTH = 1;
const int HEIGHT = 1;
String text = "hello!";
SoftDMD dmd(WIDTH,HEIGHT);

void setup() {
  Serial.begin(9600);
  dmd.setBrightness(55);
  dmd.begin();
  dmd.selectFont(Droid_Sans_16);
  dmd.fillScreen(true);
  
}

void loop() {
  dmd.drawString(1,1, String(text), GRAPHICS_INVERSE);
  }

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

------------------------

dmd.drawString - работает. Остальные похоже нет

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Hr.Smartus пишет:

 

dmd.drawString - работает. Остальные похоже нет

я же вам выше написал: открываете исходник нужной процедуры - смотрите есть ли обработка параметров, если нет то или добавляете или тупо переписываете под себя (я так и делал) - дешево и сердито.

tika
Offline
Зарегистрирован: 22.07.2015

Спасибо-разобрался. Вопрос -сюда можно (   sprintf(buffer1, "%02d.%02d,%03d", mins, secs, fractime);   врезать дветочие (:)  убрав точку или запятую в  сикундамер - что бы замятая или точка не занимала место по выбраному шрифту 5х7 а меньше (уже- :)

 secs = inttime;
  sprintf(buffer1, "%02d%02d%03d", mins, secs, fractime);
  dmd.drawString( 1, 0, buffer1, 9, GRAPHICS_NORMAL );

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

А хз :) можно что в процедуру вставить или нет)
Вы бы для начала весь текст процедуры привели, тут на форуме есть супер программисты (не я) думаю разберёмся.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

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

tika
Offline
Зарегистрирован: 22.07.2015

Спасибо- думаю шрифт искать или рисовать типа 3х5

tika
Offline
Зарегистрирован: 22.07.2015

пробовал в GLCD Font - чесно не получается каля баля. А нужно 1234567890 и : ;

что- то есть там хитрое такое.

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

Ничего там хитрого нет. GLCD Font не панацея, я свой шрифт в Excel'e собирал.

Из моего примера. Берем символ "0". Вот его код:

0xFC, 0xFE, 0xFF, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFE, 0xFC,
0x3F, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, 0x3F, // 48 - 0

Берем первую строку и переводим в бинарник, получаем следующее:

11111100 
11111110 
11111111 
00000011 
00000011
00000011 
00000011
11111111
11111110 
11111100

и видим верхнюю часть нашего нуля. Аналогично работаем и с нижней.

В Вашем случае будет только одна строка, т.к.  шрифт будет высотой не больше 8 точек.

Для тоге, чтобы собрать шрифт, нужно отрисовать его в двоичном виде и перевести его в HEX. Также нужно правильно прописать в начале шрифтового файла ширину символов.

З.Ы. Я правда не совсем представляю читабельность шрифта размером 3х5 точек. В любом случае, инструкции уже написаны и разжеваны, нужно сесть и сделать. Пока не начнешь делать, не поймешь как это устроено

tika
Offline
Зарегистрирован: 22.07.2015

ВРОДЕ ВСЕ ТАК. Но в GLCDFont – устанавливаешь высоту-ширину шрифта, в секторе 3х5 прорисовываешь цифры, транспортируешь, устанавливаешь в Font b и тгд... и  все не работает. В чем секрет. Да и ваш фаил не цепляется и не работает. Что, все специально не делятся. В GLCDFont- до безобразия так просто - а итоге не работает. Да и почему так мало по сути шрифтов по размерам? В программе бегу шей строке все лаконично и выбор ох как богат.

Это то-же самое, что с NRF24L01+ работа ТРАНСИВЕРА (Прием и передача) где нормальные примеры? Где исходники в лучшем фай HEX и все.

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

GLCDFont создает шрифт не в том виде, которые ест библиотека DMD, очередность пикселей другая. Потому я говорю про другие инструменты для создания шрифта. GLCDFont я использовал только для прориовки самого символа, чтобы видеть какой он вообще получится. но сам шрифт я сводил вручную и у меня все прекрасно работает

tika
Offline
Зарегистрирован: 22.07.2015

Нород - Я вчера в космос туда и обратно летал. Да сколько можно пузырями мыльными- просят шрифтом поделится -.А в итоге где и как у вас работает. Я вам луну покажу. Это то-же самое, что с NRF24L01+ работа ТРАНСИВЕРА (Прием и передача) где нормальные примеры? Где исходники в лучшем фай HEX и все.

 

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

Народ, столкнуля с такой проблемой: на ардуино, ведущую DMD, передается кириллица, отличная от русского (украинские символы). Конкретно запоролся на символах ЄєЇїІі. И вот какая фигня: Отправляется буква правильно - принимается ардуино правильно - на ДМД выходит буква "ф" вместо буквы "Є".

Ковыряюсь второй день, выяснилось, что бблиотека отрабатывает только младший байт в кириллице,а старший игнорирует.

В итоге имеем такую картину:

\xd1\x84  //буква "ф"
\xd0\x84 // буква "Є"

В итоге библиотке хавает только "х84" и выдает подходящую по коду букву.

Кто знает, как с этим бороться? Ранее ставили такой костыль: т.к. эти буквы находятся на клавиатуре на месте русских ЭэЪъЫы, в исходном тексте прописывались именно эти буквы, а в самой библиотеке подставлялась битная матрица нужных символов укр.алфавита. Но это именно костыль, надо бы найти более логичное решение проблемы.

 

З.Ы. выложил подправленный шрифт для цыфр и некоторых символов с размером 16*10 точек Github

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

В общем было решено оставить все как есть с некоторыми примочками

Текст засылается в исходном виде, на ардуино текст преобразовуется таким вот способом:

  slovo2.replace("І", "Ы");
  slovo2.replace("Є", "Э");
  slovo2.replace("Ї", "Ъ");
  slovo2.replace("і", "ы");
  slovo2.replace("є", "э");
  slovo2.replace("ї", "ъ");

и в самом шрифте были заменены НЕХы букв ЭЪЫ на ЄЇІ. В итоге на дисплее отображается все как надо и колхозить с исходным текстом не приходится.

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

Hr.Smartus
Offline
Зарегистрирован: 27.05.2017

Еще один числовой шрифт 16х8 для DMD/DMD2. Только цыфры 0-9 Github

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

MikSer пишет:

Со шрифтами история очень веселая, но решаемая при помощи волшебной проги GLCD Font Creator https://code.google.com/p/glcd-arduino/downloads/detail?name=GLCDFontCreator2.zip&can=2&q=

она на Java. 

Создаеш свой шрифт и экспортируеш, ложищ его в папку DMD библиотеки. В зависимости как его назвал в исходнике объявляеш его.

#include "Small.h"
.................
dmd.selectFont(new_Font);

new_Font имя шрифта, что в мастере шрифтов указали. И все.

По поводу яркости тут есть модифицированная либа http://forum.freetronics.com/viewtopic.php?f=26&t=278&start=20#p2133

 

MikSer - только на Вас уповаю...))

Два дня туплю (как и положено новичку конечно)) - не как не могу сделать свой шрифт ((.

Ваш "кусок кода" и шрифт русский в качестве примера, он у меня работает но надпись не влазит (у меня 96х16 табло), широкий/жирный, хочу сделать тоже самое (16 шрифт русский для UNO) но тонкий/узкий, перечитал и перепробовал кучу всего, но явно не хватает знаний (в кодировках и С++) - не могу правильно сделать Main_Font - использовал LCDVision и GLCDFontCreator2, но видимо значения/настроцки не те ввожу - не получается заменить Ваш шрифт своим - и Ваш изменить - перерисовать тоже не соображу как - точнее как понимаю, нужно перекодировать нужные символы, но ньансы выше обозначенные не позволяют ((. 

по существу - подскажите как создать файлик Main_Font_2 - ссылка www.apetech.de/fontCreator - не рабочая уже, да и мне нужно знать какие именно настройки ставить в аналоге - что бы он работал так же как Ваш

занимаюсь лед дисплеями, использую контроллеры специализированные, но встала задача внешнего управления на кнопках, надо 4 слова всего написать для солдат, гололёд, снег и т.п - мои БЭИКСЫ и про прочие Листены при всей своей мощи не подходят, в общем прошу тыкнуть мну носом куда надо - заранее благодарен всем не равнодушным! 

matrix40
Offline
Зарегистрирован: 22.06.2018
подскажите  пож-та  можете  ли  вы продать готовый набор для народного
мониторинга (температура, влажность, давление, радиация).
И можете  ли вы продать контроллер для бегущей строки (2ряда по 16модулей
16*32 P10) для отображения время, дата,  температура, влажность, давления и радиации?
kostosspb
Offline
Зарегистрирован: 10.07.2018

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

У меня аналогичная матрица, как в сообщении http://arduino.ru/forum/apparatnye-voprosy/svyazka-mega2560-s-p10-led-module?page=4#comment-294365. Пробовал различные варианты, но ничего так и не заработало. Может кто-нибудь за это время сталкивался с чем-то похожим. Буду благодарен за любую информацию.

tika
Offline
Зарегистрирован: 22.07.2015

Hr.Smartus пишет:

Еще один числовой шрифт 16х8 для DMD/DMD2. Только цыфры 0-9 Github

Сори - с точками можно скинуть.