Авторизация  

   

Свежие обсуждения  

   
Wait a minute, while we are rendering the calendar
   
   

Комментарии блогов  

Josef Vilka Побег. Трехлетняя история.
13 ноября 2017
Благодарю.
Проходимец Побег. Трехлетняя история.
02 ноября 2017
Все правильно сделал...
Josef Vilka Жизнь или кошелек? Размышления о деньгах...
07 мая 2017
Мне нравится, что до конца - практически никто не дочитывает....
Josef Vilka Мой опыт съемки в клипе Христини Соловій - "Хто, як не ти?"
29 апреля 2017
Да, было интересно - и наблюдать, и участвовать... https://www.youtube.com/watch?v=mrAKU8OnRPo
Josef Vilka Выводим русские символы на MAX7219 модуль бегущей строки Ардуино
18 апреля 2017
Леонид, посмотрите вот здесь http://rc-rls.com.ua/index.php?option=com_easyblog&view=entry&id=60&Ite...
   

Пользователи on-line  

   
   

ПРОСТРАНСТВО ВОКРУГ НАС.

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

Бегущая строка из восьми модулей MAX7219 - 64*8 светодиодов

Так давно собирался и наконец - собрался с силами. 

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

Скетч.

Напомню, что в более ранней реализации мы выводили русские буквы в бегущей строке из четырех модулей MAX7219. Но попытки вывести используя ТОТ скетч в восьми модулях - 64х8 - не увенчались успехом. Это было ЗДЕСЬ

И в новогодние праздники на моей машине было передвижное поздравление "* Merry Christmas and Happy New Year 2017 !!! ". Оно отображалось красными светодиодами бегущей строки, а сборку я разместил на боковом

стекле авто. Питание осуществлял через обычный USB разъем, которым снабдил Ni-MH аккумулятор от бортового питания для моего вертолета Raptor 30V2.

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

Для работы - необходима библиотека LedControl.h , которую нужно поискать в сети - это не сложно...

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

Видео:

 

Итак, сам скетч - начинается со строки ниже.

#include  

// pin 12 is connected to the MAX7219 pin 1

// pin 11 is connected to the CLK pin 13

// pin 10 is connected to LOAD pin 12

 

LedControl lc=LedControl(12,11,10,8); // 4 matrices, 4 MAX7219s.

char msg[] = "* Merry Christmas and Happy New Year 2017 !!! ";

int msgsize =  strlen(msg);

// The character set courtesy of cosmicvoid.  It is rowwise

 

