Обсуждаем контроллеры компании Atmel.
Ответить

Re: Плейер световых эффектов - помогите стать лучше

Пн янв 10, 2022 20:21:38

у меня есть 200 шт
Изображение
50 шт.
Изображение
ну и матрица 10х10
Изображение

Re: Плейер световых эффектов - помогите стать лучше

Пн янв 10, 2022 20:53:53

вы не поняли: тестировать будете на чем? и какой тип светиков?

Re: Плейер световых эффектов - помогите стать лучше

Пн янв 10, 2022 21:05:25

тип WS2811
а тестировать давайте на матрице 10х10
могу спаять WS2811 50 шт. в линию или ??? что скажете WS2812 из 200 штук

Re: Плейер световых эффектов - помогите стать лучше

Пн янв 10, 2022 21:19:24

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

Re: Плейер световых эффектов - помогите стать лучше

Пн янв 10, 2022 21:22:16

хорошо
тип WS2811 матрица 10х10

Re: Плейер световых эффектов - помогите стать лучше

Ср янв 12, 2022 19:49:41

??? :shock:

Re: Плейер световых эффектов - помогите стать лучше

Ср янв 12, 2022 19:53:58

да зашиваюсь я :(

Re: Плейер световых эффектов - помогите стать лучше

Ср янв 12, 2022 19:57:40

хорошо, подождем :tea:

Re: Плейер световых эффектов - помогите стать лучше

Вт янв 25, 2022 21:45:09

Реанимировал на днях один из своих старых компиляторов и прикрутил к нему более компактный набор инструкций, в результате такой скрипт:
Спойлер
Код:
CLR
GB=FF IRD<80 REV EI
VN=05
VD=E0
RPT
  VD+01
  IVD>F0 VD=E0 EI
  V0=VC
  VP=TP
  RPT
    PI=V0
    IV0<VD VB=VD VB-V0 V0=FF V0-VB V0+01 VS=01 EI
    IVS=00 V0-VD EI
    VS=00
    PM=VP
  LVP
  V0=VC
  IV0<VD VB=VD VB-V0 V0=FF V0-VB V0+01 VS=01 EI
  IVS=00 V0-VD EI
  VS=00
  VC=V0
  WT=03
INF

можно переписать как-то так:
Спойлер
Код:
const LedsCount = 80;
clear(0);
gBright = 0xFF;
if(rnd(255) < 0x80) reverse();
int vs, vc, vn = 5, vd = 0xE0;

while(1)
{
   if(++vd > 0xF0) vd = 0xE0;
   int v0 = vc;
   int vp = LedsCount;
   
   while(vp--)
   {
      gPaintIndex = v0;
      if(v0 < vd)
      {
         v0 = 0xFF - (vd - v0) + 1;
         vs = 1;
      }
      if(!vs) v0 -= vd;
      vs = 0;
      paintMap(vp);
   }
   
   v0 = vc;
   if(v0 < vd)
   {
      v0 = 0xFF - (vd - v0) + 1;
      vs = 1;
   }
   
   if(!vs) v0 -= vd;
   vs = 0;
   vc = v0;
   wait(3);
}   

Компилируем и получаем бинарник размером 108 байт(оригинал был 319):
Спойлер
Код:
0000   20           pushk 0
0001   80           call clear
0002   A0FF         pushk10 255
0004   61           popVar 1
0005   A0FF         pushk10 255
0007   82           call rnd
0008   A080         pushk10 128
000A   11           ls
000B   F00E         jne 0x0E
000D   83           call reverse
000E   25           pushk 5
000F   65           popVar 5
0010   A0E0         pushk10 224
0012   66           popVar 6
0013   46           pushVar 6
0014   C1           addi 1
0015   66           popVar 6
0016   46           pushVar 6
0017   A0F0         pushk10 240
0019   12           gt
001A   F01F         jne 0x1F
001C   A0E0         pushk10 224
001E   66           popVar 6
001F   44           pushVar 4
0020   67           popVar 7
0021   A050         pushk10 80
0023   68           popVar 8
0024   48           pushVar 8
0025   48           pushVar 8
0026   E1           subi 1
0027   68           popVar 8
0028   B04A         jmp 0x4A
002A   47           pushVar 7
002B   62           popVar 2
002C   47           pushVar 7
002D   46           pushVar 6
002E   11           ls
002F   F03C         jne 0x3C
0031   A0FF         pushk10 255
0033   46           pushVar 6
0034   47           pushVar 7
0035   01           sub
0036   01           sub
0037   21           pushk 1
0038   00           add
0039   67           popVar 7
003A   21           pushk 1
003B   63           popVar 3
003C   43           pushVar 3
003D   07           not
003E   F044         jne 0x44
0040   47           pushVar 7
0041   46           pushVar 6
0042   01           sub
0043   67           popVar 7
0044   20           pushk 0
0045   63           popVar 3
0046   48           pushVar 8
0047   84           call paintMap
0048   B024         jmp 0x24
004A   44           pushVar 4
004B   67           popVar 7
004C   47           pushVar 7
004D   46           pushVar 6
004E   11           ls
004F   F05C         jne 0x5C
0051   A0FF         pushk10 255
0053   46           pushVar 6
0054   47           pushVar 7
0055   01           sub
0056   01           sub
0057   21           pushk 1
0058   00           add
0059   67           popVar 7
005A   21           pushk 1
005B   63           popVar 3
005C   43           pushVar 3
005D   07           not
005E   F064         jne 0x64
0060   47           pushVar 7
0061   46           pushVar 6
0062   01           sub
0063   67           popVar 7
0064   20           pushk 0
0065   63           popVar 3
0066   47           pushVar 7
0067   64           popVar 4
0068   23           pushk 3
0069   81           call wait
006A   B013         jmp 0x13

Еще нужно допиливать и написать VM, но уже вроде неплохо :)

