Вы уже год возитесь с этими шрифтами и до их пор не разобрались как их делать? Весь принцип построения шрифта вам разжевали, дали готовые примеры того как это выглядит и инструкции по формированию файла. Если до сих пор не появилось желание вникнуть в тему - используйте стандартные шрифты. Под заказ тут никто не будет вам его рисовать, у всех хватает своей работы и забот.
Накипело...
З.Ы. для своих целей в ближайшем будущем буду пилить русский шрифт такого же размера, если все еще не делаете свой - ждите мой, до сих пор это было не актуально
Стоп- Спасибо за внимание. Но из поста 242 видо и Вы пишете, что у вас все работает. а тут чо вы если наидете время будите пилить его. НЕСОГЛАСОВАННОСТЬ. на основания вашего отписке 2424 я и попросил с точками поделится - которые якобы у вас работают. Если вы просто откудо-то прицепили картинку то извините - Я не поадресу.
Здравствуйте! Проблема такого характера: освоил вывод различных данных на модули р10 на основе dip диодов, используя библиотеки dmd и dmd2. Но тут попали под руку модули на основе smd светодиодов. Вроде бы подключение тоже, но ничего не получилось. Не работает
У меня был небольшой опыт работы с такими модулями. Распиновка была та же, но изображение было инвертировано, где-то ранее на этом форуме писал как сделать нормально. Но не понравилось, что в некоторых местах появлялись странные засветы лишних диодов (процентов на 5 яркости). По этой причине было решено от них отказаться, да и dip диоды менять легче при выгорании. В любом случае, проверьте распиновка именно своей матрицы, там могли поменять какие-то выводы
Да я читал ту статью. У меня просто горит полоска 4х8 в правом верхнем углу и всё. Видимо модули разные. Да мне оже dip больше устраивют, просто хотел пристроить и эти
Есть ещё модули от компании Elecrow, у них же есть шилды на Уну/Мегу, там распиновка совершенно иная, матрицы smd и rgb, попробуйте ещё в эту сторону копнуть. Я купил такой шилд, но он мне не подошёл. Короче ищите маркировку пинов по этой матрице, дальше понятнее будет
Обозначения около разъема там такие:
F. F
N. F
N. F
N. F
N. F
N. D1
N. D2
N. F
А у dip модуля
OE. A
N. B
N. C
N. S
N. L
N. R
N. G
N. D
Перерыл все, не могу найти, вроде и марка известная Чанг Ли, p10c4v17
Можно попробовать найти контакты их манагера и запросить даташит. Также можно поискать их профили на Alibaba или Aliexpress и оттуда дёрнуть менеджера. Китайцы довольно общительные товарищи и могут подкинуть нужной инфы
может это поможет, «R» обозначает КРАСНЫЙ. Вы можете заметить неиспользуемый вывод «G», который для зеленого цвета на разъеме HUB12
/*--------------------------------------------------------------------------------------
Only 7 of the 16 pins on the DMD are actually used:
GND - Hopefully obvious
nOE - Enable / Disable ALL the LEDs on the DMD
A - A&B pins select which 1/4 of the DMD is selected
B - A&B pins select which 1/4 of the DMD is selected
CLK - Used to clock each pixel into the DMD shift registers
SCLK - Latches the current content of the DMD shift registers
R - The raw pixel data stream (NB: The 'R' stands for RED. You might notice an unused 'G' pin which is for Green on a HUB12 connector)
--------
nOE(D9) |1 2| A(D6)
Gnd |3 4| B(D7)
Gnd |5 6| C
Gnd |6 8| CLK(D13)
Gnd |7 10| SCLK(D8)
Gnd |11 12| R(D11)
Gnd |13 14| G
Gnd |15 16| D
---------
--------------------------------------------------------------------------------------*/
//Fire up the DMD library as dmd
По логике принципиальных различий быть не должно, если остальная элементная та же. Посмотрите ещё какие сдвиговые регистры стоят, если там не 74hc595, то могут быть отличия по управлению мартицей в целом.
Так что в целях "поиграться" можно таки добиться истины, но если надо срочно, то есть смысл отложить до более свободного времени
Самое интересное, что когда был контроллер заводской для бегущей строки, то он работает с dip модулями, а для работы с smd нужно менять его прошивку, тогда он и с этими начинает работать
Ну с дуиной все несколько иначе обстоит, либу Dmd явно забросили и никто не обновляет ее уже давно. Хотя тема годная, поднял на ней хороший проект.
Можно попробовать ещё полазить по форуму создателей библиотеки, я там много годной инфы нашел, заодно и английский подтянул))
Кстати вопрос к бывалым - никто не запускал эти модули с ДМД на стм32? Выше ли там частота обновления?
Почему не выводит русский шрифт на светодиодную панель при использовании библиотеке DMD2, при DMD выводит, т.е
#include <SPI.h> //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
#include <DMD.h> //
#include <TimerOne.h> //
#include "SystemFont5x7.h"
//#include "Arial_Black_16_ISO_8859_1.h"
//Fire up the DMD library as dmd
#define DISPLAYS_ACROSS 2 // количество экранов
#define DISPLAYS_DOWN 1
DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);
/*--------------------------------------------------------------------------------------
Interrupt handler for Timer1 (TimerOne) driven DMD refresh scanning, this gets
called at the period set in Timer1.initialize();
--------------------------------------------------------------------------------------*/
void ScanDMD()
{
dmd.scanDisplayBySPI();
}
/*--------------------------------------------------------------------------------------
setup
Called by the Arduino architecture before the main loop begins
--------------------------------------------------------------------------------------*/
void setup(void)
{
//initialize TimerOne's interrupt/CPU usage used to scan and refresh the display
Timer1.initialize( 3000 ); //period in microseconds to call ScanDMD. Anything longer than 5000 (5ms) and you can see flicker.
Timer1.attachInterrupt( ScanDMD ); //attach the Timer1 interrupt to ScanDMD which goes to dmd.scanDisplayBySPI()
//clear/init the DMD pixels held in RAM
dmd.clearScreen( true ); //true is normal (all pixels off), false is negative (all pixels on)
Serial.begin(115200);
}
/*--------------------------------------------------------------------------------------
loop
Arduino architecture main loop
--------------------------------------------------------------------------------------*/
void loop(void)
{
dmd.clearScreen( true );
dmd.selectFont(SystemFont5x7);
// Français, Österreich, Magyarország
const char *MSG = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя";
dmd.drawMarquee(MSG,strlen(MSG),(32*DISPLAYS_ACROSS)-1,0);
long start=millis();
long timer=start;
while(1){
if ((timer+25) < millis()) {
dmd.stepMarquee(-1,0);
timer=millis();
}
}
}
Этот работает и все выводит, ниже только латинские буквы, русские нет.
#include <SPI.h>
#include <DMD2.h>
#include "SystemFont5x7rus.h"
//#include <fonts/Arial_Black_16_ISO_8859_1.h>
// Set Width to the number of displays wide you have
const int WIDTH =2;
// You can change to a smaller font (two lines) by commenting this line,
// and uncommenting the line after it:
const uint8_t *FONT = SystemFont5x7;
const char *MESSAGE = "QWERTY ЙЦУКЕН";
SoftDMD dmd(WIDTH,1); // DMD controls the entire display
DMD_TextBox box(dmd); // "box" provides a text box to automatically write to/scroll the display
// the setup routine runs once when you press reset:
void setup() {
Serial.begin(9600);
dmd.setBrightness(255);
dmd.selectFont(FONT);
dmd.begin();
}
// the loop routine runs over and over again forever:
void loop() {
const char *next = MESSAGE;
// dmd.selectFont(FONT);
while(*next) {
Serial.print(*next);
box.print(*next);
delay(200);
next++;
}
}
Это не от названия шрифта, в верхнем я просто в папку со скетчем положил и переименовал, думал может откудато еще другой шрифт подтягивается, смотри в самом шрифте строки 21 и 23 соответсвенно. Пробовал переименовывать и с DMD2 - не помогло. Может есть другой побольше шрифт с русскими буквами? Поделитесь, пожалуйста.
вот накатал маленький тестовый пример с помощью которого можно увидеть
соответствуют ли символы в вашем шрифте таблице символов ascii Кодовая таблица 1251 – MS Windows
слева вверху будет номер символа а справа внизу соответствующий символ.
если справа внизу пусто значит символа в шрифте нет
с 48 по 57 цифры
английские символы начинаются с 65 по 90 Заглавные
малые с 97 по 122
руские с 192 по 223 заглавные
и с 224 по 255 малые
// create by dneese fb.com/explod
/*--------------------------------------------------------------------------------------
Includes
--------------------------------------------------------------------------------------*/
#include <SPI.h> //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
#include <DMD.h> //
#include <TimerOne.h> //
#include "SystemFont5x7.h"
#include "Arial_Black_16_ISO_8859_1.h"
//Fire up the DMD library as dmd
#define DISPLAYS_ACROSS 1
#define DISPLAYS_DOWN 1
DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);
const int COUNTDOWN_FROM = 0;
int counter = COUNTDOWN_FROM;
char b[8];
String str;
/*--------------------------------------------------------------------------------------
Interrupt handler for Timer1 (TimerOne) driven DMD refresh scanning, this gets
called at the period set in Timer1.initialize();
--------------------------------------------------------------------------------------*/
void ScanDMD()
{
dmd.scanDisplayBySPI();
}
/*--------------------------------------------------------------------------------------
setup
Called by the Arduino architecture before the main loop begins
--------------------------------------------------------------------------------------*/
void setup(void)
{
//initialize TimerOne's interrupt/CPU usage used to scan and refresh the display
Timer1.initialize( 3000 ); //period in microseconds to call ScanDMD. Anything longer than 5000 (5ms) and you can see flicker.
Timer1.attachInterrupt( ScanDMD ); //attach the Timer1 interrupt to ScanDMD which goes to dmd.scanDisplayBySPI()
//clear/init the DMD pixels held in RAM
dmd.clearScreen( true ); //true is normal (all pixels off), false is negative (all pixels on)
Serial.begin(115200);
}
/*--------------------------------------------------------------------------------------
loop
Arduino architecture main loop
--------------------------------------------------------------------------------------*/
void loop(void)
{
if(counter < 260) { //
counter++ ; // прибавляем
str=counter;
str.toCharArray(b,6); // конвертим интеджер в стринг
dmd.clearScreen( true );
dmd.selectFont(SystemFont5x7);
dmd.drawString( 1, 1,b, 5, GRAPHICS_NORMAL );//напечатаем номер в таблице символов ascii
dmd.drawChar( 26, 8, counter, GRAPHICS_NORMAL );// напечатаем символ
}
delay(1000); // Do not get immediate repeat
}
происходит путаница, возьмите скетч для печати из компорта на матрицу
подставте свой шрифт и печатайте в мониторе порта русские буквы по одной
то что будет соответствовать выведеному на матрицу увидите и сравните в файле шрифта, таким образом
попереставляете на нужные места нужные буквы правильно. А результатом поделитесь с обществом.
#include <SPI.h> //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
#include <DMD.h> //
#include <TimerOne.h> //
#include "SystemFont5x7.h"
char stringa[20];
int i = 0;
//Fire up the DMD library as dmd
#define DISPLAYS_ACROSS 1
#define DISPLAYS_DOWN 1
DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);
void ScanDMD()
{
dmd.scanDisplayBySPI();
}
void setup(void)
{
//initialize TimerOne's interrupt/CPU usage used to scan and refresh the display
Timer1.initialize( 500 ); //period in microseconds to call ScanDMD. Anything longer than 5000 (5ms) and you can see flicker.
Timer1.attachInterrupt( ScanDMD ); //attach the Timer1 interrupt to ScanDMD which goes to dmd.scanDisplayBySPI()
dmd.selectFont(SystemFont5x7);
//clear/init the DMD pixels held in RAM
dmd.clearScreen( true ); //true is normal (all pixels off), false is negative (all pixels on)
Serial.begin(9600);
}
void loop(void)
{
// Read line from Serial
memset(stringa, 0, sizeof(stringa)); // set string contents to zero
Serial.setTimeout(100); // second input timeout
i = Serial.readBytesUntil('\n', stringa, sizeof(stringa)-1); // Read line of input
if(i > 0) { // Display line if anything was read
Serial.println(stringa);
dmd.clearScreen(true);
dmd.drawString( 0, 0, stringa , strlen(stringa), GRAPHICS_NORMAL );
}
}
Уважаемый dneese спасибо! сделал как написано выше, попробовал ваш шрифт, всё работает.
Подумал прикрутить к этому всему bluetooth и сделать как у этого чувака https://create.arduino.cc/projecthub/abhijitbrain/wireless-notice-board-arduino-uno-dmd-9ff29e но сталкнулся с проблемкой, не выводится русские символы. Делал я так, русифицированный шрифт положил в папку с библиотекой DMD и на всякий случай еще и в папку со скетчем. Скетч я использовал как в статье, добавив русский таким образом #include "SystemFont5x7rus.h" и dmd.selectFont(SystemFont5x7); в итоге подключившись кbluetooth я отправляю в терминал английские буквы и они высвечиваются на "табло" как и положено, а вот русские буквы не совсем т.е. я к примеру пишу "привет" а высвечивается "р р ро," и т.д. в чём может быть проблема? подскажите пожалуйста товарищи!
переименовал #include "SystemFont5x7rus.h" в "SystemFont5x7.h" и dmd.selectFont(SystemFont5x7) вроде это особой роли не играет, но могу ошибаться.
преобразовал кодировку в ANSI через Notepad++ (надеюсь это так делается) сменил текст в скетче на "привет всем" и он действительно стал отображаться на панеле, но когда я пытаюсь с телефона отправить текст "привет" на русском снова выходит "p с рёрip c," английские символы отображаются нормально
А с телефона подозреваю текст отпраляете приложением блютуз терминал, но кодировку charset в настройках с utf8 не переключили на windows 1251 как в шрифте библиотеки.? На крайний случай можно отправлять utf8 и конвертить как написано тут
Дорого времени суток. Нужна помощь. Имеется ардуино уно, светодиодная панель P10 32x16, минимальный опыт работы с ардуино и огромное желание "сотворить девайс". Суть устройства вот в чем. На дисплее 4 цифры с разделительными точками 00:00 (как для часов). К пинам 0, 1, 2, 3 подключены одноименные кнопки с общим плюсом. Каждое нажатие на кнопку 0 увеличивает значение старшего разряда на единицу от 0 до 9 по кругу . Остальные кнопки работают аналогично: 1, для третьего разряда, 2 для второго разрада и 3 для первого, самого младшего. Цифры на дисплей выводятся, значения программно меняются. А вот как это реализовать на кнопках разобраться не могу. Буду благодарен за любую подсказку.
Читал и пробовал, пробовал и читал... неделю уже как бьюсь. Использую модифицированный скетч из DMD, examples, dmd_clock_readout.pde. Убрал на мой взгляд лишнее, отцентровал. А куда прикрутить digitalReade мозгов не хватает. Посмотрите пож. скетч, если не затруднит - на правильном пути хоть? А если подправите на примере одной кнопки, буду безмерно благодарен. Спасибо. P.S. Девайс сей будет использоваться в детском саду для спортивных соревнований.
#include <SPI.h> //
#include <DMD.h> //
#include <TimerOne.h> //
#include "Arial_black_16.h"
DMD dmd(1,1);
void ScanDMD()
{
dmd.scanDisplayBySPI();
}
void ShowClockNumbers( unsigned int uiTime, byte bColonOn )
На Ваш скетч ругается, компилироваться не хочет. Такое впечатление, что unsigned int ui; не в том месте стоит. Вернул ее в void loop, компилируется и работает, но работает криво. Во первых дисплей мерцает с интервалом в одну секунду (но думаю, это благодаря delai). Во вторых нажатием на одну из кнопок прибавляется единица и сразу обнуляется. Помоготе навести порядок в скетче. Пожалуйста.
#include <SPI.h> //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
#include <SPI.h> //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
#include <DMD.h> //
#include <TimerOne.h> //
#include "Arial_black_16.h"
//Fire up the DMD library as dmd
DMD dmd(1,1);
/*--------------------------------------------------------------------------------------
Interrupt handler for Timer1 (TimerOne) driven DMD refresh scanning, this gets
called at the period set in Timer1.initialize();
--------------------------------------------------------------------------------------*/
void ScanDMD()
{
dmd.scanDisplayBySPI();
}
/*--------------------------------------------------------------------------------------
Show clock numerals on the screen from a 4 digit time value, and select whether the
flashing colon is on or off
--------------------------------------------------------------------------------------*/
void ShowClockNumbers ( unsigned int uiTime, byte bColonOn )
{
dmd.clearScreen(true);
dmd.drawChar( 0, 1, '0'+((uiTime%10000)/1000), GRAPHICS_NORMAL ); // thousands
dmd.drawChar( 8, 1, '0'+((uiTime%1000) /100), GRAPHICS_NORMAL ); // hundreds
dmd.drawChar( 17, 1, '0'+((uiTime%100) /10), GRAPHICS_NORMAL ); // tens
dmd.drawChar( 25, 1, '0'+ (uiTime%10), GRAPHICS_NORMAL ); // units
dmd.drawChar( 15, 3, '.', GRAPHICS_OR ); // clock colon overlay on
}
/*--------------------------------------------------------------------------------------
setup
Called by the Arduino architecture before the main loop begins
--------------------------------------------------------------------------------------*/
void setup(void)
{
//initialize TimerOne's interrupt/CPU usage used to scan and refresh the display
Timer1.initialize( 5000 ); //period in microseconds to call ScanDMD. Anything longer than 5000 (5ms) and you can see flicker.
Timer1.attachInterrupt( ScanDMD ); //attach the Timer1 interrupt to ScanDMD which goes to dmd.scanDisplayBySPI()
//clear/init the DMD pixels held in RAM
dmd.clearScreen( true ); //true is normal (all pixels off), false is negative (all pixels on)
dmd.selectFont(Arial_Black_16);
pinMode(1, INPUT); // устанавливает режим работы - вход для 1го вход/выхода (pin)
pinMode(2, INPUT); // устанавливает режим работы - вход для 2го вход/выхода (pin)
pinMode(3, INPUT); // устанавливает режим работы - вход для 3го вход/выхода (pin)
pinMode(4, INPUT); // устанавливает режим работы - вход для 4го вход/выхода (pin)
}
/*--------------------------------------------------------------------------------------
loop
Arduino architecture main loop
--------------------------------------------------------------------------------------*/
void loop(void)
{
unsigned int ui;
// 10 x 14 font clock, including demo of OR and NOR modes for pixels so that the flashing colon can be overlayed
ui = 0000;
ShowClockNumbers( ui, true );
delay( 100 );
{
if(digitalRead(1)==HIGH)//если кнопка нажата ..
{
ui = ui+1; // прибавляем 1
ShowClockNumbers( ui, true );
}
if(digitalRead(2)==HIGH)//если кнопка нажата ..
{
ui = ui+10; // прибавляем 10
ShowClockNumbers( ui, true );
}
if(digitalRead(3)==HIGH)//если кнопка нажата ..
{
ui = ui+100; // прибавляем 100
ShowClockNumbers( ui, true );
}
if(digitalRead(4)==HIGH)//если кнопка нажата ..
{
ui = ui+1000; // прибавляем 1000
ShowClockNumbers( ui, true );
}
delay( 1000);
}
}
уважаемый tika!
Вы уже год возитесь с этими шрифтами и до их пор не разобрались как их делать? Весь принцип построения шрифта вам разжевали, дали готовые примеры того как это выглядит и инструкции по формированию файла. Если до сих пор не появилось желание вникнуть в тему - используйте стандартные шрифты. Под заказ тут никто не будет вам его рисовать, у всех хватает своей работы и забот.
Накипело...
З.Ы. для своих целей в ближайшем будущем буду пилить русский шрифт такого же размера, если все еще не делаете свой - ждите мой, до сих пор это было не актуально
Стоп- Спасибо за внимание. Но из поста 242 видо и Вы пишете, что у вас все работает. а тут чо вы если наидете время будите пилить его. НЕСОГЛАСОВАННОСТЬ. на основания вашего отписке 2424 я и попросил с точками поделится - которые якобы у вас работают. Если вы просто откудо-то прицепили картинку то извините - Я не поадресу.
Здравствуйте!
У меня аналогичная матрица, как в сообщении http://arduino.ru/forum/apparatnye-voprosy/svyazka-mega2560-s-p10-led-module?page=4#comment-294365. Пробовал различные варианты, но ничего так и не заработало. Может кто-нибудь за это время сталкивался с чем-то похожим. Буду благодарен за любую информацию.
Почитай сдесь:
https://wiki.iarduino.ru/page/rgb-matrix/#
LA->A, LB->B, LC->C, остальные как в описании,
Синего, я так понимаю на твоей матрице нет?
// РИСУЕМ СВОЙ СИМВОЛ ( можно в exel), считаем и записываем нули и единички
// ПЕРЕВОДИМ С ПОМОЩЬЮ https://www.rapidtables.com/convert/number/ascii-hex-bin-dec-converter.html
//С Binary в HEX, с верху начиная с byte0,byte1,byte2,byte3,byte4,byte5,byte6,
//byte n, byte n-1, byte n-2, byte n-3, byte n4, byte n-5, byte n-6.
// получаем 0x0C, 0x0E, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, // 49 "1"
Здравствуйте! Проблема такого характера: освоил вывод различных данных на модули р10 на основе dip диодов, используя библиотеки dmd и dmd2. Но тут попали под руку модули на основе smd светодиодов. Вроде бы подключение тоже, но ничего не получилось. Не работает
У меня был небольшой опыт работы с такими модулями. Распиновка была та же, но изображение было инвертировано, где-то ранее на этом форуме писал как сделать нормально. Но не понравилось, что в некоторых местах появлялись странные засветы лишних диодов (процентов на 5 яркости). По этой причине было решено от них отказаться, да и dip диоды менять легче при выгорании. В любом случае, проверьте распиновка именно своей матрицы, там могли поменять какие-то выводы
Да я читал ту статью. У меня просто горит полоска 4х8 в правом верхнем углу и всё. Видимо модули разные. Да мне оже dip больше устраивют, просто хотел пристроить и эти
Есть ещё модули от компании Elecrow, у них же есть шилды на Уну/Мегу, там распиновка совершенно иная, матрицы smd и rgb, попробуйте ещё в эту сторону копнуть. Я купил такой шилд, но он мне не подошёл. Короче ищите маркировку пинов по этой матрице, дальше понятнее будет
А как здесь фото вставить?
Обозначения около разъема там такие:
F. F
N. F
N. F
N. F
N. F
N. D1
N. D2
N. F
А у dip модуля
OE. A
N. B
N. C
N. S
N. L
N. R
N. G
N. D
Перерыл все, не могу найти, вроде и марка известная Чанг Ли, p10c4v17
Какая-то странная маркировка... Попробуйте все же прикрепить фото, с телефона на сайте не смог нормально рассмотреть плату
Можно попробовать найти контакты их манагера и запросить даташит. Также можно поискать их профили на Alibaba или Aliexpress и оттуда дёрнуть менеджера. Китайцы довольно общительные товарищи и могут подкинуть нужной инфы
может это поможет, «R» обозначает КРАСНЫЙ. Вы можете заметить неиспользуемый вывод «G», который для зеленого цвета на разъеме HUB12
А вообще дело может быть только в различиях распиновки или есть ещё что-то dip и smd модулей?
По логике принципиальных различий быть не должно, если остальная элементная та же. Посмотрите ещё какие сдвиговые регистры стоят, если там не 74hc595, то могут быть отличия по управлению мартицей в целом.
Так что в целях "поиграться" можно таки добиться истины, но если надо срочно, то есть смысл отложить до более свободного времени
Самое интересное, что когда был контроллер заводской для бегущей строки, то он работает с dip модулями, а для работы с smd нужно менять его прошивку, тогда он и с этими начинает работать
Ну с дуиной все несколько иначе обстоит, либу Dmd явно забросили и никто не обновляет ее уже давно. Хотя тема годная, поднял на ней хороший проект.
Можно попробовать ещё полазить по форуму создателей библиотеки, я там много годной инфы нашел, заодно и английский подтянул))
Кстати вопрос к бывалым - никто не запускал эти модули с ДМД на стм32? Выше ли там частота обновления?
Микросхемы там стоят sm16188в
Почему не выводит русский шрифт на светодиодную панель при использовании библиотеке DMD2, при DMD выводит, т.е
Этот работает и все выводит, ниже только латинские буквы, русские нет.
шрифт один и тот же:
третий день уже, весь мозг сломал...причем в монитор порта русские выводит, а на панель - нет
обрати внимание на строку 04 и 44 в первом коде,
и посмотри на строки 03 и 12 во втором коде
да код шрифта имеет вопросы. какое всё ж его название?
Это не от названия шрифта, в верхнем я просто в папку со скетчем положил и переименовал, думал может откудато еще другой шрифт подтягивается, смотри в самом шрифте строки 21 и 23 соответсвенно. Пробовал переименовывать и с DMD2 - не помогло. Может есть другой побольше шрифт с русскими буквами? Поделитесь, пожалуйста.
Скачал другую версию библиотеки, хоть муть какую-то но на русских буквах стала выводить, тепрь хоть есть с чем разбираться.
с чего вы взяли что у вас русский шрифт?
вот накатал маленький тестовый пример с помощью которого можно увидеть
соответствуют ли символы в вашем шрифте таблице символов ascii Кодовая таблица 1251 – MS Windows
слева вверху будет номер символа а справа внизу соответствующий символ.
если справа внизу пусто значит символа в шрифте нет
с 48 по 57 цифры
английские символы начинаются с 65 по 90 Заглавные
малые с 97 по 122
руские с 192 по 223 заглавные
и с 224 по 255 малые
Ардуино IDE разве не кодировке UTF-8. Берем таблицу кодировки и получается что:
диапазону 0x80(128) — 0x8F(143) соответствуют маленькие буквы от «р» до «я»
с 0x90 и до 0xAF идут заглавные по порядку «А» — «Я» исключая «Ё»
и в хвосте с 0xB0 до 0xBF маленькие от «а» до «п». ?
происходит путаница, возьмите скетч для печати из компорта на матрицу
подставте свой шрифт и печатайте в мониторе порта русские буквы по одной
то что будет соответствовать выведеному на матрицу увидите и сравните в файле шрифта, таким образом
попереставляете на нужные места нужные буквы правильно. А результатом поделитесь с обществом.
выложу свой шрифт русифицированый под DMD
пробуйте отписывайте
https://youtu.be/pKU_4lISd2Y
а для DMD2 нужно изменить в файле DMD2-Text.cpp который в папке с библиотекой.
в строке 41:
на:
unsigned char
, дает вам как минимум диапазон от 0 до 255.Ардуино IDE разве не кодировке UTF-8. Берем таблицу кодировки и получается что:
диапазону 0x80(128) — 0x8F(143) соответствуют маленькие буквы от «р» до «я»
с 0x90 и до 0xAF идут заглавные по порядку «А» — «Я» исключая «Ё»
и в хвосте с 0xB0 до 0xBF маленькие от «а» до «п». ?
в IDE Arduino в файле preference только когда IDE Arduino не запущена
заменить в строчке 67 preproc.substitute_unicode=true
Уважаемый dneese спасибо! сделал как написано выше, попробовал ваш шрифт, всё работает.
Подумал прикрутить к этому всему bluetooth и сделать как у этого чувака https://create.arduino.cc/projecthub/abhijitbrain/wireless-notice-board-arduino-uno-dmd-9ff29e но сталкнулся с проблемкой, не выводится русские символы. Делал я так, русифицированный шрифт положил в папку с библиотекой DMD и на всякий случай еще и в папку со скетчем. Скетч я использовал как в статье, добавив русский таким образом #include "SystemFont5x7rus.h" и dmd.selectFont(SystemFont5x7); в итоге подключившись к bluetooth я отправляю в терминал английские буквы и они высвечиваются на "табло" как и положено, а вот русские буквы не совсем т.е. я к примеру пишу "привет" а высвечивается "р р ро," и т.д. в чём может быть проблема? подскажите пожалуйста товарищи!
ну во первых ссылку которую вы дали на чувака, ведёт на не существующую страницу
во вторых
Скетч я использовал как в статье, добавив русский таким образом #include "SystemFont5x7rus.h" и dmd.selectFont(SystemFont5x7);
в чём может быть проблема? подскажите пожалуйста товарищи!
#include "SystemFont5x7rus.h"
и
dmd.selectFont(SystemFont5x7);
разницу и ошибку не видите?
в третьих, преобразуй сам файл скетча в кодировку ANSI, ежели в IDE отключил юникод
ну а файл шрифта нужно ложить только в папку с библиотекой
https://www.youtube.com/watch?v=10yHjO0i3PA
за ссылку извиняюсь.
переименовал #include "SystemFont5x7rus.h" в "SystemFont5x7.h" и dmd.selectFont(SystemFont5x7) вроде это особой роли не играет, но могу ошибаться.
преобразовал кодировку в ANSI через Notepad++ (надеюсь это так делается) сменил текст в скетче на "привет всем" и он действительно стал отображаться на панеле, но когда я пытаюсь с телефона отправить текст "привет" на русском снова выходит "p с рёрip c," английские символы отображаются нормально
А с телефона подозреваю текст отпраляете приложением блютуз терминал, но кодировку charset в настройках с utf8 не переключили на windows 1251 как в шрифте библиотеки.? На крайний случай можно отправлять utf8 и конвертить как написано тут
Да, с блютуз терминала отправляю, но там не было настроек выбора кодировки, скачивал 3 разных приложения, но попробую потом и другие скачать.
Благодарю, на дня попытаюсь конвертировать.
\
\
взял первое попавшиеся приложение и там обнаружил настройки кодировки
эх, вот я лошара) со смены приду и попробую
Спасибо Вам dneese. Сменил кодировку в терминале и всё отображается как надо.
Дорого времени суток. Нужна помощь. Имеется ардуино уно, светодиодная панель P10 32x16, минимальный опыт работы с ардуино и огромное желание "сотворить девайс". Суть устройства вот в чем. На дисплее 4 цифры с разделительными точками 00:00 (как для часов). К пинам 0, 1, 2, 3 подключены одноименные кнопки с общим плюсом. Каждое нажатие на кнопку 0 увеличивает значение старшего разряда на единицу от 0 до 9 по кругу . Остальные кнопки работают аналогично: 1, для третьего разряда, 2 для второго разрада и 3 для первого, самого младшего. Цифры на дисплей выводятся, значения программно меняются. А вот как это реализовать на кнопках разобраться не могу. Буду благодарен за любую подсказку.
Достаточно почитать спраку по digitalRead
Читал и пробовал, пробовал и читал... неделю уже как бьюсь. Использую модифицированный скетч из DMD, examples, dmd_clock_readout.pde. Убрал на мой взгляд лишнее, отцентровал. А куда прикрутить digitalReade мозгов не хватает. Посмотрите пож. скетч, если не затруднит - на правильном пути хоть? А если подправите на примере одной кнопки, буду безмерно благодарен. Спасибо. P.S. Девайс сей будет использоваться в детском саду для спортивных соревнований.
DMD dmd(1,1);
не уверен что правильно но попробуйте так:
Ругается.
На Ваш скетч ругается, компилироваться не хочет. Такое впечатление, что unsigned int ui; не в том месте стоит. Вернул ее в void loop, компилируется и работает, но работает криво. Во первых дисплей мерцает с интервалом в одну секунду (но думаю, это благодаря delai). Во вторых нажатием на одну из кнопок прибавляется единица и сразу обнуляется. Помоготе навести порядок в скетче. Пожалуйста.
Зачем в loop ставите опять
ui = 0000 ?
Посмотрите мой пример ещё раз
Ну так не хочет компилироваться ... Я понимаю, что косячу, но как сделать правильно не хватает ума. К стати спасибо, что отозвались.
спасибо, что отозвались.
вставь код правильно, тогда может кто и поможет.
Код из сообщения 292 любезно предоставленный форумчанином не хочет компилироваться. Этот компилируется, но работает криво.
что у Вас там не компилируется? вот скрин, всё работает
https://images2.imgbox.com/7b/4e/HzqzEoSu_o.png
вопросы по ошибкам компиляции в других темах.
Читайте код и по коду задавайте вопросы, а мы ответим если будем знать ответ.
Вы в Loop тулите переменную и назначаете её значение 0000, потом нажимаете кнопку меняете значение
и спрашиваете почему опять 0000? читаёте спавку что такое loop, это цикл который повторяется
ui = 0000; ставте в сетуп, одноразовое выполнение в начале программы
ну и вывод на екран ShowClockNumbers( ui, true ); тоже раз выведите в начале
потом в лупе отсеживайте статус нажатия кнопки, если оно изменилось то прибавляйте значение переменной.
делей вам вообще не нужен.