roboforum.ru

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


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

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

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

Сообщение Madf » 03 сен 2017, 14:19

dimamichev писал(а):Ещё вариант "революционный" возник в воспалённом сознании...На мах7219 ставим матрицу светодиодов оптопар

Я ща задумал делать нечто подобное, но в обратную сторону, сделать матрицу из датчиков холла. Погляжу что получится. :D Давно хотел, но буржуи уже опередили. :x
Madf
 
Сообщения: 2668
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

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

Сообщение Angel71 » 03 сен 2017, 17:37

"матрица-решётка светодиодов 16*16 это не 4*8*8" да фиолетово. массив, хоть одномерный, хоть трёхмерны или ещё какой, всё-равно массив. есть взаимосвязь между компонентами, как соединять светодиоды и как их "сканировать". хочется исходить от того, как светодиоды соединены исходить (или уже спаял), ну так подстраивашся под такую схему диодов и подбираешь детальки и как сканировать. исходишь от деталек или от сканирования, подстраиваеш всё остальное. :pardon:
:ROFL: да делай на оптопарах, если такой упёртый.
"и моя (убогая но понятная мне)отдельные слои" настолько прям понятная, что не можешь понять как сделать. забавно. даже вникать не хочу, что там за понятная, но непонятная штука такая. хочешь мудрить, мудри сам. не хочешь костыли корявые, так открываешь те ссылки с проектом куба 16*16*16, в конце есть архив. смотришь схему. нужно не 16*16*16, а 8*8*8, просто "выкидываешь" половину деталей. про то, что логику и транзисторы можно по обстакановке менять, уже писал.
Аватара пользователя
Angel71
 
Сообщения: 9727
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение dimamichev » 03 сен 2017, 21:22

Angel71 писал(а): даже вникать не хочу, что там за понятная, но непонятная штука такая. хочешь мудрить, мудри сам. не хочешь костыли корявые, так открываешь те ссылки с проектом куба 16*16*16, в конце есть архив. смотришь схему. нужно не 16*16*16, а 8*8*8, просто "выкидываешь" половину деталей. про то, что логику и транзисторы можно по обстакановке менять, уже писал.

Ну что тут вникать?..По моему кубу (сверху)не надо слои между собой паять (клумота это), зато выводов больше по сравнению с классическим (снизу). Посмотрел схемы 16*16*16, в принципе ясно, на куб 9*9*9 пойдёт 20 корпусов кроме контроллера.
Вообще верхний куб легко переделывается в тип нижнего - достаточно по стрелке соединить выводы светодиодов на каждом уровне.Так, мне кажется, будет удобнее делать решётку куба.
Вложения
рис. 5.JPG
FA0NK40GI0TDO2S.MEDIUM.jpg
Аватара пользователя
dimamichev
 
Сообщения: 506
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Angel71 » 03 сен 2017, 22:14

:crazy: ёпрст
:) 8 не соединённых между собой вот таких
lm.png

слоёв? если да, тогда для 8*8*8 (неужели так туго доходит, что из-за +1 по x, y, z мудрёж того не стоит?) на каждый слой по одной 7219 на каждый. что в этом
lm2.png

сложного?
не хочется 7219, можно на каждый слой по две 595е или ещё какую комбинацию сдвиговых (со встроенным шимом или без), защёлок, дешифраторов,... хочется слои соединить, ну так соединяй. не нравится как в том проекте куба 16*16*16, можно примерно так
lm3.jpg

2803 можно на транзисторы заменить. 595е на сдвиги со встроенным шимом.
и т.д. простенькая задачка, а уже столько дней не можете определиться, как куб сделать.
Последний раз редактировалось Angel71 03 сен 2017, 22:46, всего редактировалось 1 раз.
Аватара пользователя
Angel71
 
Сообщения: 9727
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение dimamichev » 03 сен 2017, 22:45

