Авторизация  


   

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

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

   
Подождите минутку, пока генерируется календарь
   
   

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

Josef Vilka Что делать если выскакивает реклама на андроид?
29 марта 2019
Планшет - снова жив! Я его восстановил. Процесс - вот в этом видео - https://www.youtube.com/watch?v...
Josef Vilka Что делать если выскакивает реклама на андроид?
22 февраля 2019
В общем - планшет - умер. Я подскользнулся и упал на него
Josef Vilka Что делать если выскакивает реклама на андроид?
28 августа 2018
Продолжение эпопеи! Очередное мое письмо производителю: ------------------------------ From: Josef V...
Josef Vilka Что делать если выскакивает реклама на андроид?
29 мая 2018
Приложение Devises маскировалось под системное, но без рута позволило удалить себя. Делаю вывод, чт...
Josef Vilka Что делать если выскакивает реклама на андроид?
28 мая 2018
Прошло уже несколько часов - реклама не появляется.. Значит - Avast - сработал!
   

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

  }

}

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

Читайте также:

 

Комментарии

Нет созданных комментариев. Будь первым кто оставит комментарий.
Уже зарегистрированны? Войти на сайт
Гость
08.07.2020

Изображение капчи