DMX Arduino - 在 Martin Exterior 600 灯具上关闭 lamp

DMX Arduino - Turn OFF lamp on Martin Exterior 600 fixture

我制作了一个基于网络的灯光控制器,一切正常。但是我在关闭其中一个装置时遇到问题。

要关闭 lamp,必须在通道 17 上发送值 250 至少 5 秒。这就是它变得棘手的地方,我该怎么做?

我正在使用 http://www.mathertel.de/Arduino/DMXSerial.aspx 的 DMXSerial 库,但它缺少文档。

这是代码的一小部分。

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);
          }
        }
      }

欢迎任何帮助。

DMXSerial库的初始化

DMXSerial.init(DMXController);

使变送器能够在后台发送并重复发送存储的 512 个通道的默认值。其中

DMXSerial.write(ch, value);

更新指定的缓冲区位置,然后在后台发送。

DMX 帧只是通过传输完成中断在后台重复。 512个通道的整帧大约以44Hz的频率重复。

因为它是中断驱动的,所以你不需要做更多的事情。所以本质上应该很简单:

...
DMXSerial.write(17, 250);
delay(5100); 
DMXSerial.write(17, 0); // or something else
...

我认为使用 250 的值更新适当频道的 Web 放置就足够了。只要它没有用 250 以外的东西再次更新。因为后台会继续发送它,直到用不同的东西更新。