projects:dmx_roboscan

Martin RoboScan 812 DMX scanner + Arduino

Stuur met een Arduino een discolamp aan. Voor DMX adressen en functies van de Martin RoboScan 812 zie datasheet: Klik.

Koppel met het DMX doosje een uitgang van de Arduino aan de DMX kabel. Het DMX doosje heeft 3 verbindingen met de Arduino nodig:

  1. 5V (Led indicator)
  2. Data
  3. GND

Het datapinnetje kan op elke digitale pin van de arduino worden verbonden. Gebruik de library DmxSimple om met de Arduino een DMX signaal uit te sturen.

Work in progress

Gemaakt door Ron.

Zoek en installeer de library DmxSimple in de “Library Manager” van Arduino. (Sketch > Include library > Manage Libraries) De Arduino die aan het DMX doosje hangt is een Arduino Nano. Board: Arduino Nano, Processor: ATmega328P (Old Bootloader). Kopiëer en plak het onderstaande programma in een lege Arduino sketch.

#include <DmxSimple.h> //Laden van DMX library
 
/*
Martin RoboScan 812 datasheet: https://www.martin.com/en/products/roboscan-812
De Martin RoboScan heeft 7 kanalen in "vector mode".
De verschillende standen van deze 7 kanalen kun je vinden 
op pagina 16. Kijk dan naar "DMX Values" (0 tot 255).
 
Pin 3 wordt als datapin gebruikt.
 
Deze demo bestaat uit 7 delen:
1: Initialiseren
2: Bewegen
3: Kleurenwiel. Vaste kleuren kiezen
4: Gobowiel. Vaste Gobo's kiezen
5: Kleurenwiel laten scrollen
6: Gobowiel laten scrollen
7: Willekeurige kleur- en gobocombinaties
 
Open de seriele monitor voor actuele informatie.
*/
 
 
void setup() {
  // put your setup code here, to run once:
 
  DmxSimple.usePin(3); //Pin 3 als datapin gebruiken
 
  Serial.begin(9600); //Starten van de seriele verbinding
}
 
void loop() {
  // put your main code here, to run repeatedly:
 
  delay(2000);
  //================= 1: Initialiseren ==================//
  Serial.println("\n1: Initialiseren");
 
  //DmxSimple.write(kanaal, waarde);
  DmxSimple.write(1, 255); //Lamp aanzetten
  DmxSimple.write(2, 236); //Kleur: Wit
  DmxSimple.write(3, 236); //Gobo: Open
  DmxSimple.write(4, 127); //Pan: Midden  (0=Links, 255=Rechts)
  DmxSimple.write(5, 127); //Tilt: Midden (0=Boven, 255=Onder)
  DmxSimple.write(6,   0); //Bewegingssnelheid: Tracking enabled
  DmxSimple.write(7,   0); //Kleur/Gobosnelheid: Tracking enabled
 
 
  delay(2000);
  //================= 2: Bewegen ==================//
  Serial.println("\n2: Bewegen");
  for(byte i=0; i<4;i++){ //4 keer herhalen
    DmxSimple.write(4,   0); //Pan: Links  
    DmxSimple.write(5,   0); //Tilt: Boven
    delay(1000);
    DmxSimple.write(4, 255); //Pan: Rechts  
    DmxSimple.write(5,   0); //Tilt: Boven
    delay(1000);
    DmxSimple.write(4, 255); //Pan: Rechts  
    DmxSimple.write(5, 255); //Tilt: Onder
    delay(1000);
    DmxSimple.write(4,   0); //Pan: Rechts  
    DmxSimple.write(5, 255); //Tilt: Onder
    delay(1000);
  }
 
  //Op het plafond schijnen:
  DmxSimple.write(4, 80); //Pan: Midden  (0=Links, 255=Rechts)
  DmxSimple.write(5, 230); //Tilt: Midden (0=Boven, 255=Onder)
 
 
  delay(2000);
  //================= 3: Kleurenwiel. Vaste kleuren kiezen ==================//
  Serial.println("\n3: Kleurenwiel. Vaste kleuren kiezen");
  for(byte i=0; i<=12;i++){
 
    if(i==0){ Serial.println("\tKleur: Zwart")             ;}
    if(i==1){ Serial.println("\tKleur: Wit")               ;}
    if(i> 1){ Serial.println("\tKleur: Kleur "+String(i-1));}
 
    DmxSimple.write(2, 242-5*i); //Kleur: kleur i
    delay(1000);
  }
  DmxSimple.write(2, 236); //Kleur: Wit
 
 
  delay(2000);
  //================= 4: Gobowiel. Vaste Gobo's kiezen ==================//
  Serial.println("\n4: Gobowiel. Vaste Gobo's kiezen");
 
  for(byte i=0; i<=12;i++){
 
    if(i==0){ Serial.println("\tGobo: Dicht")            ;}
    if(i==1){ Serial.println("\tGobo: Open")             ;}
    if(i> 1){ Serial.println("\tGobo: Gobo "+String(i-1));}
 
    DmxSimple.write(3, 242-5*i); //Gobo: gobo i
    delay(1000);
  }
  DmxSimple.write(3, 236); //Gobo: Open
 
 
  delay(2000);
  //================= 5: Kleurenwiel laten scrollen ==================//
  Serial.println("\n5: Kleurenwiel laten scrollen");
 
 
  for(byte i=0; i<=180;i++){
    DmxSimple.write(2, i);
    if(i%5==0){Serial.println("\tKleur: "+String(i));}
    delay(40);
  }
  delay(1000);
  DmxSimple.write(2, 236); //Kleur: Wit
 
 
  delay(2000);
  //================= 6: Gobowiel laten scrollen ==================//
  Serial.println("\n6: Gobowiel laten scrollen");
 
  for(byte i=0; i<=180;i++){
    DmxSimple.write(3, i);
    if(i%5==0)Serial.println("\tGobo: "+String(i));
    delay(40);
  }
  delay(1000);
  DmxSimple.write(3, 236); //Gobo: Open
 
 
  delay(2000);
  //================= 7: Willekeurige kleur- en gobocombinaties ==================//
  Serial.println("\n7: Willekeurige kleur- en gobocombinaties");
 
  for(byte i=0; i<=10; i++){
 
    byte kleur = random(1,12);
    byte gobo  = random(1,12);
 
    if(kleur==1){ Serial.print("\tKleur: Wit")                   ;}
    if(kleur> 1){ Serial.print("Kleur: Kleur "+String(kleur-1));}
    Serial.print(" ");
    if(gobo==1){ Serial.println("Gobo: Open")                ;}
    if(gobo> 1){ Serial.println("Gobo: Gobo "+String(gobo-1));}
 
    DmxSimple.write(2, 242-5*kleur); //Gobo : Gobo  i
    DmxSimple.write(3, 242-5*gobo ); //Kleur: Kleur i
 
    delay(1500);
  }
  delay(1000);
  DmxSimple.write(2, 236); //Kleur: Wit
  DmxSimple.write(3, 236); //Gobo: Open
 
}
  • projects/dmx_roboscan.txt
  • Last modified: 2020/08/19 20:16
  • by ron