byte Font8x5[104*8] =

        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

        0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00,

        0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,

        0x0A, 0x0A, 0x1F, 0x0A, 0x1F, 0x0A, 0x0A, 0x00,

        0x0E, 0x15, 0x05, 0x0E, 0x14, 0x15, 0x0E, 0x00,

        0x13, 0x13, 0x08, 0x04, 0x02, 0x19, 0x19, 0x00,

        0x06, 0x09, 0x05, 0x02, 0x15, 0x09, 0x16, 0x00,

        0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,

        0x04, 0x02, 0x01, 0x01, 0x01, 0x02, 0x04, 0x00,

        0x01, 0x02, 0x04, 0x04, 0x04, 0x02, 0x01, 0x00,

        0x00, 0x0A, 0x15, 0x0E, 0x15, 0x0A, 0x00, 0x00,

        0x00, 0x04, 0x04, 0x1F, 0x04, 0x04, 0x00, 0x00,

        0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x01,

        0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00,

        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,

        0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x00,

        0x0E, 0x11, 0x19, 0x15, 0x13, 0x11, 0x0E, 0x00,

        0x04, 0x06, 0x04, 0x04, 0x04, 0x04, 0x0E, 0x00,

        0x0E, 0x11, 0x10, 0x0C, 0x02, 0x01, 0x1F, 0x00,

        0x0E, 0x11, 0x10, 0x0C, 0x10, 0x11, 0x0E, 0x00,

        0x08, 0x0C, 0x0A, 0x09, 0x1F, 0x08, 0x08, 0x00,

        0x1F, 0x01, 0x01, 0x0E, 0x10, 0x11, 0x0E, 0x00,

        0x0C, 0x02, 0x01, 0x0F, 0x11, 0x11, 0x0E, 0x00,

        0x1F, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x00,

        0x0E, 0x11, 0x11, 0x0E, 0x11, 0x11, 0x0E, 0x00,

        0x0E, 0x11, 0x11, 0x1E, 0x10, 0x08, 0x06, 0x00,

        0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,

        0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x01,

        0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x00,

        0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00,

        0x01, 0x02, 0x04, 0x08, 0x04, 0x02, 0x01, 0x00,

        0x0E, 0x11, 0x10, 0x08, 0x04, 0x00, 0x04, 0x00,

        0x0E, 0x11, 0x1D, 0x15, 0x0D, 0x01, 0x1E, 0x00,

        0x04, 0x0A, 0x11, 0x11, 0x1F, 0x11, 0x11, 0x00,

        0x0F, 0x11, 0x11, 0x0F, 0x11, 0x11, 0x0F, 0x00,

        0x0E, 0x11, 0x01, 0x01, 0x01, 0x11, 0x0E, 0x00,

        0x07, 0x09, 0x11, 0x11, 0x11, 0x09, 0x07, 0x00,

        0x1F, 0x01, 0x01, 0x0F, 0x01, 0x01, 0x1F, 0x00,

        0x1F, 0x01, 0x01, 0x0F, 0x01, 0x01, 0x01, 0x00,

        0x0E, 0x11, 0x01, 0x0D, 0x11, 0x19, 0x16, 0x00,

        0x11, 0x11, 0x11, 0x1F, 0x11, 0x11, 0x11, 0x00,

        0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07, 0x00,

        0x1C, 0x08, 0x08, 0x08, 0x08, 0x09, 0x06, 0x00,

        0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11, 0x00,

        0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x00,

        0x11, 0x1B, 0x15, 0x15, 0x11, 0x11, 0x11, 0x00,

        0x11, 0x13, 0x13, 0x15, 0x19, 0x19, 0x11, 0x00,

        0x0E, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0E, 0x00,

        0x0F, 0x11, 0x11, 0x0F, 0x01, 0x01, 0x01, 0x00,

        0x0E, 0x11, 0x11, 0x11, 0x15, 0x09, 0x16, 0x00,

        0x0F, 0x11, 0x11, 0x0F, 0x05, 0x09, 0x11, 0x00,

        0x0E, 0x11, 0x01, 0x0E, 0x10, 0x11, 0x0E, 0x00,

        0x1F, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00,

        0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0E, 0x00,

        0x11, 0x11, 0x11, 0x11, 0x0A, 0x0A, 0x04, 0x00,

        0x41, 0x41, 0x41, 0x49, 0x2A, 0x2A, 0x14, 0x00,

        0x11, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x11, 0x00,

        0x11, 0x11, 0x11, 0x0A, 0x04, 0x04, 0x04, 0x00,

        0x1F, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1F, 0x00,

        0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, 0x00,

        0x01, 0x01, 0x02, 0x04, 0x08, 0x10, 0x10, 0x00,

        0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x00,

        0x00, 0x04, 0x0A, 0x11, 0x00, 0x00, 0x00, 0x00,

        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00,

        0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,

        0x00, 0x00, 0x06, 0x08, 0x0E, 0x09, 0x0E, 0x00,

        0x01, 0x01, 0x0D, 0x13, 0x11, 0x13, 0x0D, 0x00,

        0x00, 0x00, 0x06, 0x09, 0x01, 0x09, 0x06, 0x00,

        0x10, 0x10, 0x16, 0x19, 0x11, 0x19, 0x16, 0x00,

        0x00, 0x00, 0x06, 0x09, 0x07, 0x01, 0x0E, 0x00,

        0x04, 0x0A, 0x02, 0x07, 0x02, 0x02, 0x02, 0x00,

        0x00, 0x00, 0x06, 0x09, 0x09, 0x06, 0x08, 0x07,

        0x01, 0x01, 0x0D, 0x13, 0x11, 0x11, 0x11, 0x00,

        0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00,

        0x04, 0x00, 0x06, 0x04, 0x04, 0x04, 0x04, 0x03,

        0x01, 0x01, 0x09, 0x05, 0x03, 0x05, 0x09, 0x00,

        0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00,

        0x00, 0x00, 0x15, 0x2B, 0x29, 0x29, 0x29, 0x00,

        0x00, 0x00, 0x0D, 0x13, 0x11, 0x11, 0x11, 0x00,

        0x00, 0x00, 0x06, 0x09, 0x09, 0x09, 0x06, 0x00,

        0x00, 0x00, 0x0D, 0x13, 0x13, 0x0D, 0x01, 0x01,

        0x00, 0x00, 0x16, 0x19, 0x19, 0x16, 0x10, 0x10,

        0x00, 0x00, 0x0D, 0x13, 0x01, 0x01, 0x01, 0x00,

        0x00, 0x00, 0x0E, 0x01, 0x06, 0x08, 0x07, 0x00,

        0x00, 0x02, 0x07, 0x02, 0x02, 0x02, 0x04, 0x00,

        0x00, 0x00, 0x11, 0x11, 0x11, 0x19, 0x16, 0x00,

        0x00, 0x00, 0x11, 0x11, 0x11, 0x0A, 0x04, 0x00,

        0x00, 0x00, 0x11, 0x11, 0x15, 0x15, 0x0A, 0x00,

        0x00, 0x00, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x00,

        0x00, 0x00, 0x09, 0x09, 0x09, 0x0E, 0x08, 0x06,

        0x00, 0x00, 0x0F, 0x08, 0x06, 0x01, 0x0F, 0x00,

        0x04, 0x02, 0x02, 0x01, 0x02, 0x02, 0x04, 0x00,

        0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00,

        0x01, 0x02, 0x02, 0x04, 0x02, 0x02, 0x01, 0x00,

        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

        0x1C, 0x2A, 0x49, 0x49, 0x41, 0x22, 0x1C, 0x00,

        0x1C, 0x22, 0x51, 0x49, 0x41, 0x22, 0x1C, 0x00,

        0x1C, 0x22, 0x41, 0x79, 0x41, 0x22, 0x1C, 0x00,

        0x1C, 0x22, 0x41, 0x49, 0x51, 0x22, 0x1C, 0x00,

        0x1C, 0x22, 0x41, 0x49, 0x49, 0x2A, 0x1C, 0x00,

        0x1C, 0x22, 0x41, 0x49, 0x45, 0x22, 0x1C, 0x00,

        0x1C, 0x22, 0x41, 0x4F, 0x41, 0x22, 0x1C, 0x00,

        0x1C, 0x22, 0x45, 0x49, 0x41, 0x22, 0x1C, 0x00};

 

 

