roboforum.ru

Технический форум по робототехнике.

Вопросы новичка.

Re: Вопросы новичка.

dimamichev » 01 июл 2017, 08:38

Dmitry__ писал(а):Может уже пора самому на такие вопросы отвечать? Ты тему новичка зафлудил собой, может переименовать тему в бложик dimamichev-а? :)
https://mysku.ru/blog/china-stores/36691.html

Не знаю...С одной стороны не я тему открыл,кроме меня ещё один человек за ардуину спрашивал,все сообщения мои вроде по теме...С другой стороны в ней я,я и опять я в роли вопрошающего. Переименовать в "dimamichev-arduino-помогите!" и перенести в блоги посетителей?

Re: Вопросы новичка.

Madf » 01 июл 2017, 18:24

dimamichev писал(а):И как эту платку до Arduino IDE довести???

Придется прошивать прошивкой дуни (под неё).
Шить можно как обычным программатором, ну так же как-то через Ж (самими дунями).

Re: Вопросы новичка.

Myp » 01 июл 2017, 20:03

USB на плате с тинькой реализован софтварно, тоесть львиная доля прошивки платы занимает код для USB чтобы плата вообще определялась в винде
так что если ты не собираешься сделать именно USB устройство то смысла особо в такой плате нет.

Re: Вопросы новичка.

dimamichev » 01 июл 2017, 22:11

Ясно...овчина выделки...Но для куба она и не требуется, по габаритам всё же "про мини" буду пробовать (как и хотел). Сейчас грубо повторяю "акриловые цифры гвоздём" - вчера посмотрел сайт забугорный (по ссылке Мадфа), один товарищ продаёт соотечественникам по 68 долларов за индикатор. Возникла мысль вместо цифр человечка "заобъёмить."

Добавлено спустя 1 час 30 минут 21 секунду:
Такая проба на 4 цифры...
Вложения
IMG_6481.JPG

Re: Вопросы новичка.

Dmitry__ » 01 июл 2017, 22:53

Myp писал(а): тоесть львиная доля прошивки платы занимает код для USB чтобы плата вообще определялась в винде

Ладно гнать. Если такие проги как "датчик касания" на оптич. мышке влезает, то чего там говорить про бегущие огни :)
2кб загрузчик, кварц не нужен. :wink:
https://habrahabr.ru/post/200896/

Re: Вопросы новичка.

dimamichev » 02 июл 2017, 08:27

Dmitry__ писал(а):Ладно гнать. Если такие проги как "датчик касания" на оптич. мышке влезает, то чего там говорить про бегущие огни :)
2кб загрузчик, кварц не нужен. :wink:
https://habrahabr.ru/post/200896/

У меня скетч для кубика занял уже 28 процентов памяти - на две минуты перемигивания. Правда, "лепил" в лоб "включи-выключи, подожди".
Код: Выделить всёРазвернуть
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Arduino UNO
//
////////////////////////
//
//программа для LED КУБА вместо светодиодной матрицы 8*8, и max7219  //

#include "LedControl.h"//подключаем данную библиотеку
int i=0;int j=0;int k=1;int n=1;


LedControl LC = LedControl(12, 11, 10, 2);// создаём объект класса для 2 индикаторов
// при этом выводы 12-DIN 11-CLK 10-CS //

void setup()
{
 
  LC.shutdown(0, false);//выключаем энергосберегающий режим
  LC.setIntensity(0, 12);// устанавливаем интенсивность в 12 единиц между 0 и 15
  LC.clearDisplay(0);//очищаем матрицу 1
  LC.shutdown(1, false);//выключаем энергосберегающий режим
  LC.setIntensity(1, 4);// устанавливаем интенсивность в 4 единиц между 0 и 15
  LC.clearDisplay(1);//очищаем матрицу 2
}

