Массивы

vsp

✩✩✩✩✩✩✩
21 Апр 2021
5
0
Оформи код соответствующим тэгом
Здравствуйте.

Помогите пожалуйста с массивами.

Есть такая задача, DMX устройство которое управляет группой светильников.

У каждого светильника есть по несколько адресов, что уже создает разные по длине массивы. И существуют «сцены» тоже разной длинны.

В результате должно быть так: Собирается посылка DMX512 из разных устройств, с разной длинной адреса, это не проблема, так как они фиксированы, а вот «сцены» они с разным количеством шагов. В результате должно в порт выдаваться N сцен по 512 посылок.

Для этого я создал многомерный массив, который двумя циклами считываю.

Здесь в процедуре, я указываю название массива и длину сцен 3180 и длину адресов.

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



void runfon1() {

for (int scene = 0; scene <= 3180 - 1; scene++) {

for (int ch = 0; ch <= 32 - 1; ch++) {

byte level = SceneDMXfon5[0][scene][ch][0];



dmxbuffer[ch + 1] = level;



//Serial.print(" "); Serial.print(level);

}

copyDMXToOutput();

//Serial.println();

delay(45);

if (fone == 0) {

DMXparking();

break;

}

}

}



uint8_t SceneDMXfon5[1][3180][32][1] = {

{

{ {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0} },

{ {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {3}, {3}, {21}, {3}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0} },

{ {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {24}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0} },

{ {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0} },

{ {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {25}, {25}, {1}, {1}, {0}, {0}, {25}, {0} },

{ {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {0}, {0}, {25}, {0}, {3}, {3}, {21}, {3}, {0}, {0}, {25}, {0} },

И так 3180 сцен

}

};
 

vsp

✩✩✩✩✩✩✩
21 Апр 2021
5
0
@vsp, А эффекты в массив как набиваете? С пульта или будут жёстко прошиваться?
Есть программа немецкая, Daslight, в ней всю красоту и строю. Идея разнообразить однообразность. Поэтому свет отдельно а движение отдельно. Движение конечно строго применимо к конкретному оборудованию, а вот RGBW можно применить почти ко всем, и тем самым создавать разные комбинации. Создаю в программе сцену, указываю время сцены, и так далее. Потом вывожу, и программка у меня нужные мне адреса конвертит в байты в сцене. Я её укладываю в многомерный массив, потом читаю и вывожу в DMX
 

vsp

✩✩✩✩✩✩✩
21 Апр 2021
5
0
@vsp, Получается Вы пытаетесь ардуиной сделать секвенсор?
Да, только у меня еще анализатор спектра на MSGEQ7 собран, и как то можно это делать под музыку. И повторюсь, что вращение и свет у меня отделены. Так как вращение делается под сцену(помещение) а свет он создает общую сценическую под музыку картину. Получается довольно разнообразно, не так как в автоматическом режиме самих устройств, или программах, или пультах.