#include #include #include #include bool debug = true; //debug via Serialmonitor //DMX INIT #define DMX_SLAVE_CHANNELS 512 #define RXEN_PIN 2 DMX_Slave dmx_slave ( DMX_SLAVE_CHANNELS ); #define dmxaddr 1 bool dmxinit = true; // Ethernet stuff const IPAddress ip(192, 168, 186, 91); uint8_t mac[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB}; const String target_ip = "192.168.186.169"; ArtnetSender artnet; const uint32_t uni = 0; const uint8_t net = 0; const uint8_t sub = 0; const uint16_t size = 512; uint8_t data[size]; unsigned long lastShow = 0; unsigned long Show = 20; void setup() { if (debug) { Serial.begin(115200); Serial.println("start-1"); } Ethernet.begin(mac, ip); if (debug) { Serial.println("start-2"); } artnet.begin(); if (debug) { Serial.println("start-3"); } Serial.println(Ethernet.localIP()); if (debug) { Serial.println("start-4"); } dmx_slave.onReceiveComplete ( OnFrameReceiveComplete ); dmx_slave.enable (); dmx_slave.setStartAddress (dmxaddr); while (dmxinit) { //warten auf DMX Daten delay(1000); Serial.print("wait-for-dmx-"); Serial.println(millis()); } if (debug) { Serial.println("start-5"); } } void loop() { if (millis() - Show > lastShow) { artnet.send(target_ip, uni, data, size); //Daten an Artnet Client Senden lastShow = millis(); } } void OnFrameReceiveComplete (void) { //wird ausgeführt wenn ein komplettes DMX frame empfangen wurde dmxinit = false; //Warteschleife beenden if (debug) { Serial.print(dmx_slave.getChannelValue (1)); Serial.print("-"); Serial.println(dmx_slave.getChannelValue (2)); } for ( byte i = 0; i <= size ; i++) { data[i] = dmx_slave.getChannelValue(i); //DMX Daten in puffer kopieren } if (debug) { Serial.print("dmxdata"); Serial.print("-"); Serial.print(data[1]); Serial.print("-"); Serial.println(data[2]); } }