На 32 странице есть схема... и сообщение моё про то что давно дошло...8*8*8 для мах не проблема, как 9*9*9 сделать на них, а :( ?
Вложения
СХЕМА КУБА уно.jpg
Аватара пользователя
dimamichev
 
Сообщения: 506
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Angel71 » 03 сен 2017, 23:02

было что-то как минимум про кубы 6*6*6, 8*8*8 и 16*16*16.
с 9*9 в одном из вариантов да точно так же, как и для 16*16 (с 16*24, 16*32, 16*64, 32*32,...). при увеличении размерности матрицы по нужной оси или добавляется соответствующее кол-во микросхем/транзисторов/... или то, что использовалось для меньшей размерности меняется на что-то другое. и часть пинов не используется + в коде аналогично с избыточностью.
отталкиваемся от матрицы светодиодов, ну так под неё и подбирается вариант как сканировать и какие детали брать.
lm4.PNG

много? выкидывается лишнее.
lm5.png
lm5.png (8.2 КиБ) Просмотров: 363

опять много?
lm6.png
lm6.png (4.55 КиБ) Просмотров: 364

по одной оси 1-2 каких микросхемки (улн, сдвиги,...) или на ноги мк. и по другой оси 1-2 микросхемки, допустим одна 12, 16 или 24 канальная или две 8-ми канальных логики сдвига (без шима или с шимом или ещё какими плюшками). нужно ещё резисторы, транзисторы, оптореле,... добавляются. что сложного?
не, если хочется поприкалываться с экономией деталек, можно как 8*8 и немножко поупражняться с 9й строчкой, столбцом и слоем. но с этим всё просто - любишь с горочки кататься, луби и саночки возить. т.е. прикалывайтесь сами.
Аватара пользователя
Angel71
 
Сообщения: 9727
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение dimamichev » 09 сен 2017, 22:20

Доделал наконец то потроха куба и скетча...можно теперь "оптоматрицу" паять.Заметил, в слоях - отдельные светодиоды тускло подмигивают когда не должны гореть при переключении соседних светодиодов по сценарию скетча. В чём может быть причина? :(
Код: Выделить всёРазвернуть
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Arduino UNO, Pro Mini
//
////////////////////////
//
//программа для LED куба на шести матрицах 8*8, и max7219  //

#include "LedControl.h"//подключаем данную библиотеку
int i=0;int j=0;int k=0;int k1=0;int k2=0;int k3=0;
int n=50;//50 миллисекунд- единица длительности паузы переключений
int x=1;
int r=3;// количество повторов программ
int r1=1;



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

void setup()
{
   for (i=0;i<=5;i++)
   { 
  LC.shutdown(i, false);//выключаем энергосберегающий режим
  LC.setIntensity(i,4 );// устанавливаем интенсивность в 4 единиц между 0 и 15
  LC.clearDisplay(i);//очищаем матрицу i
   }
 
}
void loop()
{
  ///////////////////////////////////// ПРОГРАММА №1 ///////////////////////////////////

r1=1;     
while(r1<=r){r1++;
  byte  tabl[6]={B11111100,
                 B01111000,
                 B00110000,
                 B00110000,
                 B01111000,
                 B11111100};

  for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
  {
    if(k==0)
    {k=1;
  for (i=0;i<=5;i++)
   { 
    if (x==1){LC.setRow(j, i,tabl[i] );} else {LC.setColumn(j, i,tabl[i] );};delay(2*n);
    LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
    LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
   }}
   if(k==1)
    {k=0;j++;
  for (i=5;i>=0;i--)
   { 
    if (x==1){LC.setRow(j, i,tabl[i] );} else {LC.setColumn(j, i,tabl[i] );};delay(2*n);
    LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
    LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
   }}
   
   }
   
   
   delay(5*n);
   LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
   LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);delay(5*n);x=!x;
   ///////////////////////////////////// ПРОГРАММА №2 ///////////////////////////////////
 
byte  tabl1[6][6]={B00011000, B00111000, B01111100, B00011000, B01111100, B00111000,
                    B00110000, B01000100, B00000100, B00101000, B01000000, B01000100,
                    B01010000, B00000100, B00111000, B01001000, B00111000, B01111000,
                    B00010000, B00111000, B00000100, B01001000, B00000100, B01000100,
                    B00010000, B01000000, B01000100, B01111100, B01000100, B01000100,
                    B01111100, B01111100, B00111000, B00001000, B00111000, B00111000};
for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
  {
   
  for (i=0;i<=5;i++)
   { 
    if (x==0) {LC.setRow(j, i,tabl1[i][j] );}else {LC.setRow(j, i,tabl1[i][5-j] );}
   }
   delay(5*n);
   LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
   LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);}                   
  }
   ///////////////////////////////////// ПРОГРАММА №3 /////////////////////////////////// 
  byte  tabl[6]={B10000000,
                 B11000000,
                 B11100000,
                 B11110000,
                 B11111000,
                 B11111100};
  r1=1;     
while(r1<=r){r1++;
  for (j=0;j<=5;j=j+2) //цикл в цикле для перебора элементов матриц
  {
   
  for (i=0;i<=5;i++)
   { 
    LC.setRow(j, i,tabl[i]);
   }
   delay(5*n);
    LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
    LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
     for (i=0;i<=5;i++)
   { 
    LC.setColumn(j+1, i,tabl[i]);
   }
   delay(5*n);
    LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
    LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
   }
  }
///////////////////////////////////// ПРОГРАММА №4 ///////////////////////////////////
  r1=1;     
while(r1<=r){r1++; 
  for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
  {
   
  for (i=0;i<=5;i++)
   {   
     LC.setLed(0, i, j,1); 
   }
  }
  delay(10*n);
  for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
  {
   
  for (i=0;i<=5;i++)
   {   
     LC.setLed(0, i, j,0);LC.setLed(1, i, j,1);delay(n); LC.setLed(1, i, j,0);LC.setLed(2, i, j,1);delay(n);
     LC.setLed(2, i, j,0);LC.setLed(3, i, j,1);delay(n); LC.setLed(3, i, j,0);LC.setLed(4, i, j,1);delay(n);
     LC.setLed(4, i, j,0);LC.setLed(5, i, j,1);delay(n);
   }
  }
  delay(10*n);
 
    LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
    LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5); 
}
///////////////////////////////////// ПРОГРАММА №5 ///////////////////////////////////
  byte tabl2[6][4]={B11111100, B00000000, B00000000, B11111100,
                    B10000100, B01111000, B00000000, B11111100,
                    B10000100, B01001000, B00110000, B11111100,
                    B10000100, B01001000, B00110000, B11111100,
                    B10000100, B01111000, B00000000, B11111100,
                    B11111100, B00000000, B00000000, B11111100};
   r1=1;     
