Thought I’d test out this … https://github.com/Rickgg/ESP-Dmx … made my life easy … as does Blynk!
As it happens it appears to work very well. Just cobbled a cheap ST485 chip to gpio2 (all at 3v3) and it worked very nicely. Waveform timing is spot on.
6 sliders and a Terminal widget.
Any key shows slot numbers (1-511) assigned to channels. ChanN nnn assigns slot number to channel which is re affirmed by a terminal write back.
Crap programming and no error catches, but it shows it works.
Just waiting for that direct connect now! Could be handy for a few products.
I wish this stuff had been around years ago, it’s like pic mix n go now instead of two weeks doing assembler!
`#include <ESPDMX.h>`
#include<SimpleTimer.h>
WidgetTerminal terminal(V2);
DMXESPSerial dmx;
SimpleTimer dmxout;
int slidV20val;
int slidV21val;
int slidV22val;
int slidV23val;
int slidV24val;
int slidV25val;
int chan1 = 1;
int chan2 = 2;
int chan3 = 3;
int chan4 = 4;
int chan5 = 5;
int chan6 = 6;
in setup
dmx.init();
dmxout.setInterval(100L,dmxSend);
BLYNK_WRITE(V20){
String pinData = param.asStr(); // data comingin
slidV20val = param.asInt();
const char* slid_dat = pinData.c_str();
//client.publish("outTopic" , slid_dat);
}
BLYNK_WRITE(V21){
String pinData = param.asStr(); // data comingin
slidV21val = param.asInt();
const char* slid_dat = pinData.c_str();
//client.publish("outTopic" , slid_dat);
}
BLYNK_WRITE(V22){
String pinData = param.asStr(); // data comingin
slidV22val = param.asInt();
const char* slid_dat = pinData.c_str();
//client.publish("outTopic" , slid_dat);
}
BLYNK_WRITE(V23){
String pinData = param.asStr(); // data comingin
slidV23val = param.asInt();
const char* slid_dat = pinData.c_str();
//client.publish("outTopic" , slid_dat);
}
BLYNK_WRITE(V24){
String pinData = param.asStr(); // data comingin
slidV24val = param.asInt();
const char* slid_dat = pinData.c_str();
//client.publish("outTopic" , slid_dat);
}
BLYNK_WRITE(V25){
String pinData = param.asStr(); // data comingin
slidV25val = param.asInt();
const char* slid_dat = pinData.c_str();
//client.publish("outTopic" , slid_dat);
}
BLYNK_WRITE(V2)
{
String chanrequest = param.asStr();
String chanX =chanrequest.substring(4,5);
String chanY= chanrequest.substring(6);
int chanXnum = chanX.toInt();
int chanslot =chanY.toInt();
switch (chanXnum) {
case 1:
chan1 = chanslot;
break;
case 2:
chan2 = chanslot;
break;
case 3:
chan3 = chanslot;
break;
case 4:
chan4 = chanslot;
break;
case 5:
chan5 = chanslot;
break;
case 6:
chan6 = chanslot;
break;
default:
break;
}
terminal.print(" Chan1 = ");
terminal.print (chan1);
terminal.print(" ");
terminal.print(" Chan2 = ");
terminal.print (chan2);
terminal.print(" ");
terminal.print(" Chan3 = ");
terminal.println (chan3);
terminal.print(" Chan4 = ");
terminal.print (chan4);
terminal.print(" ");
terminal.print(" Chan5 = ");
terminal.print (chan5);
terminal.print(" ");
terminal.print(" Chan6 = ");
terminal.println (chan6);
terminal.flush();
}
void dmxSend()
{
dmx.write(chan1,slidV20val);
dmx.write(chan2, slidV21val)
dmx.write(chan3,slidV22val);
dmx.write(chan4,slidV23val);
dmx.write(chan5,slidV24val);
dmx.write(chan6,slidV25val);
dmx.update();
}
In loop() add
dmxout.run();
And it’s sorted.