Ein DMX Chaser zum Song „The Final Countdown" von Europe

Hola y bienvenido a la segunda parte de la serie de controladores DMX.

En la parte de hoy, utilizaremos nuestro Arduino para programar un Chaser DMX o una secuencia DMX para la conocida canción "The Final Countdown" de Europe. Esto le dará una buena impresión de lo que se puede hacer con DMX y hasta qué punto es posible la automatización en el campo de la tecnología de iluminación. La estructura técnica es la misma que en la primera parte  de la serie y no es necesario cambiarla.


Para entender el funcionamiento general de nuestro chaser, repasemos la secuencia del programa. Primero, definimos la dirección DMX del foco RGB para nuestro chaser a través de la constante fija DMX_Actor_Address en la línea:

#define dmx_actor_address 1

Esta dirección especifica la dirección base (dirección principal) del foco RGB. El código asume que los colores individuales (rojo/verde/azul) se pueden controlar por separado a través de un canal por separado.

Para la asignación de canales, ahora ajustamos las definiciones de canal: DMX_RED_Ch 0, DMX_GREEN_Ch 1, DMX_BLUE_Ch, DMX_MACRO_Ch, DMX_STROBE_Ch, DMX_MODE_Ch y DMX_MASTERDIM_Ch:

// definen las funciones del canal de dispositivos DMX
#define Dmx_red_ch 0 + Dmx_actor_address
#define Dmx_green_ch 1 + Dmx_actor_address
#define Dmx_blue_ch 2 + Dmx_actor_address
#define Dmx_macro_ch 3 + Dmx_actor_address
#define Dmx_strobe_ch 4 + Dmx_actor_address
#define Dmx_mode_ch 5 + Dmx_actor_address
#define Dmx_masterdim_ch 6 + Dmx_actor_address

Después de los ajustes, el código se puede cargar en el Arduino:

// DMX Chaser a la canción 'Final Countdown Voo Europe'. por tobias kuch 2020 v1.0
// definir la dirección primaria del actor DMX

#define Dmx_actor_address 1

 
// definen las funciones del canal de dispositivos DMX
#define Dmx_red_ch 0 + Dmx_actor_address
#define Dmx_green_ch 1 + Dmx_actor_address
#define Dmx_blue_ch 2 + Dmx_actor_address
#define Dmx_macro_ch 3 + Dmx_actor_address
#define Dmx_strobe_ch 4 + Dmx_actor_address
#define Dmx_mode_ch 5 + Dmx_actor_address
#define Dmx_masterdim_ch 6 + Dmx_actor_address
 
#include <Dmxsimple.H>
 
byte Dmx_masterdim_val = 255;
bota Readpin;
 
vacío configurar() {
  mono(12,PRODUCCIÓN);
  escritura digital(12,Bajo);
  Dmxsimple.UsoPin(3);
  Dmxsimple.Maxchannel(512);
  } 
 
vacío Dmxpattern (largo Dmx_pattern_number)
{
Dmxsimple.escribiendo(Dmx_red_ch,Dmxval(Dmx_red_ch,Dmx_pattern_number));
Dmxsimple.escribiendo(Dmx_green_ch,Dmxval(Dmx_green_ch,Dmx_pattern_number));
Dmxsimple.escribiendo(Dmx_blue_ch,Dmxval(Dmx_blue_ch,Dmx_pattern_number));
Dmxsimple.escribiendo(Dmx_macro_ch, Dmxval(Dmx_macro_ch,Dmx_pattern_number));
Dmxsimple.escribiendo(Dmx_strobe_ch,Dmxval(Dmx_strobe_ch,Dmx_pattern_number));
Dmxsimple.escribiendo(Dmx_mode_ch, Dmxval(Dmx_mode_ch,Dmx_pattern_number));
Dmxsimple.escribiendo(Dmx_masterdim_ch, Dmxval(Dmx_masterdim_ch,Dmx_pattern_number));
}
 