void loop()
{
/////////////// ПОСТРОЧНОЕ ВКЛЮЧЕНИЕ ВСЕХ СВЕТОДИОДОВ  ///////////////////
   for (i=0;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1); delay(100);
   }
   }
   ///////////////  МИГАНИЕ СВЕТОДИОДАМИ ВСЕГО КУБА ////////////////////////
  for (j=0;j<=4;j++)
   {
   LC.shutdown(0, true);LC.shutdown(1, true); delay(300); LC.shutdown(0, false);LC.shutdown(1, false); delay(300);
   }
   /////////////// ПОСТРОЧНОЕ РЕВЕРС-ВЫКЛЮЧЕНИЕ ВСЕХ СВЕТОДИОДОВ  //////////
    for (i=7;i>=0;i--) //цикл в цикле для перебора элементов матрицы
  {
  for (j=7;j>=0;j--)
   {
    LC.setLed(1, i, j,0); LC.setLed(0, i, j, 0); delay(50);
   }
   }
    /////////////// ПОСЛОЙНОЕ ВКЛЮЧЕНИЕ И ВЫКЛЮЧЕНИЕ ВСЕХ СВЕТОДИОДОВ  ///////////////////
   for (i=0;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1);
    if (i==1&j==7){delay(500);}
    if (i==3&j==7){delay(500);}
    if (i==5&j==7){delay(500);}
    if (i==7&j==7){delay(500);}
   
   }
   }
    for (i=0;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, i, j,0); LC.setLed(0, i, j, 0);
    if (i==1&j==7){delay(500);}
    if (i==3&j==7){delay(500);}
    if (i==5&j==7){delay(500);}
    if (i==7&j==7){delay(500);}
   
   }
   }
   /////////////// ПОСЛОЙНОЕ ВКЛЮЧЕНИЕ И ВЫКЛЮЧЕНИЕ С ПАУЗОЙ  СВЕТОДИОДОВ СЛОЁВ  ///////////////////
   for (k=1;k<=2;k++)//2 кратное повторение перебора
   {
   for (i=0;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1);
    if (i==1&j==7){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==3&j==7){delay(200);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==5&j==7){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==7&j==7){delay(400);LC.clearDisplay(0); LC.clearDisplay(1);}
   
   }
   }
   }
   /////////////// ПОРЯДНОЕ  ВКЛЮЧЕНИЕ И ВЫКЛЮЧЕНИЕ С ПАУЗОЙ  СВЕТОДИОДОВ СЛОЯ  ///////////////////
   for (k=1;k<=2;k++)//2 кратное повторение перебора
   {
   for (i=0;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j=j+2)
   {
    LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1);
    if (i==0&j==6){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==1&j==6){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==2&j==6){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==3&j==6){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==4&j==6){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==5&j==6){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==6&j==6){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==7&j==6){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
   
   }
   for (j=1;j<=7;j=j+2)
   {
    LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1);
    if (i==0&j==7){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==1&j==7){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==2&j==7){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==3&j==7){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==4&j==7){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==5&j==7){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==6&j==7){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==7&j==7){delay(300);LC.clearDisplay(0); LC.clearDisplay(1);}
   
   }
   }
   }
   /////////////// ПОСТОЛБЦОВОЕ И ПОРЯДНОЕ  ВКЛЮЧЕНИЕ И ВЫКЛЮЧЕНИЕ С ПАУЗОЙ  СВЕТОДИОДОВ СЛОЁВ  ///////////////////
   for (k=1;k<=2;k++)//2 кратное повторение перебора
   {
   for (i=0;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j=j+2)
   {
    LC.setLed(1, j, i,1); LC.setLed(0, j, i, 1);LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1);
    if (i==0&j==6){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==1&j==6){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==2&j==6){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==3&j==6){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==4&j==6){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==5&j==6){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==6&j==6){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==7&j==6){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
   
   }
   for (j=1;j<=7;j=j+2)
   {
    LC.setLed(1, j, i,1); LC.setLed(0, j, i, 1);LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1);
    if (i==0&j==7){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==1&j==7){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==2&j==7){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==3&j==7){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==4&j==7){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==5&j==7){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==6&j==7){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==7&j==7){delay(100);LC.clearDisplay(0); LC.clearDisplay(1);}
   
   }
   }
   }
    for (k=1;k<=2;k++)//2 кратное повторение перебора
   {
   for (i=0;i<=7;i=i+2) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j=j+2)
   {
    LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1);
    LC.setLed(1, i, j+1,1); LC.setLed(0, i, j+1, 1);
    LC.setLed(1, i+1, j,1); LC.setLed(0, i+1, j, 1);
    LC.setLed(1, i+1, j+1,1); LC.setLed(0, i+1, j+1, 1);
    delay(250);LC.clearDisplay(0); LC.clearDisplay(1);
   }
  }
   }
   /////////////// ПСЕВДОСЛУЧАЙНОЕ ВКЛЮЧЕНИЕ/ВЫКЛЮЧЕНИЕ 4 ПАР (КУБИК) СВЕТОДИОДОВ  ///////////////////
   for (k=1;k<=20;k++)//20 кратное повторение перебора
   {
  i=random(0,6);j=random(0,5);
    LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1);
    LC.setLed(1, i, j+1,1); LC.setLed(0, i, j+1, 1);
    LC.setLed(1, i, j+2,1); LC.setLed(0, i, j+2, 1);
    LC.setLed(1, i, j+3,1); LC.setLed(0, i, j+3, 1);
    LC.setLed(1, i+2, j,1); LC.setLed(0, i+2, j, 1);
    LC.setLed(1, i+2, j+1,1); LC.setLed(0, i+2, j+1, 1);
    LC.setLed(1, i+2, j+2,1); LC.setLed(0, i+2, j+2, 1);
    LC.setLed(1, i+2, j+3,1); LC.setLed(0, i+2, j+3, 1);
    delay(random (100,250));
   LC.clearDisplay(0);//очищаем матрицу 1
     LC.clearDisplay(1);//очищаем матрицу 2
   }
   /////////////// КОНТУР КУБА - ПОЯВЛЕНИЕ/ИЗЧЕЗНОВЕНИЕ  ///////////////////
    int tabl1[32]={0,0,0,0,2,4,6,6,6,6,4,2,0,1,1,3,5,7,7,7,7,5,3,1,1,1,6,7,0,1,6,7};
    int tabl2[32]={0,2,4,6,6,6,6,4,2,0,0,0,1,0,1,1,1,1,3,5,7,7,7,7,5,3,7,6,7,6,1,0};
    for (k=0;k<=31;k++)
      {
       LC.setLed(1, tabl1[k],tabl2[k] ,1); LC.setLed(0, tabl1[k],tabl2[k] ,1);delay(250);
   
       }
   delay(2000);
    for (k=31;k>=0;k--)
      {
       LC.setLed(1, tabl1[k],tabl2[k] ,0); LC.setLed(0, tabl1[k],tabl2[k] ,0);delay(250);
   
       }
   delay(2000);
   ////////////////////////////ПЕРЕХОД КАПЕЛЬ СВЕТА С ПЛОСКОСТИ НА ПЛОСКОСТЬ//////////////////////////////////
   for (k=1;k<=2;k++)//2 кратное повторение перебора
   {
   for (i=0;i<=1;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, i,j ,1); LC.setLed(0, i,j ,1);
   }
   }
    delay(200);
    for (i=0;i<=1;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, i,j ,0); LC.setLed(0, i,j ,0);delay(50);
    for (n=2;n<=6;n=n+2){LC.setLed(1, i+n,j ,1); LC.setLed(0, i+n,j ,1);delay(50);LC.setLed(1, i+n,j ,0); LC.setLed(0, i+n,j ,0);}
    LC.setLed(1, i+6,j ,1); LC.setLed(0, i+6,j ,1);delay(50);
   }
   }
   LC.clearDisplay(0);LC.clearDisplay(1);
   }
    /////////////// ПАДАЮЩИЕ КАПЛИ СВЕТА  ///////////////////
     for (k=0;k<=15;k++)
      {
       i=random(0,4);j=random(0,4); i=2*i;j=2*j;
       LC.setLed(1, i,j ,1); LC.setLed(0, i,j ,1);delay(200); LC.clearDisplay(0);LC.clearDisplay(1);
       LC.setLed(1, i,j+1 ,1); LC.setLed(0, i,j+1 ,1);delay(100); LC.clearDisplay(0);LC.clearDisplay(1);
       LC.setLed(1, i+1,j ,1); LC.setLed(0, i+1,j ,1);delay(75); LC.clearDisplay(0);LC.clearDisplay(1);
        LC.setLed(1, i+1,j+1 ,1); LC.setLed(0, i+1,j+1 ,1);delay(50); LC.clearDisplay(0);LC.clearDisplay(1);
       }
        for (k=0;k<=20;k++)
      {
       i=random(0,4);j=random(0,4); i=2*i;j=2*j;
       LC.setLed(1, i,j ,1); LC.setLed(0, i,j ,1);delay(200);
       LC.setLed(1, i,j+1 ,1); LC.setLed(0, i,j+1 ,1);delay(100);
       LC.setLed(1, i+1,j ,1); LC.setLed(0, i+1,j ,1);delay(75);
        LC.setLed(1, i+1,j+1 ,1); LC.setLed(0, i+1,j+1 ,1);delay(50);n++;
        if (n>=5){delay(500);LC.clearDisplay(0);LC.clearDisplay(1);n=0;}
       }
      ////////////////////////////// ПОВОРОТ ПЛОСКОСТЕЙ /////////////////////////////////
      for (k=1;k<=8;k++)//8 кратное повторение перебора
   {
   for (i=0;i<=1;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, i,j ,1); LC.setLed(0, i,j ,1);
   }
   }
   delay(150);LC.clearDisplay(0);LC.clearDisplay(1);
   for (i=0;i<=6;i=i+2) //цикл для перебора элементов матрицы
    {
    LC.setLed(1, i,i ,1); LC.setLed(0, i,i ,1);LC.setLed(1, i+1,i ,1); LC.setLed(0, i+1,i ,1);
    LC.setLed(1, i,i+1 ,1); LC.setLed(0, i,i+1 ,1);LC.setLed(1, i+1,i+1 ,1); LC.setLed(0, i+1,i+1 ,1);
     }
   delay(150);LC.clearDisplay(0);LC.clearDisplay(1);
   for (i=0;i<=1;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, j,i ,1); LC.setLed(0, j,i ,1);
   }
   }
   delay(150);LC.clearDisplay(0);LC.clearDisplay(1);
   for (i=0;i<=6;i=i+2) //цикл  для перебора элементов матрицы
    {
    LC.setLed(1, i,7-i ,1); LC.setLed(0, i,7-i ,1);LC.setLed(1, i+1,7-i ,1); LC.setLed(0, i+1,7-i ,1);
    LC.setLed(1, i+1,6-i ,1); LC.setLed(0, i+1,6-i ,1);LC.setLed(1, i,6-i ,1); LC.setLed(0, i,6-i ,1);
     }
   delay(150);LC.clearDisplay(0);LC.clearDisplay(1);
   for (i=6;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, i,j ,1); LC.setLed(0, i,j ,1);
   }
   }
   delay(150);LC.clearDisplay(0);LC.clearDisplay(1);
    for (i=0;i<=6;i=i+2) //цикл для перебора элементов матрицы
    {
    LC.setLed(1, i,i ,1); LC.setLed(0, i,i ,1);LC.setLed(1, i+1,i ,1); LC.setLed(0, i+1,i ,1);
    LC.setLed(1, i,i+1 ,1); LC.setLed(0, i,i+1 ,1);LC.setLed(1, i+1,i+1 ,1); LC.setLed(0, i+1,i+1 ,1);
     }
   delay(150);LC.clearDisplay(0);LC.clearDisplay(1);
    for (i=6;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, j,i ,1); LC.setLed(0, j,i ,1);
   }
   }
   delay(150);LC.clearDisplay(0);LC.clearDisplay(1);
   for (i=0;i<=6;i=i+2) //цикл  для перебора элементов матрицы
    {
    LC.setLed(1, i,7-i ,1); LC.setLed(0, i,7-i ,1);LC.setLed(1, i+1,7-i ,1); LC.setLed(0, i+1,7-i ,1);
    LC.setLed(1, i+1,6-i ,1); LC.setLed(0, i+1,6-i ,1);LC.setLed(1, i,6-i ,1); LC.setLed(0, i,6-i ,1);
     }
   delay(150);LC.clearDisplay(0);LC.clearDisplay(1);
   }
   //////////////////// ОЧИСТКА МАТРИЦ ПЕРЕД НОВЫМ ПОВТОРОМ ПОЛНОГО ЦИКЛА ////////////////
    LC.clearDisplay(0);//очищаем матрицу 1
     LC.clearDisplay(1);//очищаем матрицу 2
   
}
//
// Конец /
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



