User Tools

Site Tools


dmx_yun

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 <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>
#include <DmxSimple.h>

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);
  
}

dmx_yun.txt · Last modified: 2021/06/04 02:16 (external edit)