====== DMX using Arduino Yun ====== URL: 192.168.1.72/arduino/blue/0 /* Welcome to DmxSimple. This library allows you to control DMX stage and ** architectural lighting and visual effects easily from Arduino. DmxSimple ** is compatible with the Tinker.it! DMX shield and all known DIY Arduino ** DMX control circuits. ** ** DmxSimple is available from: http://code.google.com/p/tinkerit/ ** Help and support: http://groups.google.com/group/DmxSimple */ /* To use DmxSimple, you will need the following line. Arduino will ** auto-insert it if you select Sketch > Import Library > DmxSimple. */ #include #include #include #include const int jrde = 2; const int jdi = 3; const int jro = 4; const int lr = 7; const int ly = 8; // Listen on default port 5555, the webserver on the Yun // will forward there all the HTTP requests for us. YunServer server; void setup() { pinMode(jrde, OUTPUT); pinMode(jdi, OUTPUT); pinMode(jro, INPUT); pinMode(lr, OUTPUT); pinMode(ly, OUTPUT); digitalWrite(jrde, HIGH); DmxSimple.usePin(jdi); DmxSimple.maxChannel(20); Bridge.begin(); // Listen for incoming connection only from localhost // (no one from the external network could connect) server.listenOnLocalhost(); server.begin(); } void loop() { YunClient client = server.accept(); // There is a new client? if (client) { // Process request process(client); // Close connection and free resources. client.stop(); } delay(50); // Poll every 50ms /* setZero(); setRed(); setZero(); setGreen(); setZero(); setBlue(); */ } void process(YunClient client) { // read the command String command = client.readStringUntil('/'); if (command == "red") { setRed (client); } else if (command == "green") { setGreen (client); } else if (command == "blue") { setBlue (client); } else if (command == "loop") { setLoop (client); } } void setZero () { DmxSimple.write(1, 0); // OFF DmxSimple.write(5, 0); // OFF DmxSimple.write(2,0); /// RED DmxSimple.write(6,0); /// RED DmxSimple.write(3,0); /// RED DmxSimple.write(7,0); /// RED DmxSimple.write(4,0); /// RED DmxSimple.write(8,0); /// RED } void setLoop (YunClient client) { client.print (F("looping 5" )); for (int i=0; i<5; i++) { setRed(client); delay(2000); setGreen(client); delay(2000); setBlue(client); delay(2000); } } void setRed (YunClient client) { client.print (F("setting to red" )); setZero(); DmxSimple.write(1, 0); // OFF DmxSimple.write(5, 0); // OFF delay(1000); DmxSimple.write(2,128); /// RED DmxSimple.write(6,128); /// RED for (int b =251; b <= 255; b++) { DmxSimple.write (1,b); DmxSimple.write (5,b); delay(1000); } // delay(2000); } void setGreen (YunClient client) { client.print (F("setting to green" )); setZero(); DmxSimple.write(1, 0); // OFF DmxSimple.write(5, 0); // OFF delay(1000); DmxSimple.write(3,128); /// RED DmxSimple.write(7,128); /// RED for (int b =251; b <= 255; b++) { DmxSimple.write (1,b); DmxSimple.write (5,b); delay(1000); } // delay(2000); } void setBlue (YunClient client) { client.print (F("setting to blue" )); setZero(); DmxSimple.write(1, 0); // OFF DmxSimple.write(5, 0); // OFF delay(1000); DmxSimple.write(4,128); /// RED DmxSimple.write(8,128); /// RED for (int b =251; b <= 255; b++) { DmxSimple.write (1,b); DmxSimple.write (5,b); delay(1000); } // delay(2000); }