Библиотека для отображения бегущего текста (матрица 8х8)

Fluffy
Offline
Зарегистрирован: 01.06.2011

Добрый вечер.

Совсем недавно приобрел плату аналог ардуино мега. Подключил светодиодную матрицу 8х8 светодиодов. Разобрался с выводом на "экран", но только поочередно. "бегущий" текст не получается реализовать. Может быть есть библиотека для ардуино ide, в которой уже реализованы данные функции? если есть, подскажите как называется и где можно скачать. 

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

 как подключили? схему плиз. 

Fluffy
Offline
Зарегистрирован: 01.06.2011

схема

http://www.kosmodrom.com.ua/pdf/RL-M2388SBW_C15_78.pdf

ROW: 1    2   3   4   5  6   7   8                       COL: 1    2  3  4   5   6   7   8  

PIN:  23  25 27 29 31 33 35 37                     PIN: 39 41 43 45 47 49 51 53

 

Fluffy
Offline
Зарегистрирован: 01.06.2011

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

Ulan
Offline
Зарегистрирован: 10.03.2011

 Поделись как решил это, тоже интересно.

Fluffy
Offline
Зарегистрирован: 01.06.2011

 в теории так:

Написал 3 функции: отрисовка текста, прокрутка текста, обновление экрана(очищение).

Отрисовка: экран - массив интеджеров 8 на 8. забит нолями и единицами - в зависимости от символа. далее в цикле проверяем, если элемент = 1, то включаем этот пиксель(светодиод), задерживаем его включенным, обновляем экран.

Обновление: выключение работающего светодиода.

Прокрутка: 1й столбец матрицы записываю в буфер,  2й столбец записываю в 1й и так далее.. а в последний столбец записываю стобец из буфера. все.

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Выложите код, фотографии и видео будет всем интересно 

Fluffy
Offline
Зарегистрирован: 01.06.2011

 Подскажите, как и куда вылаживаются у Вас на форуме фото и видео?) 

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Видео на ютуб, картинки на fastpic.ru, а от туда ссылки. Можете выложить всё одним архивом на https://www.rapidshare.com/ а я уже выложу всё здесь. Ссылку от рапида сюда только не забудьте выложить

Fluffy
Offline
Зарегистрирован: 01.06.2011
Fluffy
Offline
Зарегистрирован: 01.06.2011

" интересная цацка эта матрица. с выводом текста и скроллинга уже разобрался, благо уже много есть на него в тырнете)))"  

Adessit, нашел на форуме Вы писали. поделитесь Вашим методом вывода и скроллинга?

 

Кстати, разобрался и со сокростью скроллинга. Управляю с компа)

Ulan
Offline
Зарегистрирован: 10.03.2011

 Здорово. Интересно, а как можно их объединить в серию.

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

В серию обьеденить с помощью сдвиговых регистров или драйверов) Есть пример на нашем сайте 

Fluffy
Offline
Зарегистрирован: 01.06.2011

 Покажите где пример? в упор не вижу. киньте ссылку пожалуйста.

icms
Offline
Зарегистрирован: 22.03.2011
Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Никто не мешает вместо одной 3х цветной сделать 3 одноцветных матрицы будет 24х8 матрица) http://arduino.ru/projects/arduino_led_matrix 

Еще существуют готовые, недорогие, матричные, типа, экраны от sure Electronics, я себе один такой недавно получил arduino.ru/forum/proekty/mnogofunktsionalnye-chasy-na-dvukhtsvetnoi-svetodiodnoi-matritse-32kh16

icms
Offline
Зарегистрирован: 22.03.2011

Матрица 8*8 при самостоятельной сборке будет стоить  2,9$ соотвественно 8*2.9=23,2 но это одноцветная матрица, против 32$ за трёх цветную(но вероятно в цене нет стоимости доставки из-за бугра, думаю не меньше 6$)ю Я уже закупил себе 8 матриц и экстендеры для них, но пока сборку не начинаю, хочу сделать платки для каждой матрицы отдельно, что бы можно было подключать в любой конфигурации.

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Цена одной красно-желто-зеленой матрицы на порядок дороже, 4$!!!

