From ab377defb54de50cc4a55e67ee4b32270d07b46e Mon Sep 17 00:00:00 2001 From: RaffaelW Date: Sat, 2 Nov 2024 20:18:06 +0100 Subject: [PATCH] finished modification of lob --- src/ESPDMX.cpp | 54 +++++++++++++++----------------------------------- src/ESPDMX.h | 28 +++++++++++++++++--------- src/main.cpp | 8 +++----- 3 files changed, 38 insertions(+), 52 deletions(-) diff --git a/src/ESPDMX.cpp b/src/ESPDMX.cpp index 3ac7775..1d361d9 100644 --- a/src/ESPDMX.cpp +++ b/src/ESPDMX.cpp @@ -13,56 +13,34 @@ /* ----- LIBRARIES ----- */ #include #include "ESPDMX.h" -#include - -#define MAX_IDS 3 - -#define DMXSPEED 250000 -#define DMXFORMAT SERIAL_8N2 -#define BREAKSPEED 83333 -#define BREAKFORMAT SERIAL_8N1 -#define SERIALPORT Serial0 -#define DMXCHANNELS 512 - -int sendPin[] = {}; -int recvPin[] = {}; // DMX value array and size. Entry 0 will hold startbyte, so we need 512+1 elements // std::vector dmxDataStores(MAX_IDS); // uint8_t dmxDataStores[MAX_IDS][DMXCHANNELS + 1]; -struct dmxPorts -{ - uint8_t id; - int sendPin; - int recvPin; - bool started; - uint8_t dmxDataStore[DMXCHANNELS + 1]; -}; - // Set up the DMX-Protocol -void DMXESPSerial::init(int id, int pinSend, int pinRecv) +void DMXESPSerial::init(int pinSend, int pinRecv) { - sendPin[id] = pinSend; - recvPin[id] = pinRecv; - SERIALPORT.begin(DMXSPEED, DMXFORMAT, recvPin[id], sendPin[id]); - pinMode(sendPin[id], OUTPUT); + sendPin = pinSend; + recvPin = pinRecv; + SERIALPORT.begin(DMXSPEED, DMXFORMAT, recvPin, sendPin); + pinMode(sendPin, OUTPUT); } // Function to read DMX data -uint8_t DMXESPSerial::read(int id, int Channel) +uint8_t DMXESPSerial::read(int Channel) { if (Channel < 1) Channel = 1; if (Channel > DMXCHANNELS) Channel = DMXCHANNELS; - return (dmxDataStores[id][Channel]); + return (dmxDataStore[Channel]); } // Function to send DMX data -void DMXESPSerial::write(int id, int Channel, uint8_t value) +void DMXESPSerial::write(int Channel, uint8_t value) { - s if (Channel < 1) + if (Channel < 1) Channel = 1; if (Channel > DMXCHANNELS) Channel = DMXCHANNELS; @@ -71,7 +49,7 @@ void DMXESPSerial::write(int id, int Channel, uint8_t value) if (value > 255) value = 255; - dmxDataStores[id][Channel] = value; + dmxDataStore[Channel] = value; } void DMXESPSerial::end() @@ -80,20 +58,20 @@ void DMXESPSerial::end() } // Function to update the DMX bus -void DMXESPSerial::update(int id) +void DMXESPSerial::update() { // Send break - digitalWrite(sendPin[id], HIGH); - SERIALPORT.begin(BREAKSPEED, BREAKFORMAT, recvPin[id], sendPin[id]); + digitalWrite(sendPin, HIGH); + SERIALPORT.begin(BREAKSPEED, BREAKFORMAT, recvPin, sendPin); SERIALPORT.write(0); SERIALPORT.flush(); delay(1); SERIALPORT.end(); // send data - SERIALPORT.begin(DMXSPEED, DMXFORMAT, recvPin[id], sendPin[id]); - digitalWrite(sendPin[id], LOW); - SERIALPORT.write(dmxDataStores[id], DMXCHANNELS); + SERIALPORT.begin(DMXSPEED, DMXFORMAT, recvPin, sendPin); + digitalWrite(sendPin, LOW); + SERIALPORT.write(dmxDataStore, DMXCHANNELS); SERIALPORT.flush(); delay(1); SERIALPORT.end(); diff --git a/src/ESPDMX.h b/src/ESPDMX.h index 748a727..0be98cf 100644 --- a/src/ESPDMX.h +++ b/src/ESPDMX.h @@ -12,19 +12,29 @@ #include - #ifndef ESPDMX_h #define ESPDMX_h -// ---- Methods ---- +#define DMXSPEED 250000 +#define DMXFORMAT SERIAL_8N2 +#define BREAKSPEED 83333 +#define BREAKFORMAT SERIAL_8N1 +#define SERIALPORT Serial0 +#define DMXCHANNELS 512 -class DMXESPSerial { - public: - void init(int id, int pinSend, int pinRecv); - uint8_t read(int id, int Channel); - void write(int id, int channel, uint8_t value);void update(); - void end(); - void update(int id); +class DMXESPSerial +{ +public: + int sendPin; + int recvPin; + bool started; + uint8_t dmxDataStore[DMXCHANNELS + 1]; + + void init(int pinSend, int pinRecv); + uint8_t read(int Channel); + void write(int channel, uint8_t value); + void update(); + void end(); }; #endif diff --git a/src/main.cpp b/src/main.cpp index 91faa1c..07fd1e1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,8 +18,6 @@ ArtnetWiFi artnet; const uint16_t size = 512; uint8_t data[size]; -int selectedId = 0; - void setup() { Serial.begin(9600); @@ -55,17 +53,17 @@ void setup() artnet.begin(); // Initialize DMX ports - dmx.init(0, 19, -1); + dmx1.init(19, -1); // if Artnet packet comes to this universe, this function is called artnet.subscribeArtDmxUniverse(universe, [&](const uint8_t *data, uint16_t size, const ArtDmxMetadata &metadata, const ArtNetRemoteInfo &remote) { for (size_t i = 0; i < size; ++i) { - dmx.write(selectedId, (i + 1), data[i]); + dmx1.write((i + 1), data[i]); } - dmx.update(selectedId); }); + dmx1.update(); }); // if Artnet packet comes, this function is called to every universe artnet.subscribeArtDmx([&](const uint8_t *data, uint16_t size, const ArtDmxMetadata &metadata, const ArtNetRemoteInfo &remote) {});