byte lentbl_S[104] =

{

        2, 2, 3, 5, 5, 5, 5, 2, 

        3, 3, 5, 5, 2, 5, 1, 5, 

        5, 4, 5, 5, 5, 5, 5, 5, 

        5, 5, 1, 2, 4, 4, 4, 5, 

        5, 5, 5, 5, 5, 5, 5, 5, 

        5, 3, 5, 5, 4, 5, 5, 5, 

        5, 5, 5, 5, 5, 5, 5, 7, 

        5, 5, 5, 3, 5, 3, 5, 5, 

        2, 4, 5, 4, 5, 4, 4, 4, 

        5, 2, 3, 4, 2, 6, 5, 4, 

        5, 5, 5, 4, 3, 5, 5, 5, 

        5, 4, 4, 3, 2, 3, 0, 0, 

        7, 7, 7, 7, 7, 7, 7, 7

};

int curcharix = 0;

int curcharbit = 0;

int curcharixsave = 0;

int curcharbitsave = 0;

int curcharixsave2 = 0;

int curcharbitsave2 = 0;

char curchar;

void setup()

{

  lc.shutdown(0,false);// turn off power saving, enables display

  lc.setIntensity(0,15);// sets brightness (0~15 possible values)

  lc.clearDisplay(0);// clear screen

  lc.shutdown(1,false);// turn off power saving, enables display

  lc.setIntensity(1,15);// sets brightness (0~15 possible values)

  lc.clearDisplay(1);// clear screen

  lc.shutdown(2,false);// turn off power saving, enables display

  lc.setIntensity(2,15);// sets brightness (0~15 possible values)

  lc.clearDisplay(2);// clear screen

  lc.shutdown(3,false);// turn off power saving, enables display

  lc.setIntensity(3,15);// sets brightness (0~15 possible values)

  lc.clearDisplay(3);// clear screen

  lc.shutdown(4,false);// turn off power saving, enables display

  lc.setIntensity(4,15);// sets brightness (0~15 possible values)

  lc.clearDisplay(4);// clear screen

  lc.shutdown(5,false);// turn off power saving, enables display

  lc.setIntensity(5,15);// sets brightness (0~15 possible values)

  lc.clearDisplay(5);// clear screen

  lc.shutdown(6,false);// turn off power saving, enables display

  lc.setIntensity(6,15);// sets brightness (0~15 possible values)

  lc.clearDisplay(6);// clear screen

  lc.shutdown(7,false);// turn off power saving, enables display

  lc.setIntensity(7,15);// sets brightness (0~15 possible values)

  lc.clearDisplay(7);// clear screen

  lc.shutdown(8,false);// turn off power saving, enables display

  lc.setIntensity(8,15);// sets brightness (0~15 possible values)

  lc.clearDisplay(8);// clear screen

}

