DMX Shutter

by danpecha in Circuits > Arduino

1314 Views, 5 Favorites, 0 Comments

DMX Shutter

WIN_20210324_13_09_55_Pro.jpg
WIN_20210324_13_10_00_Pro.jpg

Hi,

My name is Daniel and am new in this comunnity.

This project is for local theater and i want to share with you.

Its not finish yet.... i will make this post updated so you can grow with me.

This Project was inspirated by :

https://www.instructables.com/Build-Your-Own-DMX-F...

Need to thank for it :)

Supplies

  • Arduino nano ch340 with atmega 326p
  • 10 channel DIP switch
  • 10 resistors 10k
  • ic max 485
  • male and female XLR connectors

Building It

WIN_20210324_13_19_10_Pro.jpg
WIN_20210324_13_20_40_Pro.jpg
WIN_20210324_13_19_27_Pro.jpg

This is prototype so i dont do schematic diagram now but in case its:

DIP switch

DIP 10 -> D2

-------||-------

DIP 1 -> D11

IC max485

RO/RE -> GND

DE -> 5V

DI -> RX0

--------------------------

VCC -> 5V

A -> XLR pin 3

B -> XLR pin 2

GND -> GND -> XLR pin 1

Fixture Pin = 12

Troubleshoting

image1.png

Test DIP switch to get DMX addres.

Basicall

DIP 1 on = 1, off =0

DIP 2 on = 2, off =0

DIP 3 on = 4, off =0

DIP 4 on = 8, off =0

... etc

add up the values and save them.

Then just Serial.print(DMXadress).

CODE:

if (digitalRead(Input1) == HIGH) {Dip1 = 1;} if (digitalRead(Input1) == LOW) {Dip1 = 0;}

if (digitalRead(Input2) == HIGH) {Dip2 = 2;} if (digitalRead(Input2) == LOW) {Dip2 = 0;}

if (digitalRead(Input3) == HIGH) {Dip3 = 4;} if (digitalRead(Input3) == LOW) {Dip3 = 0;}

if (digitalRead(Input4) == HIGH) {Dip4 = 8;} if (digitalRead(Input4) == LOW) {Dip4 = 0;}

if (digitalRead(Input5) == HIGH) {Dip5 = 16;} if (digitalRead(Input5) == LOW) {Dip5 = 0;}

if (digitalRead(Input6) == HIGH) {Dip6 = 32;} if (digitalRead(Input6) == LOW) {Dip6 = 0;}

if (digitalRead(Input7) == HIGH) {Dip7 = 64;} if (digitalRead(Input7) == LOW) {Dip7 = 0;}

if (digitalRead(Input8) == HIGH) {Dip8 = 128;} if (digitalRead(Input8) == LOW) {Dip8 = 0;}

if (digitalRead(Input9) == HIGH) {Dip9 = 256;} if (digitalRead(Input9) == LOW) {Dip9 = 0;}

if (digitalRead(Input10) == HIGH) {Dip10 = 512;} if (digitalRead(Input10) == LOW) {Dip10 = 0;}

DMXaddres = Dip1 + Dip2 + Dip3 + Dip4 + Dip5 + Dip6 + Dip7 + Dip8 + Dip9 + Dip10;

Test reciving DMX values.

Tricky part. but in this all you need is check RX led and BUILD IN.

if (lastPacket < 5000) { // it is less than 5 seconds after we received a DMX value

analogWrite(EnablePin, dmxSHUTTER);

digitalWrite(LED_BUILTIN, HIGH); // display a normal operation and we receive a DMX value

} else { // turn LED off when there is no data received

analogWrite(EnablePin, 0); // display error message; we receive no DMX value

digitalWrite(LED_BUILTIN, HIGH);

delay(100);

digitalWrite(LED_BUILTIN, LOW);

delay(100);

digitalWrite(LED_BUILTIN, HIGH);

}

I was working with MAX485 but at the end i was using SN75176.





Finish

WIN_20210324_13_20_40_Pro.jpg
Drawing.png

All i need is test it, in chaing, with other fixtures.. I went to club and put 2 on start and 2 on end of moving heads, blinders etc.

WORK WELL...

So this is chematic.

(dont hateme for it i cant find drawing programthat fits me)

And all codes i "made" for test and final.

Enjoy, and be cool like cucumber.

Free to use.