while(r1<=2*r){r1++;                 
   for (i=0;i<=5;i++)
   { 
    LC.setRow(1, i,tabl2[i][3]);LC.setRow(3, i,tabl2[i][3]);
   }
   delay(3*n);
    LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
    LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5); 
for (i=0;i<=5;i++)
   { 
    LC.setRow(0, i,tabl2[i][2]);LC.setRow(1, i,tabl2[i][1]);LC.setRow(2, i,tabl2[i][0]);
    LC.setRow(4, i,tabl2[i][2]);LC.setRow(3, i,tabl2[i][1]);
   }
   delay(3*n);
    LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
    LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5); 
     for (i=0;i<=5;i++)
   { 
    LC.setRow(1, i,tabl2[i][3]);LC.setRow(3, i,tabl2[i][3]);
   }
   delay(3*n);
    LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
    LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5); 
  for (i=0;i<=5;i++)
   { 
    LC.setRow(0, i,tabl2[i][0]);LC.setRow(1, i,tabl2[i][1]);LC.setRow(2, i,tabl2[i][2]);
    LC.setRow(4, i,tabl2[i][0]);LC.setRow(3, i,tabl2[i][1]);
   }
   delay(3*n);
    LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
    LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
}
///////////////////////////////////// ПРОГРАММА №6 ///////////////////////////////////
  r1=1;     
