I am very frustrated with this situation. I spent the day trying again to make this work.
I have taken 2 sets of the DMX Shield with the ESP32 Thing Plus. I connected them together with a single DMX cable. I have added a DMX terminator.
I have attached 3 files, the marked up schematic, a picture of my setup, and a screen shot of the feather profile I am using.
PLEASE HELP. This is something that is part of a large project. This has been nagging for more than a month. Please verify on your end that this works. PLEASE. I am suspicious that DMX receive library is broken. Please verify that you can send and receive from your own products. It should be a 15 minute project to validate on your side. I know Covid is an issue but I have done everything to validate this test case I can think of. The board has lots of applications including WIFI, DMX and LED strips. It seems possible that no one has tried receiving wired DMX.
I have written minimal sketch for sending a single channel.
//Blink DMX Test
// Simple Send
#define TOTAL_CHANNELS 10
#include <SparkFunDMX.h>
SparkFunDMX dmx;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
dmx.initWrite(TOTAL_CHANNELS); // setup DMX for 10 channels
}
int count = 0;
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
dmx.write(1, count); // update channel 1
dmx.update(); // write it out
count +=10; // increment count by 10;
if (count>250) // update count by 10
count = 0;
}
I have also written a simple receive program
//Blink DMX Test
// Simple Receive
#include <SparkFunDMX.h>
#define TOTAL_CHANNELS 10
//Pin Definitions for ESP32 WROOM DMX to LED Shield
#define CLOCK = 5;
#define DATA0 = 19;
#define DATA1 = 18;
#define DATA2 = 27;
SparkFunDMX dmx;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
Serial.begin(115200);
while(!Serial)
;
delay(3000);
Serial.println(“DMX Receive started…”);
dmx.initRead(TOTAL_CHANNELS);
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
int temp = dmx.read(1); // read channel 1
if (temp>0) // if the value is not 0…
{
Serial.println();
Serial.println(“SCORE!!!”); //
Serial.print(temp); Serial.println(" ");
}
else
{
Serial.print(“.”);
}
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(100); // wait for a second
}