Re: Плейер световых эффектов - помогите стать лучше

Вт янв 25, 2022 22:14:57

:))) браво! :)))

Re: Плейер световых эффектов - помогите стать лучше

Чт янв 27, 2022 18:08:16

А насколько конструкции такого типа, именно с большим число параметров, часто используются?
Код:
PM=161718191A1B2021222324252A2B2C2D2E2F3435363738393E3F4041424348494A4B4C4D

Я пока в качестве замены добавил некое подобие байтовых read-only массивов, получается компактнее, чем для функций с переменным числом аргументов:
Код:
var arr = { 22,23,24,25,26,27, 32,33,34,35,36,37, 42,43,44,45,46,47, 52,53,54,55,56,57, 62,63,64,65,66,67, 72,73,74,75,76,77 };
paintMap(arr);

Сами массивы в конце размещаются, а в переменную заносится смещение от начала проги. Можно и в цикле значения перебрать, пока при помощи функции, может потом индексирование при помощи [] добавлю, хотя тип данных один, потому оно будет для всего работать :)
Код:
for(var i = 0; i < 36; i++)         
{
    led = peek(arr, i);
}

Re: Плейер световых эффектов - помогите стать лучше

Чт янв 27, 2022 19:13:40

а ведь кое-кто говорил, что я ерундой маюсь :)))
Reflector писал(а):конструкции такого типа, именно с большим число параметров, часто используются?
лично мне больше нравится алгоритмичекое построение эффекта, но Serzh2000, например, применяет частенько... такие конструкции генерирует программка DSM, где эффекты рисуются покадрово мышкой.

Re: Плейер световых эффектов - помогите стать лучше

Чт янв 27, 2022 19:56:04

а ведь кое-кто говорил, что я ерундой маюсь :)))

Я говорил, что к твоему скриптовому языку в его существующем виде нет смысла добавлять еще и процедуры, поможет только полное переписывание :) А у меня функции были, целых 3 вида, и файлы с хедерами инклудились, но все это выпилилось в пользу более компактной системы команд. Хотя теперь не уверен, может стоит все вернуть, ну будет байткод меньше не в 3 раза, а в 2-2.5... Кто что думает?

Re: Плейер световых эффектов - помогите стать лучше

Чт янв 27, 2022 21:50:50

ну, лично моё мнение прежнее: для AVR бесперспективно, для STM32 или иных ARM - вероятно...
только все равно есть сомнение: пре-компилируемый скрипт мало чем отличается от захардкоренных в прошивке эффектов, создаваемых на этапе её компиляции. то есть гибкость все дальше отходит от простоты в сторону большого программирования... целесообразность этого сомнительна...

Re: Плейер световых эффектов - помогите стать лучше

Чт янв 27, 2022 23:24:07

Скрипты как минимум должны как-то попасть на SD, в EEPROM, флеш или RAM мк, количество дополнительно потраченного времени в случае пре-компилированных скриптов составляет примерно 5 сек, это когда пачка скриптов лежит с папке и ожидает записи на SD, но нужно предварительно запустить утилиту которая за долю секунды скомпилирует их все и записывать будет нужно ту же пачку файлов, но с другим расширением. В остальных случаях разницы вообще никакой. Например, я пишу скрипт, компилирую его и при этом он автоматически загружается в RAM мк и начинается исполнение. Или есть та же пачка скриптов, запускается утилита и получается сишный файл где все скрипты лежат в виде массивов, причем если бы скрипты не были прекомпилированными, но хочется поместить их во флеш, то все равно пришлось бы делать нечто подобное. Хардкордить скрипты прямо в проекте тоже можно, однако кроме автора мало кто будет этим заниматься...

Re: Плейер световых эффектов - помогите стать лучше

Пт янв 28, 2022 06:34:26

Ну я чо... Я ничо... :dont_know: Если идея пошла в массы - могу ли я быть недоволен?!

Re: Плейер световых эффектов - помогите стать лучше

Пт янв 28, 2022 20:34:25

:shock:

Re: Плейер световых эффектов - помогите стать лучше

Вс янв 30, 2022 15:24:50

Возможность оперативно остановить перебор эффектов, кнопочка как в автомате Riniy?

Re: Плейер световых эффектов - помогите стать лучше

Вс фев 06, 2022 11:06:23

{
Ср янв 12, 2022 19:53:58
да зашиваюсь я :( }

ARV, может уже отшились? :)
Возник вдруг вопрос. Если вместо двух мерной матрицы сделать 3хмерную, что получилось бы? Может и эффекты придумать новые, если, конечно, программа позволяет. Но, скорее всего, это будет надо полностью программу менять. Или всё-таки возможно?
4х4х4 или 5х5х5

Re: Плейер световых эффектов - помогите стать лучше

Вс фев 06, 2022 12:08:17

dgrett писал(а):может уже отшились?
не... еще и заболел впридачу...
Ответить