roboforum.ru

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

Подсветка а-ля Ambilight

Правила форума
В этом форуме новые темы не создаются, однако обсуждение допустимо.

Re: Подсветка а-ля Ambilight

-= Александр =- » 09 фев 2008, 05:40

Да, есть у меня такой глюк, правда проявляется гораздо реже. Но работа над ним в процессе!
Пока непонятно в чем дело, но скорее всего это глюк программы. Какая у тебя версия?

Re: Подсветка а-ля Ambilight

Freeman » 12 фев 2008, 21:09

Версия 1.3 бэта... но и в 1.2 то же самое было... мне кажется что дело с драйвером порта...
хотя я не программист, а сетевик(не совсем :lol: ), и то, только учусь)

Re: Подсветка а-ля Ambilight

Freeman » 17 фев 2008, 16:16

Еще вопрос появился(немного в оффтоп): Как в коде вижн АВР получить файл пришивки(.hex файл)?

Re: Подсветка а-ля Ambilight

-= Александр =- » 17 фев 2008, 19:24

Просто скомпиль проект и он его сгенерит. Shift+F9

Re: Подсветка а-ля Ambilight

Freeman » 18 фев 2008, 22:02

компилит... создает кучу файлов в том числе и .asm, но никаких .hex не создает... предлагает сразу зашить в контроллер

Re: Подсветка а-ля Ambilight

-= Александр =- » 18 фев 2008, 22:31

У меня почему-то все создает... Может у тебя настроен компилер на создание .rom - поищи в настройках...

Re: Подсветка а-ля Ambilight

Freeman » 24 фев 2008, 03:02

Вот под СМД зделал лейаут... мож кто проверит?

З.Ы.: сод вижн все равно хекс файл не создает... как не шаманил...

Re: Подсветка а-ля Ambilight

Duhas » 24 фев 2008, 18:29

ну ты бы выложил рас хочешь чтоб проверили ? ....

Re: Подсветка а-ля Ambilight

Freeman » 24 фев 2008, 22:36

Ой, извиняюсь, не заметил что файл не заатачился...
там все разведено под штыревые коннекторы... по отдельности выведены площадки для подключения программатора...
вот...
Вложения
ambilight.rar
(23.08 КиБ) Скачиваний: 115

Re: Подсветка а-ля Ambilight

Duhas » 25 фев 2008, 01:12

мля... могет в чем гить более традициональном? лэйаут там.. пикад или картинкой.... а то я чуствую скоро в 3д максе будем платы рисовать ..

Re: Подсветка а-ля Ambilight

Master » 25 фев 2008, 10:05

Ага объемные со сглаживанием :)

Re: Подсветка а-ля Ambilight

APf72 » 27 фев 2008, 20:11

Приветствую всех! Александр, хорошую тему замутил!
-= Александр =- писал(а):Да, есть у меня такой глюк, правда проявляется гораздо реже. Но работа над ним в процессе!
Пока непонятно в чем дело, но скорее всего это глюк программы. Какая у тебя версия?

Сам пока не собирал, но, кажется, знаю чем помочь:
Замени строки
Код: Выделить всёРазвернуть
if(R[i]+G[i]+B[i]==0)E[i]=0;
else E[i]=1;
на
Код: Выделить всёРазвернуть
E[i] = (R[i] || G[i] || B[i]);

Вообще если проект еще не закрыт, могу предложить свою помощь, чем смогу - помогу. Пишу на Delphi, могу попытаться что-то сделать на C. Также у меня есть замечания по твоему исходнику (типа "а я бы делал так..."), так что если они тебе нужны - напиши. Но повторю, что специализируюсь на Delphi, а C знаю только т.к. приходится.

Re: Подсветка а-ля Ambilight

-= Александр =- » 03 мар 2008, 02:10

Нет, глюк именно сверху. Будь он там - оно бы воспроизводимо было. А так - случайно всплывает...
Все замечания пиши сюда - вместе подумаем! :wink:
Проект всегда открыт, только вот руки редко доходят что-то доделывать...

Re: Подсветка а-ля Ambilight