while(r1<=12*r){r1++;
for (i=0;i<=0;i++)
   {   k1=random(0,4); k2=random(0,4);k3=random(0,4); 
LC.setLed(k1, k2, k3,1); LC.setLed(k1, k2, k3+1,1);LC.setLed(k1, k2, k3+2,1);LC.setLed(k1, k2+1, k3+2,1);LC.setLed(k1, k2+2, k3+2,1);LC.setLed(k1, k2+2, k3+1,1);LC.setLed(k1, k2+2, k3,1);
LC.setLed(k1, k2+1, k3,1);
LC.setLed(k1+2, k2, k3,1); LC.setLed(k1+2, k2, k3+1,1);LC.setLed(k1+2, k2, k3+2,1);LC.setLed(k1+2, k2+1, k3+2,1);LC.setLed(k1+2, k2+2, k3+2,1);LC.setLed(k1+2, k2+2, k3+1,1);LC.setLed(k1+2, k2+2, k3,1);
LC.setLed(k1+2, k2+1, k3,1);
LC.setLed(k1+1, k2, k3,1); LC.setLed(k1+1, k2, k3+2,1);LC.setLed(k1+1, k2+2, k3+2,1);LC.setLed(k1+1, k2+2, k3,1);delay(3*n);}
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);

}
///////////////////////////////////// ПРОГРАММА №7 ///////////////////////////////////
  r1=1;     
while(r1<=4*r){r1++;
  for (k1=5;k1>=0;k1--)
   {LC.setLed(k1, k1, k1,1);delay(2*n);LC.setLed(k1, k1, k1,0);}k1=0;
   LC.setLed(k1, k1+1, k1,1);LC.setLed(k1, k1, k1+1,1);LC.setLed(k1+1, k1, k1,1);delay(2*n);LC.clearDisplay(0);LC.clearDisplay(1);
   LC.setLed(k1, k1+2, k1,1);LC.setLed(k1, k1, k1+2,1);LC.setLed(k1+2, k1, k1,1);delay(2*n);LC.clearDisplay(0);LC.clearDisplay(2);
   LC.setLed(k1, k1+3, k1,1);LC.setLed(k1, k1, k1+3,1);LC.setLed(k1+3, k1, k1,1);delay(2*n);LC.clearDisplay(0);LC.clearDisplay(3);
   LC.setLed(k1, k1+4, k1,1);LC.setLed(k1, k1, k1+4,1);LC.setLed(k1+4, k1, k1,1);delay(2*n);LC.clearDisplay(0);LC.clearDisplay(4);
   LC.setLed(k1, k1+5, k1,1);LC.setLed(k1, k1, k1+5,1);LC.setLed(k1+5, k1, k1,1);delay(2*n);LC.clearDisplay(0);LC.clearDisplay(5);
   }
    ///////////////////////////////////// ПРОГРАММА МАТРИЦА ///////////////////////////////////
  r1=1;     
while(r1<=r){r1++;int tabl2[6][6];
  for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
  {
   
  for (i=0;i<=5;i++)
   {   
     LC.setLed(0, i, j,1);   
   }
  }
  delay(10*n);
  //////////////////////////////////////////////////////////////////////////////////////////
  for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
  {
   
  for (i=0;i<=5;i++)
   {
    k2=random(0,6); tabl2[i][j]=k2; 
    for (k1=1;k1<=k2;k1++)
   {   
     LC.setLed(k1-1, i, j,0);LC.setLed(k1, i, j,1);delay(n);
   }
  }
  }
  delay(50*n);
  /////////////////////////////////////////////////////////////////////////////////////////
  for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
  {
   
  for (i=0;i<=5;i++)
   {
    k2=tabl2[i][j];
    for (k1=i;k1<=4;k1++)
   {   
      LC.setLed(k2, k1, j,0);LC.setLed(k2, k1+1, j,1);delay(n);
   }
  }
  }
  delay(50*n);
    LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
    LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5); 
}           
}                 
Вложения
IMG_7018.JPG
Аватара пользователя
dimamichev
 
Сообщения: 506
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Gomez » 10 сен 2017, 15:12

Здравствуйте!
Хочу подключить обычную светодиодную новогоднюю гирлянду (100 LED всего, 4 цвета) к Ардуино Уно, ибо надоела видимая дискретность изменения яркости в плавных режимах, а нужны только плавные.
Нашел статьи, где для подключения используется драйвер двигателя L298N.
Вопрос - не чрезмерно ли это для подобной гирлянды?
Не подойдет ли "народный" A4988? И никто не делал на нем, чтобы почитать, поучиться?
Gomez
 