Про датчик перемещения читал - http://forum.kafedra-appie.ru/index.php?topic=20.0

Re: Вопросы новичка.

Madf » 02 июл 2017, 11:12

1. алгоритм перемигования можно скорее всего оптимизировать запихнув его в массив (как аля микро код, макросы будет выглядеть).
2. Да, Дима правильно сказал, там в загрузчик помещается не только работа с USB, но логика прошивания чипа (некая логика), т.ч. не так всё "плохо".

Re: Вопросы новичка.

Myp » 02 июл 2017, 12:41

Dmitry__ писал(а):
Myp писал(а): тоесть львиная доля прошивки платы занимает код для USB чтобы плата вообще определялась в винде

Ладно гнать. Если такие проги как "датчик касания" на оптич. мышке влезает, то чего там говорить про бегущие огни :)
Я про код эмуляции USB
чтобы девайс можно было воткнуть в порт и девай управлялся с компа или наоборот слал данные в комп
пытался сделать монитор параметров, типа влажности и т.п.. чтоб на экране график рисовать, так библиотечки для 3х датчиков и штатный эмулятор USB не влезли.
естественно ничего сам не писал, просто скачал с инета библиотечки. может если заморочиться и захардкодить всё самому и будет ОК.
вопщем плюнул и положил в стол.
тем более что когда работаешь по USB там и так малое количество ног уменьшается на две, те которые идут на USB.
для прошивки надо отцеплять два датчика.