APf72 » 04 мар 2008, 05:12

-= Александр =- писал(а):Нет, глюк именно сверху. Будь он там - оно бы воспроизводимо было. А так - случайно всплывает...

А оно и воспроизводимо! Попробуй цвета 0x0202FC, 0x808000 или 0x404080. Может в коде еще есть ошибка, но при этих цветах E = 0 точно!
-= Александр =- писал(а):Все замечания пиши сюда - вместе подумаем!

Рассмотрим блок:
Код: Выделить всёРазвернуть
for(i=1;i<=4;i++)
  {
  if(rx_buffer[0]==i-1){R[i]=rx_buffer[1];G[i]=rx_buffer[2];B[i]=rx_buffer[3];}
  if(R[i]+G[i]+B[i]==0)E[i]=0;
  else E[i]=1;
  }

Во первых, заменяем
Код: Выделить всёРазвернуть
if(R[i]+G[i]+B[i]==0)E[i]=0;
else E[i]=1;

на
Код: Выделить всёРазвернуть
E[i] = (R[i] || G[i] || B[i]);

тем самым, исправляя глюк.
В твоем цикле E задается для каждого i от 1 до 4, но, за один раз, изменяется значение только одного E, поэтому «E[i]=» переносим «глубже»:
Код: Выделить всёРазвернуть
for(i=1;i<=4;i++)
  {
  if(rx_buffer[0]==i-1)
    {
    R[i]=rx_buffer[1];G[i]=rx_buffer[2];B[i]=rx_buffer[3];
    E[i] = (R[i] || G[i] || B[i]);
    }
  }

Исходя из полученного, приходим к выводу, что цикл нам вообще ни к чему:
Код: Выделить всёРазвернуть
i = rx_buffer[0]+1;
R[i] = rx_buffer[1];
G[i] = rx_buffer[2];
B[i] = rx_buffer[3];
E[i] = (R[i] || G[i] || B[i]);

На случай, если в будущем будут предусмотрены дополнительные команды, придется добавить ограничение:
Код: Выделить всёРазвернуть
i = rx_buffer[0]+1;
if (i <= 4)
  {
  R[i] = rx_buffer[1];
  G[i] = rx_buffer[2];
  B[i] = rx_buffer[3];
  E[i] = (R[i] || G[i] || B[i]);
  }

Элементы с индексами [0] у тебя не используются (пропадают без дела), поэтому можно строку
Код: Выделить всёРазвернуть
i = rx_buffer[0]+1;

заменить на
Код: Выделить всёРазвернуть
i = rx_buffer[0];

но тогда необходимо в строках
Код: Выделить всёРазвернуть
if(E[1]){R1=1; G1=1; B1=1;}

и др., а также
Код: Выделить всёРазвернуть
if(counter>R[1])R1=0; if(counter>G[1])G1=0; if(counter>B[1])B1=0;

и др. заменить индекс [1] на [0], [2] на [1] и т.д. В строке
Код: Выделить всёРазвернуть
if (i <= 4)

можно будет просто убрать знак «равно».
Ну, и совсем для «готичности», вместо этих строк
Код: Выделить всёРазвернуть
R[1]=0;
G[1]=0;
B[1]=0;

и др. можно сделать так:
Код: Выделить всёРазвернуть
char R[4] = {0, 0, 0, 0};

и т.д.
Кроме того в строках
Код: Выделить всёРазвернуть
if(counter>R[1])R1=0; if(counter>G[1])G1=0; if(counter>B[1])B1=0;

ты используешь знак «больше», поэтому контроллер будет выполнять очень много лишних команд (в зависимости от яркости). Достаточно будет и «==».
Последний раз редактировалось Vooon 04 мар 2008, 13:58, всего редактировалось 1 раз.
Причина: помогай аподсветке - пиши [code=cpp]...[/code]

Re: Подсветка а-ля Ambilight

-= Александр =- » 04 мар 2008, 21:57

Пасибо! Будет время - подправлю... Все это писалось в спешке, так что в софте наверняка тоже полно ошибок...


Rambler\'s Top100 Mail.ru counter