claudeheintz / LXESP8266DMX

DMX Driver for ESP8266 using ArduinoIDE
BSD 3-Clause "New" or "Revised" License
29 stars 9 forks source link

2 DMX outputs #4

Closed folny closed 6 years ago

folny commented 7 years ago

Hi

Please could you add to this library next DMX output as it is, for example, the Library for Teens 3 thanks.

claudeheintz commented 7 years ago

UART0 is used by Serial for debug output. The ESP8266 prints to the debug serial on boot. This interferes with using it for DMX. This happens before your code executes so even if the first thing you do is disable debug print, there will be stuff sent to the serial output. This means you are left with only a single available dedicated UART for DMX, UART1.

acropup commented 6 years ago

I think this might still be doable. Since you'd be transmitting via a MAX485 or something similar, as long as you ensure that the 485's DE pin (Driver Output Enable) is LOW on startup, the ESP8266's boot debug information should not make it onto the DMX network. This should be sufficient for dealing with the serial debug information that cannot be disabled.

Once your code is running, you can then call uart_set_debug(UART_NO) for arduino, or system_set_os_print(0) for Espressif API, and as far as I know, that will prevent any further serial debug output (until reboot).

claudeheintz commented 6 years ago

Yes, it is possible to do it that way. But, its not advisable. The ESP8266 WiFi starts to choke when it receives too many universes of Art-Net/sACN. It can handle packets from two sources. And so, two universes from a single source may be OK--its not clear that the extra processing for the second DMX output would not slow things down too much. Two universes from two sources and it will almost certainly fall behind. Because the ESP8266 is so inexpensive, its probably a better design to use two interfaces, each handling a single DMX stream.

claudeheintz commented 6 years ago

There is now an added example showing 2 universe output using both UART1 and UART. The second universe is not part of the Library but an additional class contained in the example folder. The performance consequences of adding the second universe are unclear. But, if you really want to, this is how you can do it.