Re: Вопросы новичка.

dimamichev » 02 июл 2017, 15:01

Получается для куба в самый обрез... три вывода на гирлянду из шести МАХ7219 и пару, например,для управления через УЗ датчик. Но по габаритам в данном случае один чёрт что "тинька", что "про мини" (да и цена одинаковая почти).

Re: Вопросы новичка.

Dmitry__ » 02 июл 2017, 15:50

Ну так тебе дали еще 2 ссылки на ардуины с кучей пинов:
http://roboparts.ru/products/18768161
на ебей 380рэ, думаю можно найти еще дешевле:
http://www.ebay.com/itm/Beetle-USB-ATMEGA32U4-Mini-Development-Board-Module-For-Arduino-Leonardo-R3-/182152370300?hash=item2a6920987c:g:SKQAAOSw6btXS9hP
В них юсб аппаратный, только вот сомнения, что ты до него когда-нибудь дойдешь, ибо юсб очень сложная штука. А так: 31кб твои и 1 кб загрузчик. Пинов около 15 шт.

Re: Вопросы новичка.

dimamichev » 02 июл 2017, 17:38

Dmitry__ писал(а):В них юсб аппаратный, только вот сомнения, что ты до него когда-нибудь дойдешь, ибо юсб очень сложная штука. А так: 31кб твои и 1 кб загрузчик. Пинов около 15 шт.

