DMX Arduino - выключить лампу на приборе Martin Exterior 600
Я сделал сетевой контроллер освещения, и все работает отлично. Но у меня проблема с отключением одного из приборов.
Для выключения лампы значение 250 должно быть отправлено на канал 17 как минимум на 5 секунд. И вот где это становится сложно, как мне это сделать?
Я использую библиотеку DMXSerial с http://www.mathertel.de/Arduino/DMXSerial.aspx, но в ней отсутствует документация.
Вот небольшой кусочек кода.
if(finder.find("#dmx")) { // Find out if this is a dmx string.
if(finder.findUntil("type", ",")) { // Finds the type
cmd = finder.getValue(); // Putting the value found in its variable.
if(cmd == 4) {
if(finder.findUntil("ch", ",")) {
channel = finder.getValue();
}
if(finder.findUntil("va", ",\n\r")) {
val = finder.getValue();
}
if(channel == 17 && val == 250) {
// some code here
} else {
DMXSerial.write(channel, val);
}
}
}
Любая помощь будет приветствоваться.
1 ответ
Инициализация библиотеки DMXSerial
DMXSerial.init(DMXController);
позволяет передатчику отправлять в фоновом режиме и повторять отправку значений по умолчанию для 512 сохраненных каналов. куда
DMXSerial.write(ch, value);
обновляет указанное местоположение буфера, которое, в свою очередь, отправляется в фоновом режиме.
Кадр DMX просто повторяется в фоновом режиме посредством передачи завершенных прерываний. Целый кадр из 512 каналов приблизительно повторяется с частотой 44 Гц.
Поскольку он управляется прерываниями, вам больше ничего не нужно делать. Так что по сути это должно быть просто:
...
DMXSerial.write(17, 250);
delay(5100);
DMXSerial.write(17, 0); // or something else
...
Я думаю, что веб-сайта обновления соответствующего канала со значением 250 будет достаточно. До тех пор, пока оно не будет обновлено снова с чем-то кроме 250. Как фон будет продолжать отправлять его, пока не будет обновлено с чем-то другим.