Цена 32у.е. с доставкой из Китая) на ней уже стоит полностью собранная плата с драйверами, по нашим ценам 32 стояит только матрицы 5мм, а плата на шару получилась) просто втыкнул провода и вперед)

А теперь посчитайте еще время на разводку изготовление печатной платы, сдвиговые регистры и т.п цена зашкалит далеко от моих 32 зелени.

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Кстати вижу мегу1280 нашего украинского производства:) 

Fluffy
Offline
Зарегистрирован: 01.06.2011

 Adessit, наверное сами там покупали?)

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Ebay рулит! С доставкой в Украину всего 32у.е. http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=220774722988

Сейчас они их продают по 37 с доставкой, что тоже гуд! 

Fluffy
Offline
Зарегистрирован: 01.06.2011

 я же за плату говорил, за ардуино. ну да ладно.

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Нет, ардуина у меня одна дуемиланова китайская и мега2560 итальянская) Просто вашу видел на одном украинском сайте

Fluffy
Offline
Зарегистрирован: 01.06.2011

чтото мы от темы совсем ушли)

icms
Offline
Зарегистрирован: 22.03.2011

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

Код без всяких заморочек управляет на прямую. Библиотека для управления через экстендер

 

 

Fluffy
Offline
Зарегистрирован: 01.06.2011

 то есть, используя расширитель портов для платы можно набрать серию матриц и с помощью этой библиотеки напрямую управлять отдельно-взятым светодиодом?

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

 расширители портов - дорого) 75НС595 в разы дешевле, если много матриц то нужно будет еще ULN2804 вместо кучи мелких транзисторов на каждую строку, а если уж совсем будет много то на одну улнку напаять еще одну)))

icms
Offline
Зарегистрирован: 22.03.2011

 1,3$ mcp 23016 дешевле самой дешёвой матрицы. А меня интересует код, вроде тема эта именно о нём, нарыл кто нибудь что интересное? а то мне лично лень все символы ручками загонять.

Fluffy
Offline
Зарегистрирован: 01.06.2011

 Раз тут на форуме отвечают вопросами на вопрос, то , видимо, ручками только и прийдется символы загонять. 

Fluffy
Offline
Зарегистрирован: 01.06.2011

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

Modular
Offline
Зарегистрирован: 05.03.2011

 Ну модератор тоже может не знать однозначный ответ на вопрос. Не совсем про библиотеку, но ты вот этот пост видел? http://www.arduino.ru/forum/programmirovanie/32x8-matritsa-ot-sureelectronics

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

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

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

3 и более матрицы в серию там красиво и с рисунком. Для бОльшего числа всё остаётся также, только растет количество регистров, и в общий катод/анод строк надо добавить улнку

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011
Fluffy
Offline
Зарегистрирован: 01.06.2011

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

Fluffy
Offline
Зарегистрирован: 01.06.2011

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

Alexander
Offline
Зарегистрирован: 25.04.2010

Да каюсь, поиска не хватает на форуме, сейчас обдумываю как его прикрутить и заодно прикрутить возможность сохранять картинки на самом форуме. Для настоящих джедаев есть хитрый трюк в гугле - делать поиск типа
матрица site:arduino.ru/forum
(директива site: принуждает гугл к выдаче результатов с заданного сайта.)
Пример.

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

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

http://arduino.cc/forum/index.php/topic,50326.60.html

http://canosso.wordpress.com/

К вашей теме ближе? если по не нашему:

http://www.arduino.cc/playground/Main/DirectDriveLEDMatrix

http://arduino.cc/en/Tutorial/RowColumnScanning

http://www.tigoe.net/pcomp/code/arduinowiring/486

 

 

 

