You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am attempting to use the esp_dmx library to control some basic RGB DMX fixtures from an ESP32 + MAX485. I have had success using the dmx_write_slot function but cannot get my head around the dmx_write function.
Before you ask, I have read the documentation several times over and played around with the example code but I'm still totally confused as to what it is doing and why/how.
On my test bench I have seven identical RGB LED lighting fixtures which each use seven addresses. The start address of the first fixture in the universe is 113 and each fixture has it's own start address spaced 7 channels apart.
My question regarding the sample sketch for Arduino_DMXWrite.. In the loop it is incrementing data[i] every 1000ms but this is affecting all of my lights in the same way, despite the fact that each fixture has it's own individual dmx address.
How on earth is this incremental counter getting all the lights to do the same thing at the same time when normally you would have to be very specific to first increase the master dim to a non zero amount and then increase one of the color channels to get any of the fixtures to output some light?
My end goal is to control 40 of these 7 channel fixtures with the esp32. While the dmx_write_slot function is effective, it seems a long winded way to communicate with 40 different fixtures.
If my understanding of the dmx_write function is correct, each packet contains the data to update the values for every channel on the entire universe which would be a more efficient way of modifying the values for a lot of lights at once, .. but I cant quite figure out how I should do this.
I tried
byte data[DMX_PACKET_SIZE] = {255,255,0,0,0,0,0};
dmx_send_num(dmxPort, DMX_PACKET_SIZE);
Thinking this should set the master dim and red level to max on the first fixture in the universe but it did nothing, I also tried copying and pasting the sequence above to fill all the bytes in the packet but this did nothing either. I tried the same but with hex values instead and that would not even compile.
I also tried experimenting with the parameters and specifying personalities and start addresses etc but none of that seemed to have any effect either.
I'm sure I'm missing something really obvious but I'd be super grateful if someone could explain this to me before I lose my sanity.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hey all,
I am attempting to use the esp_dmx library to control some basic RGB DMX fixtures from an ESP32 + MAX485. I have had success using the dmx_write_slot function but cannot get my head around the dmx_write function.
Before you ask, I have read the documentation several times over and played around with the example code but I'm still totally confused as to what it is doing and why/how.
On my test bench I have seven identical RGB LED lighting fixtures which each use seven addresses. The start address of the first fixture in the universe is 113 and each fixture has it's own start address spaced 7 channels apart.
My question regarding the sample sketch for Arduino_DMXWrite.. In the loop it is incrementing data[i] every 1000ms but this is affecting all of my lights in the same way, despite the fact that each fixture has it's own individual dmx address.
How on earth is this incremental counter getting all the lights to do the same thing at the same time when normally you would have to be very specific to first increase the master dim to a non zero amount and then increase one of the color channels to get any of the fixtures to output some light?
My end goal is to control 40 of these 7 channel fixtures with the esp32. While the dmx_write_slot function is effective, it seems a long winded way to communicate with 40 different fixtures.
If my understanding of the dmx_write function is correct, each packet contains the data to update the values for every channel on the entire universe which would be a more efficient way of modifying the values for a lot of lights at once, .. but I cant quite figure out how I should do this.
I tried
byte data[DMX_PACKET_SIZE] = {255,255,0,0,0,0,0};
dmx_send_num(dmxPort, DMX_PACKET_SIZE);
Thinking this should set the master dim and red level to max on the first fixture in the universe but it did nothing, I also tried copying and pasting the sequence above to fill all the bytes in the packet but this did nothing either. I tried the same but with hex values instead and that would not even compile.
I also tried experimenting with the parameters and specifying personalities and start addresses etc but none of that seemed to have any effect either.
I'm sure I'm missing something really obvious but I'd be super grateful if someone could explain this to me before I lose my sanity.
Beta Was this translation helpful? Give feedback.
All reactions