В каком плане сложная? Просто нет "разжёванно -доходчивой" информации.На этом этапе для куба надо попробовать "про мини", получится, можно и дальше двигаться. А в ней, кстати, тоже "аппаратная юсб"? А то ведь и правда не осилю.

Re: Вопросы новичка.

ilalexey » 02 июл 2017, 18:46

Это видел?
На at90 плюшки можно делать. Визуальную прогу вроде можно под себя переделать.

Re: Вопросы новичка.

dimamichev » 02 июл 2017, 19:53

Какие плюшки?! :cry: В январе, по моему писал в теме, что мечтой является создание 4 канального переключателя гирлянд на UNO. А я уже до LED куба добрался, глядишь и до Pro Mini доберусь...Как говорил мой брат - "мне всего то 28 лет, а я уже старший лейтенант".

Re: Вопросы новичка.

dimamichev » 19 июл 2017, 14:57

Пришли модули частично...Перед их пусканием на куб решил бегущую строку попробовать "смакетировать" на русских буквах. Нет ли готового скетча под библиотеку LedControl, автор которой Эбехард Фэйл? Чтобы не массивом фразы писать.
Вложения
IMG_6499.JPG

Re: Вопросы новичка.

dimamichev » 20 июл 2017, 09:50


Код: Выделить всёРазвернуть
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Arduino UNO
//
////////////////////////
//
//программа для бегущей строки на трёх матрицах 8*8, и max7219  //