Fluffy
Offline
Зарегистрирован: 01.06.2011

 я понял Вас. в принципе я сделал аналогично. только изобрел велосипед. и на одной матрице 8 на 8. без расширителей и сдвиговых регистров.

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Ну так отлично))) Добейте до победного конца функции (и или библиотеку), и думаю сделаем статью с вашего позволения на нашем сайте;)

Fluffy
Offline
Зарегистрирован: 01.06.2011

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

 

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

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

В разделе проекты, напиши все от себя что и как и по возможности больше картинок, а там и всё будет яснее и интереснее, чтоб не копать что где как, а тут всё сразу)

Все стараются уйти на регистры или расширители портов из-за того что напрямую много портов уходит, но если это МЕГА, то почему бы и нет))) 

Fluffy
Offline
Зарегистрирован: 01.06.2011

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

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

имеется матрица самосборная 8*8

как можно в мониторе COM порта вводить текст, а выводить на матрицу?

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Текст можно вводить руками, а выводить ардуиной и драйвером светодиодов.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
/**/
//-------------------------------
// здесь вы напишите библиотеку для обслуживания вашей матрицы самосборной 8*8
class Cl_Matrix {
  public:
    void print(char c) {
    }
};
//-----Компановка-------------------------
Cl_Matrix Matrix;
//--------------------------------
void setup() {
  Serial.begin(9600);

}

void loop() {
  while (Serial.available() > 0) {
    Matrix.print(Serial.read());
  }
}

 

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

подробнее опишу суть

сделал проект на нано и светодиодах SK6812 (64 шт. матрица 8*8 светодиодов) - набаловался на примерах из библиотеки Adafruit_NeoPixel.
Пришла в голову идея по проекту - пользователь открывает монитор порта в которой вводит текст - например "Hello word!", нажимает кнопку "отправить" и этот текст бегущей строкой идет на матрицу SK6812.
Прошу подсказать в какую сторону смотреть для реализации.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

qwone пишет:

/**/
//-------------------------------
// здесь вы напишите библиотеку для обслуживания вашей матрицы самосборной 8*8

не уловил про библиотеку - или вернее что в голову приходит - что упало в сериал = строка, строку разобрать на символы, для каждого символа в библиотеке предусмотреть его HEX, а далее выводить на матрицу?

bwn
Offline
Зарегистрирован: 25.08.2014

Так в какой то адафрутовской библиотеке даже в примерах попадалось. Пошукайте, там правда для MAX7219.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Сори за код с ошибками, но я вам просто даю структуру

/**/
unsigned long mill;
//-------------------------------
// вы напишите библиотеку для обслуживания ваше матрицы самосборной 8*8
const char font_8x6[] PROGMEM = { /*ваш знакогенератор*/
  {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
  , {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
  , {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
}
const char txt = "HELLOW "; /*приветсвеная строка*/
class Cl_Matrix {
  protected:
    char *line;//указатель на вашу строку
    byte line;
    byte buffer[8];
    void transfer() { //отправка инф с буфера в железо
    }
  public:
    Cl_Matrix() {

    }
    void init() {
      line = txt;
    }
    void run() {
    }
    void print(const char *c) {
      line = c;
    }
};
//-----Компановка-------------------------
const char myTxt = "MATRIX 8x8   "; /*Ваше сообщение*/
Cl_Matrix Matrix;
//--------------------------------
void setup() {
  Serial.begin(9600);
  Matrix.init();
  Matrix.print(myTxt);
}

void loop() {
  mill = millis();
  Matrix.run();
}

По факту вы хотите бегущую строку организовать. Это значит, что надо регулярно выводить некоторые кадры из объекта строка в попиксельном виде. И разумеется из-за нехватки памяти, то полностью этот объект лучше держать в виде строки, а еще лучше указателя на строку которую надо вывести.  Тут же пляски с PROGMEM. Надо же где-то шрифт хранить. Ну и далее и прочее.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

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

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

А далекоидущие планы такие - NodeMcu с поднятым вебсервером и страницей для ввода текста, который пойдет на свтодиодную матрицу