Плейер световых эффектов - помогите стать лучше
- Реклама
вы не поняли: тестировать будете на чем? и какой тип светиков?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
тип WS2811
а тестировать давайте на матрице 10х10
могу спаять WS2811 50 шт. в линию или ??? что скажете WS2812 из 200 штук
а тестировать давайте на матрице 10х10
могу спаять WS2811 50 шт. в линию или ??? что скажете WS2812 из 200 штук
для теста разницы нет, главное, отработать мои изменения в исходниках. что вам проще, на том и давайте. только прошивка/исходники уже завтра...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
да зашиваюсь я 
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
Реанимировал на днях один из своих старых компиляторов и прикрутил к нему более компактный набор инструкций, в результате такой скрипт:
можно переписать как-то так:
Компилируем и получаем бинарник размером 108 байт(оригинал был 319):
Еще нужно допиливать и написать VM, но уже вроде неплохо 
Спойлер
Код: Выделить всё
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);
}
Спойлер
Код: Выделить всё
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
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
А насколько конструкции такого типа, именно с большим число параметров, часто используются?
Я пока в качестве замены добавил некое подобие байтовых read-only массивов, получается компактнее, чем для функций с переменным числом аргументов:
Сами массивы в конце размещаются, а в переменную заносится смещение от начала проги. Можно и в цикле значения перебрать, пока при помощи функции, может потом индексирование при помощи [] добавлю, хотя тип данных один, потому оно будет для всего работать
Код: Выделить всё
PM=161718191A1B2021222324252A2B2C2D2E2F3435363738393E3F4041424348494A4B4C4DКод: Выделить всё
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);
}а ведь кое-кто говорил, что я ерундой маюсь
лично мне больше нравится алгоритмичекое построение эффекта, но Serzh2000, например, применяет частенько... такие конструкции генерирует программка DSM, где эффекты рисуются покадрово мышкой.Reflector писал(а):конструкции такого типа, именно с большим число параметров, часто используются?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="ARV",url="/forum/viewtopic.php?p=4169336#p4169336"]а ведь кое-кто говорил, что я ерундой маюсь
[/uquote]
Я говорил, что к твоему скриптовому языку в его существующем виде нет смысла добавлять еще и процедуры, поможет только полное переписывание
А у меня функции были, целых 3 вида, и файлы с хедерами инклудились, но все это выпилилось в пользу более компактной системы команд. Хотя теперь не уверен, может стоит все вернуть, ну будет байткод меньше не в 3 раза, а в 2-2.5... Кто что думает?
Я говорил, что к твоему скриптовому языку в его существующем виде нет смысла добавлять еще и процедуры, поможет только полное переписывание
ну, лично моё мнение прежнее: для AVR бесперспективно, для STM32 или иных ARM - вероятно...
только все равно есть сомнение: пре-компилируемый скрипт мало чем отличается от захардкоренных в прошивке эффектов, создаваемых на этапе её компиляции. то есть гибкость все дальше отходит от простоты в сторону большого программирования... целесообразность этого сомнительна...
только все равно есть сомнение: пре-компилируемый скрипт мало чем отличается от захардкоренных в прошивке эффектов, создаваемых на этапе её компиляции. то есть гибкость все дальше отходит от простоты в сторону большого программирования... целесообразность этого сомнительна...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
Скрипты как минимум должны как-то попасть на SD, в EEPROM, флеш или RAM мк, количество дополнительно потраченного времени в случае пре-компилированных скриптов составляет примерно 5 сек, это когда пачка скриптов лежит с папке и ожидает записи на SD, но нужно предварительно запустить утилиту которая за долю секунды скомпилирует их все и записывать будет нужно ту же пачку файлов, но с другим расширением. В остальных случаях разницы вообще никакой. Например, я пишу скрипт, компилирую его и при этом он автоматически загружается в RAM мк и начинается исполнение. Или есть та же пачка скриптов, запускается утилита и получается сишный файл где все скрипты лежат в виде массивов, причем если бы скрипты не были прекомпилированными, но хочется поместить их во флеш, то все равно пришлось бы делать нечто подобное. Хардкордить скрипты прямо в проекте тоже можно, однако кроме автора мало кто будет этим заниматься...
Ну я чо... Я ничо...
Если идея пошла в массы - могу ли я быть недоволен?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 7
- Зарегистрирован: Пт апр 04, 2008 20:56:06
Возможность оперативно остановить перебор эффектов, кнопочка как в автомате Riniy?
- Сообщения: 615
- Зарегистрирован: Вс дек 28, 2014 21:54:05
{
Ср янв 12, 2022 19:53:58
да зашиваюсь я
}
ARV, может уже отшились?
Возник вдруг вопрос. Если вместо двух мерной матрицы сделать 3хмерную, что получилось бы? Может и эффекты придумать новые, если, конечно, программа позволяет. Но, скорее всего, это будет надо полностью программу менять. Или всё-таки возможно?
4х4х4 или 5х5х5
Ср янв 12, 2022 19:53:58
да зашиваюсь я
ARV, может уже отшились?
Возник вдруг вопрос. Если вместо двух мерной матрицы сделать 3хмерную, что получилось бы? Может и эффекты придумать новые, если, конечно, программа позволяет. Но, скорее всего, это будет надо полностью программу менять. Или всё-таки возможно?
4х4х4 или 5х5х5
Я всё-всё узнAю и стану профессором.
не... еще и заболел впридачу...dgrett писал(а):может уже отшились?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!