Сообщения: 5
Зарегистрирован: 10 сен 2017, 15:02

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

Сообщение dimamichev » 10 сен 2017, 20:49

Angel71 писал(а):по одной оси 1-2 каких микросхемки (улн, сдвиги,...) или на ноги мк. и по другой оси 1-2 микросхемки, допустим одна 12, 16 или 24 канальная или две 8-ми канальных логики сдвига (без шима или с шимом или ещё какими плюшками). нужно ещё резисторы, транзисторы, оптореле,... добавляются. что сложного?
не, если хочется поприкалываться с экономией деталек, можно как 8*8 и немножко поупражняться с 9й строчкой, столбцом и слоем. но с этим всё просто - любишь с горочки кататься, луби и саночки возить. т.е. прикалывайтесь сами.

Пока прикалываюсь, нашёл описание готового модуля, но не могу найти на алиэкспресс, данных на источнике-сайте (http://www.rlocman.ru/forum/showthread.php?t=11260) о модуле никаких...Может кто знает как его искать в интернет магазинах?
Вложения
5.jpg
Voxel_sch.png
Аватара пользователя
dimamichev
 
Сообщения: 506
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение loox » 11 сен 2017, 09:37

DimaMichev
Эта схема 8*8*8. Вы опять возвращаетесь к началу обсуждения.
Loox
loox
 
Сообщения: 305
Зарегистрирован: 26 мар 2008, 12:45

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

Сообщение Myp » 11 сен 2017, 11:38

Gomez писал(а):Здравствуйте!
Хочу подключить обычную светодиодную новогоднюю гирлянду (100 LED всего, 4 цвета) к Ардуино Уно

там напряжение под 70 вольт на каждый цвет, это только транзисторами управлять
бери штатный контроллер, отрезай ненужное и подключай транзисторы из штатного контроллера к ардуине.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 17141
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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

Сообщение dimamichev » 11 сен 2017, 19:25

Myp писал(а):
Gomez писал(а):Здравствуйте!
Хочу подключить обычную светодиодную новогоднюю гирлянду (100 LED всего, 4 цвета) к Ардуино Уно

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

А там транзисторы стоят? У меня на лампочках переключатель, там тринисторы (как транзисторы) и напряжение 220В. Тоже с этого желания всё начиналось - переключалка для гирлянд на Ардуино.
loox писал(а):DimaMichev
Эта схема 8*8*8. Вы опять возвращаетесь к началу обсуждения.
Loox

В том то и замысел для 9*9*9. Купить-найти по дешевле модуль и в схему добавить четыре микросхемы (одну в развёртку), хотя развёртку можно и на выводах Ардуино сделать.
Аватара пользователя
dimamichev
 
Сообщения: 506
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Gomez » 13 сен 2017, 15:09

Myp писал(а):бери штатный контроллер, отрезай ненужное и подключай транзисторы из штатного контроллера к ардуине.

О, спасибо! Самый простой выход!
А чтобы не дербанить, могу, видимо, что-то такое использовать
https://ru.aliexpress.com/store/product ... 739c0s2Ts6
(хотя это из пушки по воробьям...)
Gomez
 
Сообщения: 5
Зарегистрирован: 10 сен 2017, 15:02

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

Сообщение dimamichev » 13 сен 2017, 21:50

Раз кроме гирлянд ничего от переключателя использовать не собираетесь, грех платку с тринисторами не спалить...Отделяем по красному от подобной схемы, в 5 точек - к 4 выводам Ардуино и выводу GND...
Вложения
ng3.jpg
Аватара пользователя
dimamichev
 
Сообщения: 506
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение loox » 13 сен 2017, 22:55

Категрически не рекомедую этого делать. Это не безопасно!!!!!!
loox
 
Сообщения: 305
Зарегистрирован: 26 мар 2008, 12:45

Пред.След.

Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 1

Mail.ru counter