vacío círculo() {
Dmxpattern(1);
demora(3138);
Dmxpattern(2);
demora(1824);
Dmxpattern(3);
demora(1768);
Dmxpattern(4);
demora(1995);
Dmxpattern(5);
demora(119);
Dmxpattern(6);
demora(1951);
Dmxpattern(7);
demora(2040);
Dmxpattern(8);
demora(2851);
Dmxpattern(9);
demora(1970);
Dmxpattern(10);
demora(2162);
Dmxpattern(11);
demora(135);
Dmxpattern(12);
demora(1880);
Dmxpattern(13);
demora(1986);
Dmxpattern(14);
demora(2007);
Dmxpattern(15);
demora(2131);
Dmxpattern(16);
demora(740);
Dmxpattern(17);
demora(441);
Dmxpattern(18);
demora(172);
Dmxpattern(19);
demora(1029);
Dmxpattern(20);
demora(1530);
Dmxpattern(21);
demora(2161);
Dmxpattern(22);
demora(185);
Dmxpattern(23);
demora(1852);
Dmxpattern(24);
demora(1098);
Dmxpattern(25);
demora(2926);
Dmxpattern(26);
demora(2110);
Dmxpattern(27);
demora(497);
Dmxpattern(28);
demora(152);
Dmxpattern(29);
demora(1437);
Dmxpattern(30);
demora(494);
Dmxpattern(31);
demora(550);
Dmxpattern(32);
demora(947);
Dmxpattern(33);
demora(891);
Dmxpattern(34);
demora(592);
Dmxpattern(35);
demora(561);
Dmxpattern(36);
demora(489);
Dmxpattern(37);
demora(578);
Dmxpattern(40);
demora(1125);
Dmxpattern(41);
demora(442);
Dmxpattern(42);
demora(388);
Dmxpattern(43);
demora(148);
Dmxpattern(44);
demora(2009);
Dmxpattern(45);
demora(17308);
Dmxpattern(46);
demora(154);
Dmxpattern(47);
demora(883);
Dmxpattern(48);
demora(533);
Dmxpattern(49);
demora(525);
Dmxpattern(50);
demora(134);
Dmxpattern(51);
demora(353);
Dmxpattern(52);
demora(120);
Dmxpattern(53);
demora(361);
Dmxpattern(54);
demora(1271);
Dmxpattern(55);
demora(2767);
Dmxpattern(56);
demora(2085);
Dmxpattern(57);
demora(1533);
Dmxpattern(58);
demora(550);
Dmxpattern(59);
demora(497);
Dmxpattern(60);
demora(121);
Dmxpattern(61);
demora(360);
Dmxpattern(62);
demora(498);
Dmxpattern(64);
demora(502);
Dmxpattern(65);
demora(2257);
Dmxpattern(66);
demora(4874);
Dmxpattern(67);
demora(4096);
Dmxpattern(68);
demora(4146);
Dmxpattern(69);
demora(4494);
Dmxpattern(70);
demora(3515);
Dmxpattern(71);
demora(5263);
Dmxpattern(72);
demora(2459);
Dmxpattern(73);
demora(124);
Dmxpattern(74);
demora(417);
Dmxpattern(75);
demora(1580);
Dmxpattern(76);
demora(510);
Dmxpattern(77);
demora(474);
Dmxpattern(79);
demora(487);
Dmxpattern(81);
demora(483);
Dmxpattern(82);
demora(2288);
Dmxpattern(84);
demora(489);
Dmxpattern(85);
demora(120);
Dmxpattern(86);
demora(1678);
Dmxpattern(87);
demora(491);
Dmxpattern(88);
demora(1905);
Dmxpattern(89);
demora(362);
Dmxpattern(90);
demora(384);
Dmxpattern(91);
demora(460);
Dmxpattern(92);
demora(4147);
Dmxpattern(93);
demora(459);
Dmxpattern(94);
demora(0);
Dmxpattern(95);
demora(129);
Dmxpattern(96);
demora(347);
Dmxpattern(97);
demora(1345);
Dmxpattern(98);
demora(567);
Dmxpattern(99);
demora(551);
Dmxpattern(100);
demora(24599);
Dmxpattern(101);
demora(93);
Dmxpattern(102);
demora(6742);
Dmxpattern(103);
demora(0);
Dmxpattern(104);
demora(421);
Dmxpattern(105);
demora(425);
Dmxpattern(106);
demora(424);
Dmxpattern(107);
demora(482);
Dmxpattern(108);
demora(6678);
Dmxpattern(109);
demora(433);
Dmxpattern(111);
demora(481);
Dmxpattern(112);
demora(463);
Dmxpattern(113);
demora(6714);
Dmxpattern(114);
demora(490);
Dmxpattern(115);
demora(484);
Dmxpattern(116);
demora(512);
Dmxpattern(118);
demora(3077);
Dmxpattern(119);
hacer {} mientras (cierto);
}
 
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Rotado GRN BLAU MAC STR MOD MASTER DIM ^^^^^^^^^^^^
byte Dmxdata[119][7] = {
                      {255,  0,  0,  0,255,  0,Dmx_masterdim_val}, // dmx - patrón 1
                      {255,  0,  0,  0,  0, 70,Dmx_masterdim_val},
                      {255,  0,255,  0,  0, 70,Dmx_masterdim_val},
                      {  0,255,255,  0,  0, 70,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0, 70,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0, 70,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0, 70,Dmx_masterdim_val},
                      {255,255,  0,  0,  0, 70,Dmx_masterdim_val},
                      {255,  0,255,  0,  0, 70,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,140,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0,140,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,140,Dmx_masterdim_val},
                      {255,  0,255,  0,  0,140,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,255,  0,  0,100,Dmx_masterdim_val},
                      {255,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,255,  0,255,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {150,  0,150,  0,  0,  0,Dmx_masterdim_val},
                      { 50,  0, 50,  0,  0,  0,Dmx_masterdim_val},
                      { 25,  0, 25,  0,  0,  0,Dmx_masterdim_val},
                      { 50,  0, 50,  0,  0,  0,Dmx_masterdim_val},
                      {150,  0,150,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,  0,255,  0,  0,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0, 60,Dmx_masterdim_val},
                      {255,255,255,  0,255, 0 ,Dmx_masterdim_val},
                      {180,180,180,  0,  0,  0,Dmx_masterdim_val},
                      {150,150,150,  0,  0, 60,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,255,  0,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,0,  0,Dmx_masterdim_val},
                      {255,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,0,  0,Dmx_masterdim_val},
                      {255,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,0,  0,  0,  70,Dmx_masterdim_val},
                      {255,  0,  0,  0,0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,  0,150,  0,  0,  0,Dmx_masterdim_val},
                      {  0,  0, 50,  0,  0,  0,Dmx_masterdim_val},
                      {  0,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,255,  0,255,  0,Dmx_masterdim_val},
                      {  0,  0,255,  0,255,  0,Dmx_masterdim_val},                    
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {  0,255,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,  0,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,255,  0,255,  0,Dmx_masterdim_val},
                      {255,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,255,  0,  0,  0,Dmx_masterdim_val},
                      {255,255,255,  0,  0, 60,Dmx_masterdim_val},
                      {  0,  0,  0,  0,  0,  0,Dmx_masterdim_val},
                     };
// -------------------- Patrones de ejemplo común ---------
// {255, 0, 0, 0, 0, 0, DMX_MASTERDIM_VAL}, // rojo rojo 
// {0,255, 0, 0, 0, 0, DMX_MASTERDIM_VAL}, // Full Green 
// {0, 0,255, 0, 0, 0, DMX_MASTERDIM_VAL}, // Azul completo 
// {255,255,255, 0, 0, 0, DMX_MASTERDIM_VAL}, // blanco completo 
// {255,255,255, 0,255, 0, DMX_MASTERDIM_VAL}, // estroboscopio rápido 
// {255,255,255, 0, 0, 70, DMX_MASTERDIM_VAL}, // FAD WHITE 
// {255,255,255, 0, 0, 60, DMX_MASTERDIM_VAL}, // FAD WHITE 
// {255,255,255, 20, 0, 60, dmx_masterdim_val}, // blanco lento parpadeante 
 
byte Dmxval(byte Dmx_ch,largo Dmx_pattern_number)
{
  byte usted =  Dmxdata[Dmx_pattern_number-1][Dmx_ch-1];
  regreso usted;
}

Le deseo que se divierta con la reconstrucción y hasta la próxima.

Für arduinoProjekte für fortgeschrittene

4 comentarios

Ralf Helmle

Ralf Helmle

@Tobias und Michael:
Ich stimme der Idee zu.
Vielleicht wäre es möglich mit GEMA-freier Musik und in niedriger Auflösung ein kleines Demo-Video zur Verfügung zu stellen.
Das würde auch den Aufwand nochmal verdeutlichen, den eine weitere/neue/andere Musik bei der Einbindung macht.
Ein paar Sekunden würden ja reichen.
Gruß
Ralf

Tobias

Tobias

Hallo Michael,
Es gibt kein Video aus folgenden Gründen:
a.) Die Blogs werden als E-Mail an die Redaktion zur Veröffentlichung übermittelt. Anhänge von mehreren 100 MB (Video) werden von meinem Mailanbieter nicht unterstützt. ( Anhangsbeschränkung)
b.) Aufgrund von GEMA Bestimmungen dürfte so ein Video keine Lizenzpflichtige Musik enthalten, was bei Europe “The Finale Countdown” zutreffen dürfte. Ein Video des geblinkes ohne untermalende Musik ist ziemlich langweilig :(
Viele Grüße

Michael

Michael

Gibt es auch ein Video, in dem man das ganze in Aktion sieht?

Hubi

Hubi

Hallo
toller Beitrag, aber aber von meiner Seite eine kleine Optimierung des Codes. Da die Tabelle DmxData eh schon existiert könnte man diese um eine Spalte Verzoegerung erweitern, in der die delay-Zeit nach jedem Aufruf DmxPattern steht. Dann verringert sich die Ausgabe der 119 DmxPattern auf eine for-Schleife mit den Zeilen:
DmxPattern(i);
delay(DmxData[i]7); // Spalte 7 mit der Verzoegerungszeit.

Servus

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Publicaciones de blog recomendadas

  1. Wir bauen eine Smart Home Zentrale mit ArduiTouch
  2. Schrittmotor Steuerung für Antennen Rotor
  3. Arbeiten mit dem Cayenne Dashboard - einfacher Sensor (Teil 1)
  4. Mit dem ESP8266 8 Lampen steuern