void loop()

{

  int i,j,k;

  while(1)

  {

    curcharixsave2 = curcharix;

    curcharbitsave2 = curcharbit;

    for (i=7;i>=0;i--) // Loop through our 8 displays

    {

      for (j=0;j<8;j++) // Set up rows on current  display

      {      

        byte outputbyte = 0;

      

        curchar = msg[curcharix];

      

        curcharixsave = curcharix;

        curcharbitsave = curcharbit;

      

        for (k=7;k>=0;k--) // Copy over data for 8 columns to current row and send it to current display

        {

          // This byte is the bitmap of the current character for the current row

          byte currentcharbits = Font8x5[((curchar-32)*8)+j];

      

          if (currentcharbits & (1<<curcharbit))

            outputbyte |= (1<<k);

      

          // advance the current character bit of current character

      

          curcharbit ++;

      

          if (curcharbit > lentbl_S[curchar-32]) // we are past the end of this character, so advance.

          {

            curcharbit = 0;

            curcharix += 1;          

            if (curcharix+1 > msgsize) curcharix=0;

            curchar = msg[curcharix];

          }

        }

      

        lc.setRow(i, j, outputbyte);

 

        if (j != 7) // if this is not the last row, roll back advancement, if it is, leave the counters advanced.

        {

          curcharix = curcharixsave;

          curcharbit = curcharbitsave;

        }

      }

    }

  

    curcharix = curcharixsave2;

    curcharbit = curcharbitsave2;

 

    curchar = msg[curcharix];

 

    // advance the current character bit of current character

      

    curcharbit ++;

      

    if (curcharbit > lentbl_S[curchar-32]) // we are past the end of this character, so advance.

    {

      curcharbit = 0;

      curcharix += 1;

      if (curcharix+1 > msgsize) curcharix=0;

      curchar = msg[curcharix];

    }

    

    delay(10);

  }

}

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

Related Posts

 

Комментарии

Комментариев пока нет
Already Registered? Login Here
Гость
21.11.2017

Изображение Captcha