roboforum.ru

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

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

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

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

Сообщение Angel71 » 17 окт 2017, 21:15

:) программирование на угад, мило. хорошо, раз это такой тёмный лес и "своим путём", тогда поиск причины будет чуть сложней - характеристики мк в даташите, код библиотеки открытый. даже даталоггером смотреть что на пинах мк не понадобиться.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение Dmitry__ » 18 окт 2017, 02:10

Ну круто, чо? Чуваг хоть признался что слабоумен. Не буду мешать :lol: :lol: :lol:
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

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

Сообщение dimamichev » 18 окт 2017, 07:47

Dmitry__ писал(а):Ну круто, чо? Чуваг хоть признался что слабоумен. Не буду мешать :lol: :lol: :lol:

Это всё что полезного от тебя? А ты так не можешь. Дорогой даташитчик - ?<Uобр 5В>? :ROFL:
Или про 2 Кб брехнёшь? Хотя в лом читать, всё равно пурга.
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Dmitry__ » 18 окт 2017, 14:05

Дарагуша, вроде бы мы выяснили, что пока я нигде не брехал, а ты тупил. :)
Ламеру везде кажется, что все брешут, правда потом сказывается отсутствие знаний, а признаться в этом ламеру очень сложно.
dimamichev писал(а):Или про 2 Кб брехнёшь? Хотя в лом читать, всё равно пурга.

Что тебе сбрехнуть про 2кб? Где у нас затык? :D
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

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

Сообщение dimamichev » 25 окт 2017, 20:50

Dmitry__ писал(а):Дарагуша, вроде бы мы выяснили, что пока я нигде не брехал, а ты тупил. :)
Что тебе сбрехнуть про 2кб? Где у нас затык? :D

Повторяться надоело...(мне). Повторяться не надоело? (тебе).
Разобрались с 2 кб, подтвердилось ограничение на количество светодиодов - "650-680 в теории", при пробном скетче 610, при "серьёзном" ещё меньше. Так что буду пробовать на кубе 5*5*5. Ну а пока идут с али светодиоды, вожусь с одноцветным кубом.
Код: Выделить всёРазвернуть
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Arduino UNO, Pro Mini
//
////////////////////////
//
//программа для LED куба на шести матрицах 6*6, и max7219  //

#include <LedControl.h>//подключаем данную библиотеку
int i=0;int j=0;int k=0;int k1=5;
int n=5;//5 миллисекунд- единица длительности паузы переключений

 
           
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 ДВИЖЕНИЯ ПЛОСКОСТИ ///////////////////////////////////

   for (k=0;k<=161;k=k+3)
{int tabl[6][6]={1,1,0,0,1,1,
                 1,1,0,0,1,1,
                 1,1,1,1,0,0,
                 0,0,1,1,0,0,
                 1,1,0,0,1,1,
                 1,1,0,0,1,1}; //массив, задающий изображение в плоскости
                     
   for (i=0;i<=k1;i++) //цикл в цикле для перебора элементов матриц
   {
   for (j=0;j<=k1;j++)
   {
   int tabl1[162]={0,i,j, i,j,5-i, i,j,5, i,j,i, 5,i,j, i,j,5-i, i,j,0, i,j,i,
                0,i,j, i,i,j, i,0,j, i,1,j, i,2,j, i,3,j, i,4,j, i,5,j, i,4,j, i,3,j, i,2,j, i,1,j, i,0,j,
                i,5-i,j, 5,i,j, i,i,j, i,5,j, i,5-i,j,
                0,i,j, 1,i,j, 2,i,j, 3,i,j, 4,i,j, 5,i,j, 4,i,j, 2,i,j, 1,i,j,
                0,i,j, i,j,5-i, i,j,5, i,j,4, i,j,3, i,j,2, i,j,2, i,j,1, i,j,0,
                i,j,1, i,j,2, i,j,3, i,j,4, i,j,5, i,j,i, 5,i,j, i,j,5-i, i,j,0, i,j,i};//массив задающий движение и вращение плоскости   
    if (tabl[i][j]==1){LC.setLed(tabl1[k],tabl1[k+1],tabl1[k+2],1);}//включение светодиодов плоскости
 
   }
   
   }
   
   delay(5*n);
   LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);//очистка матриц куба
   LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
   }
   ///////////////////////////////////// ПРОГРАММА 2 ДВИЖЕНИЯ ПЛОСКОСТИ //////////////////////////////////////////////////
   byte tabl2[6]={B11001100,
                  B11001100,
                  B00110000,
                  B00110000,
                  B11001100,
                  B11001100};//массив,задающий изображение в плоскости
    for (k=0;k<=6;k++)
    {
   
   ///////////////////////////////////////////////////////////////////////////////////////
   
    for (i=0;i<=k1;i++) //цикл в цикле для перебора элементов матриц
   {
   for (j=0;j<=k1;j++)
   {
  LC.setRow(i-1,j,B00000000 ); LC.setRow(i,j,tabl2[j] );
   }
   delay(15*n);
   }
    for (i=k1+1;i>=0;i--) //цикл в цикле для перебора элементов матриц
   {
   for (j=0;j<=k1;j++)
   {
  LC.setRow(i+1,j,B00000000 ); LC.setRow(i,j,tabl2[j] );
   }
   delay(15*n);
   }
   
   ///////////////////////////////////////////////////////////////////////////////////////
   }
 
   
   }
 
   

Для примера написал скетч - в первой части изображение плоское вращается и движется поступательно под управлением функции setLed(), во второй движется под управлением setRow().Первое изображение мерцает (на что указал Madf), второе нет. Как избавиться от недочёта? Использовать только setRow() в скетче? Поменять библиотеку? Искать улучшенный вариант?
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Angel71 » 26 окт 2017, 06:49