#include "LedControl.h"//подключаем данную библиотеку
int i=0;int j=0;int k=0;int n=0;
int tabl [8][24];
int tabl1 [8][42]={0,0,1,0,0,0, 1,1,1,1,0,0, 0,0,0,1,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 0,1,1,1,0,0,
                   0,1,0,1,0,0, 1,0,0,0,1,0, 0,0,1,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0,
                   1,0,0,0,1,0, 1,0,0,0,1,0, 0,1,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0,
                   1,0,0,0,1,0, 1,0,0,0,1,0, 0,1,0,0,1,0, 1,0,0,0,1,0, 1,0,0,1,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0,
                   1,0,0,0,1,0, 1,1,1,1,0,0, 0,1,0,0,1,0, 0,1,1,1,1,0, 1,0,1,0,1,0, 1,1,1,1,1,0, 1,0,0,0,1,0,
                   1,1,1,1,1,0, 1,0,0,0,0,0, 0,1,0,0,1,0, 0,0,0,0,1,0, 1,1,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0,
                   1,0,0,0,1,0, 1,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,1,0,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 1,0,0,0,1,0,
                   1,0,0,0,1,0, 1,0,0,0,0,0, 1,0,0,0,1,0, 0,1,1,0,0,0, 1,0,0,0,1,0, 1,0,0,0,1,0, 0,1,1,1,0,0};
LedControl LC = LedControl(12, 11, 10, 3);// создаём объект класса для 3 индикаторов
// при этом выводы 12-DIN 11-CLK 10-CS //

void setup()
{
 
  LC.shutdown(0, false);//выключаем энергосберегающий режим
  LC.setIntensity(0,0 );// устанавливаем интенсивность в 0 единиц между 0 и 15
  LC.clearDisplay(0);//очищаем матрицу 1
  LC.shutdown(1, false);//выключаем энергосберегающий режим
  LC.setIntensity(1, 0);// устанавливаем интенсивность в 0 единиц между 0 и 15
  LC.clearDisplay(1);//очищаем матрицу 2
  LC.shutdown(2, false);//выключаем энергосберегающий режим
  LC.setIntensity(2, 0);// устанавливаем интенсивность в 0 единиц между 0 и 15
  LC.clearDisplay(2);//очищаем матрицу 3
   for (i=0;i<=7;i++) //цикл в цикле для перебора элементов матриц
  {
  for (j=0;j<=23;j++)
   {
    tabl [i][j]=0;
   if (j>=16&j<=23) {LC.setLed(0, i, j-16,tabl [i][j]);}
   if (j>=8&j<=15) {LC.setLed(1, i, j-8,tabl [i][j]);}
   if (j>=0&j<=7) {LC.setLed(2, i, j,tabl [i][j]);}
   }
   }
   
}

void loop()
{
/////////////// ПЕРЕМЕЩЕНИЕ СТРОКИ СПРАВА НАЛЕВО  ///////////////////
  for (j=0;j<=23;j++) //цикл в цикле для перебора элементов матриц
  {
  for (i=0;i<=7;i++)
   {
   if (j<=22) {tabl [i][j]=tabl [i][j+1];
   if (j>=16&j<=22) {LC.setLed(0, i, j-16,tabl [i][j]);}
   if (j>=8&j<=15) {LC.setLed(1, i, j-8,tabl [i][j]);}
   if (j>=0&j<=7) {LC.setLed(2, i, j,tabl [i][j]);}}else {if (k<=41){tabl [i][j]=tabl1 [i][k];}else {tabl [i][j]=0;}LC.setLed(0, i, j-16,tabl [i][j]);}
   }
   }
    k++;delay(100);n++;if (n==60){k=0;n=0;}
   
   
}

Как то медленно получается передвижение букв, волнами...Всего один "делай" в программе, а тормозит ого го. Из-за данной библиотеки или скетч виноват?..Даже грустно алфавит набивать и дальше программу делать.


Rambler\'s Top100 Mail.ru counter