Авторизация  

   

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

Читать подробнее »

   
Wait a minute, while we are rendering the calendar
   
   

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

Josef Vilka Собираем подвес по мотивам AlexMOS...
02 мая 2018
Третья ось - заработала, но не могу подобрать коэффициенты PID для нее. Надо уравновесить систему сн...
Josef Vilka Собираем подвес по мотивам AlexMOS...
01 мая 2018
Наконец-то решился и собрался с силами прикрутить третью ось к подвесу. Все было в наличии, вот врем...
Josef Vilka Побег. Трехлетняя история.
13 ноября 2017
Благодарю.
Проходимец Побег. Трехлетняя история.
02 ноября 2017
Все правильно сделал...
Josef Vilka Жизнь или кошелек? Размышления о деньгах...
07 мая 2017
Мне нравится, что до конца - практически никто не дочитывает....
   

Пользователи 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.05.2018

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