пытаясь в лоб задачу решать, вариант использовать внешнюю память, взять более подходящий мк, подготавливать данные заранее или использовать как устройство отоброажения для смартфона, планшета, компьютере,... похоже даже не рассматривался.
8^3=512, памяти хватает, по этому нужно уменьшить до 5^3. :good:
уменьшить потребление памяти можно снижением битности, использованием палитры или хранить цвета не в цветовом пространстве rgb. светодиоды сами по себе это ячейки памяти и хранить весь буфер в памяти мк не обязательно. вместо хранения массива точек можно хранить только данные для вычисления (совсем не обязательно, что бы это были точки, линии, плоскости и прочие фигуры). для некоторых анимаций есть такое ругательство как симметрия, т.е. разбивая куб на части, выделять данных нужно в разы меньше. и это только малая часть возможных вариантов.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение dimamichev » 03 ноя 2017, 16:48

Пришли светодиоды, частично. Сделал приспособление для натяжки стальной проволоки, попробовал запустить слой.
Вложения
IMG_7120.JPG
IMG_7097 — копия.JPG
IMG_7112.JPG
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение dimamichev » 07 ноя 2017, 22:39

Собрал...
Вложения
IMG_7123.JPG
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Madf » 08 ноя 2017, 12:38

Отлично, но у этого решения есть только одна проблема - угол обзора всего в районе 180 градусов.
Тест прогонял, всё работает?
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

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

Сообщение Angel71 » 08 ноя 2017, 14:24

Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение dimamichev » 08 ноя 2017, 14:51

Такую программу прогонял.
Код: Выделить всёРазвернуть
// Подключаем библиотеку Adafruit NeoPixel.
#include "Adafruit_NeoPixel.h"

// Указываем, какое количество пикселей у нашей ленты.
#define LED_COUNT1 125


// Указываем, к какому порту подключен вход ленты DIN.
#define LED_PIN1 6

Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(LED_COUNT1, LED_PIN1, NEO_GRB + NEO_KHZ800);// Создаем переменную strip для управления нашей лентой.


int r=0;int g=0;int b=0;
int k=5;//яркость свечения пикселя из 0 до 255 ступеней
int j=0;int i=0;//cчётчики
int k1=5;//число пикселей в ребре куба
int n=35;//единица длительности переключений в мс
void setup()
{
strip1.begin();
}

void loop()
{
////////////////////////////////// ПРОГРАММА ПЕРЕКЛЮЧЕНИЯ РАДУЖНЫЙ ДОЖДИК //////////////////////////////////////////
g=random(0,2);r=random(0,2);b=random(0,2); //псевдослучайный выбор цвета с исключением его отсутствия
if (g==0&&r==0&&b==0){r=1;g=1;}

  // Включаем и выключаем по одной плоскости в одну сторону светодиоды.
  for (i = 0; i <= k1-1; i++)
  {
    for(j=0;j<=k1*k1-1;j++)
    {
  strip1.setPixelColor(i+k1*j, strip1.Color(k*g,k*r,k*b)); //псевдослучайный цвет на яркости k
    }
  strip1.show(); delay(3*n);
  if (i<=k1-2){
    for(j=0;j<=k1*k1-1;j++)
    {
  strip1.setPixelColor(i+k1*j, strip1.Color(0,0,0));//выключение пикселя
    }
   strip1.show();}
  }
   // Включаем и выключаем по одному в другую сторону светодиоды.
   for (i=k1*k1*k1-1 ; i >= 0; i--)
  {
  strip1.setPixelColor(i, strip1.Color(k*g,k*r,k*b)); //псевдослучайный цвет
  strip1.show(); delay(n);
  strip1.setPixelColor(i, strip1.Color(0,0,0)); //выключение пикселя
  strip1.show();
  }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  }


Добавлено спустя 6 минут 25 секунд:
С обзором, да!.. Вариант только настольно-угловой. Надо смотреть светодиоды подороже, что Ангел советовал.

ПС Чего то не мог вчера со своего ip влезть на форум - писали что адрес в чёрном списке... лазил через "забор".
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Madf » 08 ноя 2017, 15:53

dimamichev писал(а):Такую программу прогонял.

Да там для теста достаточно только белый прогнать и всё.

dimamichev писал(а):Надо смотреть светодиоды подороже, что Ангел советовал.

Что-то пропустил, какие?

dimamichev писал(а):ПС Чего то не мог вчера со своего ip влезть на форум - писали что адрес в чёрном списке... лазил через "забор".

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

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

Сообщение dimamichev » 08 ноя 2017, 16:37

Вот такие советовал...
https://www.aliexpress.com/item/WESIRI- ... 07871.html
Но есть подревнее и дешевле (или показалось?), где микросхема отдельно, светодиод мутный отдельно...
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Angel71 » 08 ноя 2017, 17:06

сначала берутся светодиоды и ардуина. когда начинается сборка и первые наброски кода, доходит, что памяти не особо. угол свечения светодиодов слегка меньше 180 градусов само по себе. даже если светодиоды будут не в сторону светить, а в верх, то ещё и платка немного перекрывать будет. неожиданно, прям как приход зимы. сейчас мудрёж с диодами и внешней микросхемой. куда больше сотни микр запихивать, а сколько проводов будет? риторический.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение Madf » 08 ноя 2017, 17:44

Есть у меня мешок подобных светоедов, покупал для гирлянды, хрупкие ноги, надо было что-то придумывать с их креплением, было лень и купил готовое всё. :D
Проще взять тоже самое (ws2812) и просто сделать плату специальную под два чипа с двух сторон или не парится и расположить их не вертикально, а горизонтально + поместить в белый светофильтр (типа шара). В общем конечно многое что можно придумать, надо экспериментировать на одном "пикселе".
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Пред.След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3