Diseño de una controladora DMX con Arduino Mega

Hola!
Disculpad si no expreso correctamente lo que pretendo "diseñar", o si no he elegido el lugar más apropiado, es el primer día que estoy en este foro y desconozco los pormenores.
Soy estudiante de Mantenimiento Electrónico, en Valencia (España)y ya he terminado el curso -teórico-. Debo realizar prácticas en empresa y presentar un proyecto para terminar el ciclo.

El proyecto trata de ser una controladora (lo que seria la mesa de luces) DMX con aproximadamente 25 escáners, 10 faders, pulsador de Page y no se si podré lograr algo más (me gustaría colocar un Display LCD controlado con I2C).

He estado buscando en este foro información al respecto, pero no he dado con nada asequible a mi nivel de programación en C -que es bastante bajo- en relación con esta controladora; si información sobre receptores -pero cuando veo el programa, me pierdo con el tema de las direcciones-.

A día de hoy he encontrado información DMX muy útil en el blog de Toni Merino (Deskontrol) y me estoy familiarizando con la trama DMX a través del software Saleae y un analizador lógico made in China. Tengo dos receptores DMX -foco de led RGBW y una Cristal Ball- con los que hago pruebas.
Estoy esperando componentes para poder montar parte de este circuito y hacer pruebas ([blog.deskontrol.net mini-controlador-dmx-con-arduino -No puedo poner el linK correcto porque no está verificado que no sea spam. Se puede poner barra en los espacios o buscar estos términos con el google)).
Las pruebas que estoy haciendo ahora consiste en enviar datos con el siguiente programa, variando con un potenciómetro:

CÓDIGO:

#include <DmxSimple.h>

void setup() {

DmxSimple.usePin(3); // pin donde saldrá la trama DMX
DmxSimple.maxChannel(100); // límite de 100 canales, por defecto 512
Serial.begin(9600);
}
void loop () {

int valpot=0;
int valanal=0;

valpot = analogRead(A0); //asignación de entrada digital a variable
valanal = map(valpot, 0, 1023, 0, 255); //límite de valores a 255 en el potenciómetro

Serial.println(valanal);

for(int canal = 1; canal<20;canal++ ) {
DmxSimple.write(canal, valanal); // canal, intensidad

}
}

Pero a día de hoy la trama DMX me tiene mareado...

- Con un numero de canales máximo de 100, un recorrido por 19 canales, a una intensidad de 200 se obtiene una trama como la observada en la imagen 2. Y en detalle, la imagen 1 no respeta el protocolo DMX de Break (88us), MAB (8us), bit start a nivel bajo, 8 bits de datos y 2 bits de stop (tal vez todo esto no se vea en esta imagen, pero lo he estado observando en diferentes muestras.
En la imagen 2 se observamos cables 2, 3 y 1, GND y Vcc y la salida Tx del Arduino.

Foto: Trama_DMX_1.jpg, Trama_DMX_2.jpg

- La trama DMX sólo llega a 9 canales (?)

- Cuando modifico el valor de potenciómetro, los receptores pasan por los distintos programas que tienen pre-grabados.

- No consigo aislar, por ejemplo, en el foco, canal 2 = rojo, canal 3 = verde, canal 4 = azul, canal 5 = blanco, canal 6 = strobo... aunque ponga DmxSimple.write(4, 255)

- ...
Pero el principal problema es que no sé como aislar un solo canal y modificar la intensidad en ese canal (DmxSimple.write(4, 255) por ejemplo, cuando segun la libreria DMX del programa es lo que tendría que hacer)

En fin, si alguien ha pasado por esto o tiene alguna idea sería de gran ayuda.
Gracias de antemano,
Saludos,
Joan
 
Hola
Hola!
Disculpad si no expreso correctamente lo que pretendo "diseñar", o si no he elegido el lugar más apropiado, es el primer día que estoy en este foro y desconozco los pormenores.
Soy estudiante de Mantenimiento Electrónico, en Valencia (España)y ya he terminado el curso -teórico-. Debo realizar prácticas en empresa y presentar un proyecto para terminar el ciclo. . . . .

bueno lo que pensas hacer esta medio dificil ., porque para arduino., no hay muchas librerias disponibles ., aca tenes que hacer todo con atmega​
Lo que hizo toni merino fue tomar las librerias de Hendrik Hölscher ., y adaptarlas a arduino​
Yo hice un cargador de direcciones (solamente la direccion)., el programa fue escrito por otro integante del foro ., COSMEFULANITO04 ., esta por aca https://www.forosdeelectronica.com/f24/desarrollo-cargador-direcciones-dmx-111704/#post883674
El problema que tuve ., en ese momento fue que el UC elegido ., solo tenia dos timers ., para manejar todo ., ahora lo se (en ese momento NO jajajajajaja) ., que casi todos los equipos profecionales ., el LCD ., lo conectan por I2C o SPI (esclavo)., con otro UC que maneje sus funciones solamente​
Las librerias de arduino ., que hay en el foro oficial ., no estan preparadas para la transmicion o sea DMXTX (como en este caso)​
Ahora yo te recomendaria que cambiaras de proyecto., porque par hacer esto ., tenes que saber mucho de programacion ., por que hay otra cosa que se te escapa​
Hoy en dia .,(y casi todos lo traen) existe la funcion DRM ., que es parte del protocolo DMX ., que es parte de la supervicion y control del equipo​
O sea ., que la consola tendra que transmitir y recibir ( las dos funciones) ., ese otro dato no lo tenias en cuenta​
la otra cuestion es que la librerias para arduino ., estan llenas de DELAY"s ., y jamas se puede usar (paran el ciclo de trabajo del UC)​
Por otro lado ., el problema que tenes es que esas librerias no tienen la forma de producir los dos bit de parada ., o separacion que se usa entre canal y canal (que en realidad son tres) ., que son : BREAK valor de 0 (BAJO) para 200US ., MAB valor por 1 (ALTO) 88us y SC valor 0 instantaneo​
Esos valores se tienen que mantener (mas o menos aceptan un pequeño margen de error) ., para que los equipos receptoreslo ., puedan aceptar como un patron de envio logico y no como un error de trama DMX​
La verdad es que no uso arduino (ni lo pienso usar jajajajajajajaj) uso los atmegas directamente ., pero si nesesitas algun otro dato talvez te pueda ayudar​
 
Última edición por un moderador:
Muchas gracias locodelafonola por tu rápida respuesta, y disculpa que te avasalle con esta respuesta.

Me he quedado un poco chafado con tu apreciación de este proyecto porque llevo desde noviembre dándole vueltas. Ha sido ahora cuando han terminado las clases cuando ya me he podido dedicar con más tiempo a esta idea.

Antes de escribir este mensaje estuve indagando por distintos foros, webs de proyectos DMx, y también tu proyecto del desarrollo de direcciones en este foro. Intentando descifrar la información que en él has introducido; lo tuve que dejar en el momento de llegar a la programación, ya que sólo conozco un poco de C (la que se puede aprender en unos meses trabajando con el arduino).

Estuve viendo los videos, que no me aportaron más información de la que que tenía con estos aparatos. Cuando me los compré estuve trasteando y pude averiguar canales, programas,...

Cuando me propuse este proyecto pensé en el DMX por poder establecer una comunicación Simplex (y olvidar algunos avances como el DRM), que suponía que sería más fácil y vistosa que otro tipo de proyecto. Además como el arduino también trabaja con el protocolo I2C y ya estuve manejando un display con él simplificaría trabajo -pensé, esta parte todavía no la tengo desarrollada-.(Sé que no eres muy amigo de este artefacto, a mi me ha supesto entrar de lleno en el trasteo de la electrónica más allá de las simples "resistencias"...Supongo que con el tiempo me decantaré por los microcontroladores, sobretodo cuando adquiera más experiencia...)

No he utilizado PIC porque no los he estudiado, y solo tengo tres meses para poder sacar el proyecto adelante.

En el instituto tengo un tutor que controla bastante la programación, y espero que sepa resolver alguna o muchas de las dudas que surjan en este campo.

Me preocupa el hecho de que las librerias contengan los delay -no se si puede afectar la transmision simplex, ya que cuando lo vimos en clase, el profesor ya nos introdujo sus inconvenientes-.

Con el comentario que haces al respecto de que las librerias DMX de arduino no producen los bits de parada, no lo llego a entender... De la web de arduino DMX, en el apartado Software DmxSimple (ejemplos...), (DmxSimple is a library from Tinker.it! for outputting DMX signals. It is compatible with all recent versions of Arduino. By handling DMX frames in the background, DMX can controlled in a similar way to analogWrite...) se introduce que es capaz de producir señales DMX.
Como ya conté en el mensaje, los resultados de la trama DMX me despistaron porque no respondian exactamente a lo que especifica el protocolo, no sé si porque no hago bien las medidas, porque el analizacdor no es muy preciso o porque no funciona como debe. ¿Quiere decir esto que si utilizo la expresión DmxSimple.write(Canal, intensidad) no me va a producir la trama DMX?
Y referente a la última parte de tu respuesta, no entiendo tu trama DMX: ("BREAK valor de 0 (BAJO) para 200US ., MAB valor por 1 (ALTO) 88us y SC valor 0 ..."). En el proyecto de las direcciones, cosmefulanito04 introduce la trama DMX diferente a la que tu citas. Cuál es la diferencia?

Y respecto a tu apreciación... la meditaré. La consultaré con el tutor y si él ve que puede hacer frente a los aprientos de la programación o ajuste de las librerias, seguiré adelante. Sinó, la tendré que apartacar, de momento.

Muchas gracias por haber hecho que esto pueda continuar...aunque no en el camino que me esperaba. Supongo que si continuo con esto te sugeriré alguna ayuda.
Saludos,
Joan
 
Hola
Muchas gracias locodelafonola por tu rápida respuesta, y disculpa que te avasalle con esta respuesta.

Me he quedado un poco chafado con tu apreciación de este proyecto porque llevo desde noviembre dándole vueltas. Ha sido ahora cuando han terminado las clases cuando ya me he podido dedicar con más tiempo a esta idea. . . .
Bueno ., vamos a aclarar un poco (o al memos intentarlo jajajajajajajaja)​
Lo he escrito ya varias veces ., pero parece que ese "error" ., no lo toman en cuenta ., siendo muy importante​
Alli ., desde el vamos esta mal configurado el trabajo de la libreria ., por lo tanto., para separa un canal de otro ., usan el DELAY :cry: :cry: :cry:
Si te fijas en el esquema que propones en esa pagina ., fijat el detalle de como esta conectado el RS485 (o SN75176B es igual ) ., de como estan conectados los pines 2 y 3​
Por aca podes leer algo y como lo explico​
https://www.forosdeelectronica.com/posts/932867/
Y por aca tambien lo explico mas claro (porque no lo entendian)​
https://www.forosdeelectronica.com/posts/1050632/
En cuanto alos tiempos ., de el BREAK y MAB ., !!! ojo ¡¡¡ ., son distintos tanto en la trasmicion ., como en la recepcion​
En el caso del trasmisor ( tu caso) ., se da un poco mas de tiempo al BREAK ., para que compence ., la distancia del cableado ( no te olvides que es un solo cable ., que entra y sale en cada equipo)​
Al menos creo ., que te estas dando cuenta ., que si queres llegar a feliz termino ., tiene que ser con librerias profecionales ., y no adptaciones como las de arduino (o corregirlas en todo caso ., pero es bien dificil )​
Y con esto no te quiero decir que arduino es malo., ni nada de eso ., solo que los proyectos en DMX ., no abarcan las reglas ., del protocolo profecional porque las reformaron sin tomar en cuenta muchos aspectos ., que son importantes​
 
Última edición por un moderador:
Gracias otra vez por tu ayuda locodelafonola.

De momento estoy asimilando la información que me has proporcionado y recopilando información porque tengo que consultar con mi tutor (lunes).

Cuando tenga más información al respecto, continuaré con lo que resuelva y si este puede introducir modificaciones que resulten operativas continuaré con el proyecto. Si no supongo lo que tendré que dejar de lado por un tiempo...

Saludos,
Joan
 
Hola
Gracias otra vez por tu ayuda locodelafonola.

De momento estoy asimilando la información que me has proporcionado y recopilando información porque tengo que consultar con mi tutor (lunes).

Cuando tenga más información al respecto, continuaré con lo que resuelva y si este puede introducir modificaciones que resulten operativas continuaré con el proyecto. Si no supongo lo que tendré que dejar de lado por un tiempo...

Saludos,
Joan
Bueno OK ., te podria guiar mas pero no se ., cuales de los lenguajes C dominas ., ni que IDE de programacion usas​
Sabiendo mas de tus limitaciones tal vez ., te podria sugerir o indicarte mas ., y aclarate un poco las cosas​
 
OK, gracias otra vez locodelafonola. Esta tarde consultaré con el tutor y que me oriente. Creo que estaría entre un 10/15% de conocimiento del lenguaje C. Alguna función de C++ porque tuvimos problemas con el C, pero supongo que esto no sirve ni para empezar. De todas formas, como ya comenté. en el tema de programación tengo ayuda y por lo poco que sé controla bastante C (y C++), phyton, y también tiene nociones de html, VisualBasic y java, aunque no sé si es poco o mucho -supongo que sufuciente-.
En cuanto al IDE, como trabajo a través del Arduino, lo hacemos con su software (arduino.cc en main software), en la versión 1.6.

(Quito el enlace del la página de arduino porque no me deja enviar el mensaje. Colocar http... www y entre los espacios colocar barras (/). Sino buscar en google software arduino...)

Saludos,
Joan

 
Última edición:
Hola,
Como comenté ayer estuve mostrando la información que había recopilado al tutor.
Planteé los problemas de la librería y los resultados que obtuve con el analizador.
Me comentó que les echaría un vistazo, y que intentaría ver si a las librerías puede realizar alguna modificación.
A la espera de cómo sobrevenga el tema, os mantendré informados.
Saludos,
Joan
 
Hola
Hola,
Como comenté ayer estuve mostrando la información que había recopilado al tutor.
Planteé los problemas de la librería y los resultados que obtuve con el analizador.
Me comentó que les echaría un vistazo, y que intentaría ver si a las librerías puede realizar alguna modificación.
A la espera de cómo sobrevenga el tema, os mantendré informados.
Saludos,
Joan
Bueno ok ., yo te diria que esperaras a que te condeste tu tutor​
El asunto aca ., es que trabajes con lenguaje C normal ., directamente con el atmega​
Yo te podria ayudar con librerias que si funcionan ., o con ejemplos de equipos DIY ., que si funcionan perfectamente​
Por ejemplo ., se que hay alguien que reformo las librerias de arduino IN y OUT ., para hacer la trasmicion y recepcion DMX via inalambrica​
Pero como yo no trabajo con arduino ., NO te sabria decir como las reformo​
Aca te pongo el esquema basico para atmega8515​
Si te fijas en el esquema ., esta preparado para TRASMICION ., y tambien para RECEPCION​
Esto que te muestro aca funciona perfectamente ., porque lo probe en lo fisico ., esta son las librerias que use​
MAIN.C
PHP:
#include "lib_dmx_out.h"

int main(void)
{
cli();
init_DMX_TX();

DmxTxField[1]= 10;	// valores fijados para la salida
DmxTxField[2]= 20;	// el valor de Ch0 (DmxTxField[0]) se capturan de las llaves MniDIPs
DmxTxField[3]= 30;
DmxTxField[4]= 40;
DmxTxField[5]= 50;
DmxTxField[6]= 60;
DmxTxField[7]= 70;
DmxTxField[8]= 80;
DmxTxField[9]= 90;
DmxTxField[10]=100;

DDRC= 0;					//Habilitar llaves MiniDIPs
PORTC= 0xFF;

sei();
for(;;)
	{
	DmxTxField[0]= ~(PINC); // guarda en el Buffer (DmxTxField[0]) el valores de las LLaves
	};
}
lib_dmx_out_noTimer.c​
PHP:
//***************************************************************************/

#include "lib_dmx_out.h"

// ********************* Definiciones locales *********************
		uint16_t 	gCurDmxCh;		// Canal DMX actual
		uint8_t		gDmxState;

enum {BREAK, STARTB, DATA};

// *************** Inicialización de la recepción DMX ****************
void init_DMX_TX(void)
{
//Iniciar Puertos 
DDRD |= (1<<2)|(1<<1);
PORTD |= (1<<2)|(1<<1);		//enable transmission (para SN75176B)

//USART
UBRRH  = 0;
UBRRL  = ((F_OSC/4000)-1);	// 250kbaud, 8N2 (velocidad de USART para protocolo DMX)
UCSRC |= (1<<URSEL)|(3<<UCSZ0)|(1<<USBS);
UCSRB |= (1<<TXEN)|(1<<TXCIE);
UDR    = 0;					//Iniciar la USART

//Data
gDmxState= BREAK;	// Empezar con pausa (BREAK) de la señal 
}



// ****************** Transmisión DMX ISR ********************

ISR (UART_TX_vect)
{
uint8_t DmxState= gDmxState;

if (DmxState == BREAK)
	{
	UBRRH  = 0;
	UBRRL  = (F_OSC/1600);//90.9kbaud Se baja la tasa de bauidos para mejor trasmicion del BREAK
	UDR    = 0;			// Enviar pausa
	gDmxState= STARTB;
	}
else if (DmxState == STARTB)
	{
	UBRRH  = 0;
	UBRRL  = ((F_OSC/4000)-1);	// 250kbaud se vuelve a subir los BUIDOS para trasmicion
	UDR    = 0;					// Enviar byte inicial
	gDmxState= DATA;
	gCurDmxCh= 0;
	}
else
	{
	_delay_us(IBG); // Valor del delay definido en la libreria DMX OUT.H
	uint16_t CurDmxCh= gCurDmxCh;
	UDR= DmxTxField[CurDmxCh++]; // enviar datos 
	if (CurDmxCh == sizeof(DmxTxField)) gDmxState= BREAK; // Nueva pausa si todos los DmxTxField(i) (canalesDMX) son enviados
	else gCurDmxCh= CurDmxCh;
	}
}
lib_dmx_out.h
PHP:
#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>
#include <util/delay.h>

#define F_OSC		(8000) //Oscilador freq. En kHz (8MHz típico o 16MHz)
#define IBG   		(10)				// Valor del delay del Interbyte gap [us] aplicado a la pausa (BREAK)

volatile uint8_t DmxTxField[50];// maxima cantidad de canales DMX a enviar


extern void init_DMX_TX(void);
No se ., si con esto te aclaro un poco mas las cosas ., o te "mareo" mas de la cuenta ., y tene presente que este ejemplo ., envia un solo canal ., y por logica en la direccion 1( NO ASIGNADA)​
La cosa se complica ., cuando tenes que enviar mas canales a distintos equipos (distintas direcciones del universo 512)​
 
Última edición:
Muchas gracias locodelafonola por esta nueva información.
He estado mirando este esquema y las librerías; quiero coger el datasheet del atmega y echarle un vistazo, porque así de pronto me surgen muchas dudas. Supongo que cuando asimile la información, y lo comente con mi tutor nos plantearemos si hacemos un pequeño cambio en el proyecto.

No obstante, tus consejos me son de gran utilidad ya que me ayudan a descubrir este proyecto y lo que conlleva, ya que al principio desconocía que este tipo de controladoras tuviesen tantos aspectos a tener en cuenta.
Saludos,
Joan
 
Hola
Muchas gracias locodelafonola por esta nueva información.
He estado mirando este esquema y las librerías; quiero coger el datasheet del atmega y echarle un vistazo, porque así de pronto me surgen muchas dudas. Supongo que cuando asimile la información, y lo comente con mi tutor nos plantearemos si hacemos un pequeño cambio en el proyecto.

No obstante, tus consejos me son de gran utilidad ya que me ayudan a descubrir este proyecto y lo que conlleva, ya que al principio desconocía que este tipo de controladoras tuviesen tantos aspectos a tener en cuenta.
Saludos,
Joan
Bueno ., si es logico que se te compliquen las cosas​
Lo que te paso ., es que te confundiste mucho con el proyecto de esa pagina ., como el hecho de que el autor ., pone con bonbos y platillos ., que usa la libreria de 4 universos (2048 canales DMX)​
Y su proyecto solo envia 6 nada mas y sin poder fijar direccion de envio (porque no tiene manera de hacerlo en su configuracion)​
El otro punto (y lo aclara en el articulo) ., que se podria configurar el "CUE" .,o valores de envio​
O sea la direccion del equipo ., mas los valores de los canales (pero solo aclara ., que se podrian guardar en la memoria ., pero no explica como jajajajajajajajaja​
El otro punto tambien ., es que el protocolo de trasmicion ., exije el envio de por lo menos 24 canales (con el arduino envia solo 6 ¿¿¿¿¿y los otros ???​
El ejemplo que te subi ., si bien usa la libreria profecional ., no cumple el protocolo porque solo envia uno (solo sirve para fines didacticos ., como esta logicamente)​
Aca te limpie el esquematico ., para que te sea mas facil entender ., lo que esta en circulo rojo., son los terminales que se usan par programar por SPI ., pero no interviene en el uso​
Trasmisor basico libreria TX-DMX.jpg
Y otra recomendacion., ya que usas arduino ., instala la ultima vercion del AVRstudio​
Con esa vercion podes programar en ASM ., C y tambien arduino ( es la misma interfaz que esta usando)​
La ventaja que tiene .,es que se puede pasar el codigo a AVR y podes mirar varios tipos de codigos ., mas si estas aprendiendo​
 
Aunque me repita, gracias por tus aportaciones. Me están abriendo los ojos, y aunque voy poco a poco, empiezo a entender el kit de la cuestión.
Todavía no me había dado tiempo a descifrar el esquema, y no había caído en el J1, claro, necesario para la programación!!
En fin... poco a poco...
saludos!
Joan
 
hola
Aunque me repita, gracias por tus aportaciones. Me están abriendo los ojos, y aunque voy poco a poco, empiezo a entender el kit de la cuestión.
Todavía no me había dado tiempo a descifrar el esquema, y no había caído en el J1, claro, necesario para la programación!!
En fin... poco a poco...
saludos!
Joan
Bueno ., yo segui buscando algo para ayudarte mejor​
Encontre esto ., que es de un aleman pero habla y entiende el castellano ., usa un atmega8 ., y programa en bascomAVR​
Ahora como te dije antes ., NO da direccion de envio ( muy importante cuando tenes equipos distintos )​
Su proyecto lo publico por aca (otro foro) http://www.todopic.com.ar/foros/index.php?topic=37357.0
Ahora como te dije antes ., NO da direccion de envio ( muy importante cuando tenes equipos distintos )​
Aca te pongo el video del proyecto par que veas que incluso le agrego un LCD​
 
Última edición:
Hola locodelafonola.

El proyecto está genial, y además con el display.
Viendo el vídeo y los enlaces que has mandado, en ellos hay otro proyecto en el que ha hecho un tester de DMX.
Al verlo me ha hecho gracia porque lee el valor del potenciómetro y lo muestra por pantalla, como me sucede a mi con un programa en el que anduve trasteando.
No sé cómo lo comunica él, pero yo utilizo el protocolo I2C para poder visualizarlo (dejo el programa por si a alguien le sirve; tiene más librerías de las necesarias porque así puedo aprovechar varios lcd que tengo sin modificar el programa.

A medida que vaya consiguiendo el proyecto, lo limpiaré.
PHP:
#include <Wire.h>  
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal.h>

LiquidCrystal_I2C lcd(0x3E, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
int valanal = 0;
int valpot = 0;

void setup()   
{
  Serial.begin(9600);  

  lcd.begin(16, 2);         

// ------- Quick 3 blinks of backlight  -------------
  for(int i = 0; i< 3; i++)
  {
    lcd.backlight();
    delay(250);
    lcd.noBacklight();
    delay(250);
  }
  lcd.backlight(); // finish with backlight on  
    
}


void loop()  
{
  valpot = analogRead(A0); 
  valanal = map(valpot, 0, 1023, 0, 255);  /7 limita los valores del potenciometro a 0 y 255
  lcd.setCursor(3, 0); 
  lcd.print("Potenciometre!");
  delay(100);
  lcd.setCursor(5, 1);
    lcd.print("     "); 
  lcd.setCursor(6, 1);
    lcd.print(valanal); 
  delay(50);    

}
Viendo enlaces que has mandado, he encontrado en todopic un proyecto muy similar al que tu me has mandado que utiliza el ATtiny2313V (por no decir que es el mismo) y que creo que tiene el mismo problema que el planteado en el tuyo, y es el de las direcciones.
No pongo la dirección porque entonces no puedo mandar el mensaje, pero si que pongo el esquema que he sacado del proyecto.
Se llama 4-Canales PWM-RGBY- DMX512 con BascomAVR, y con el google sale en el primer enlace.

De todas formas, a ver si con todo este material y la orientación del tutor, puedo llegar a buen puerto.

Gracias y saludos,

Joan.
 

Adjuntos

  • 4ch_dmx512 Led controlller.JPG
    4ch_dmx512 Led controlller.JPG
    95.1 KB · Visitas: 20
Última edición por un moderador:
Hola
Hola locodelafonola.

El proyecto está genial, y además con el display.
Viendo el vídeo y los enlaces que has mandado, en ellos hay otro proyecto en el que ha hecho un tester de DMX.
Al verlo me ha hecho gracia porque lee el valor del potenciómetro y lo muestra por pantalla, como me sucede a mi con un programa en el que anduve trasteando.
No sé cómo lo comunica él, pero yo utilizo el protocolo I2C para poder visualizarlo (dejo el programa por si a alguien le sirve; tiene más librerías de las necesarias porque así puedo aprovechar varios lcd que tengo sin modificar el programa.

A medida que vaya consiguiendo el proyecto, lo limpiaré.
PHP:
#include <Wire.h> 
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal.h>

LiquidCrystal_I2C lcd(0x3E, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
int valanal = 0;
int valpot = 0;

void setup()  
{
  Serial.begin(9600); 

  lcd.begin(16, 2);        

// ------- Quick 3 blinks of backlight  -------------
  for(int i = 0; i< 3; i++)
  {
    lcd.backlight();
    delay(250);
    lcd.noBacklight();
    delay(250);
  }
  lcd.backlight(); // finish with backlight on 
   
}


void loop() 
{
  valpot = analogRead(A0);
  valanal = map(valpot, 0, 1023, 0, 255);  /7 limita los valores del potenciometro a 0 y 255
  lcd.setCursor(3, 0);
  lcd.print("Potenciometre!");
  delay(100);
  lcd.setCursor(5, 1);
    lcd.print("     ");
  lcd.setCursor(6, 1);
    lcd.print(valanal);
  delay(50);   

}
Viendo enlaces que has mandado, he encontrado en todopic un proyecto muy similar al que tu me has mandado que utiliza el ATtiny2313V (por no decir que es el mismo) y que creo que tiene el mismo problema que el planteado en el tuyo, y es el de las direcciones.
No pongo la dirección porque entonces no puedo mandar el mensaje, pero si que pongo el esquema que he sacado del proyecto.
Se llama 4-Canales PWM-RGBY- DMX512 con BascomAVR, y con el google sale en el primer enlace.

De todas formas, a ver si con todo este material y la orientación del tutor, puedo llegar a buen puerto.

Gracias y saludos,

Joan.
A verrrrrrrr ., vamos por partes " dijo jack., el descuartizador " jajajajajajajajajajaaja
Primero como te dije antes., envia a una sola direccion (por logica y defecto es la DMXADRESS 1)
Ahora ., lo del DMXtester ., es un receptor Como si fuera un efecto de luz ., pero en vez de manejar led y motores ., convierte la señal ., en lecturas reprecentadas por un LCD
Y eso se usa para testear ., justamente los cables y conecciones a los equipos
La señal puede venir de una consola manual o virtual (computadora)
En cuanto al proyecto con el ATTny 2313., eso es un receptor ., no una consola trasmisora ., y maneja cuatro canes de led ., nada mas
Tu proyecto es TRASMISOR ., NO RECEPTOR ., si es por el RDM ., que te comente antes ., es otra cosa (muchisimo mas complicada
Si bien es posible (con el comocimiento logico del caso) ., se pudiera armar ., pero hasta ahora hay varios puntos muy flojos (de como seria)
Los mas importantes son ., la asignacion de la direccion de envio DMXADRESS ., al poder asignarla no hace falta mandar 24 canales como minimo

La otra es DMXCHANNEL ., ya al poder definir la direccion de envio ., se puede definir la maxima cantidad de canales de esa direccion

Por ejemplo : una lampara led par ., por lo general son de 6 canales ., si no pudireramos asignar los canales estariamos enviando 24 canales a esa direccion ., 6 con valores utiles y 18 con valor cero o inutil

Ahora eso no seria poroblema ., si no fuera por el simple hecho ., de ocupar canales inutilmente ., por una simple cuenta ., en ese lugar donde entraria uno solo efecto ., en realidad al poder asignar el numero de canales ., entrarian 4 efectos ., numero triplicado con esa funcion

Ni hablar ., de como se limita ., el uso de un solo universo (512 canales) ., eso son detalles muy importantes que no se toman en cuenta

La otra funcion importantisima ., es el manejo de todos esos valores ., mas la lectura de los valores de los potenciometros ., como valores instantaneos esta bien ., porque arias la funcion de "SET" o "CUE" de las esenas

El valor o funcion anterior esta bien porque ., eso se ejecuta en la ram

Pero si pretendes ., manejar mas de un equipo ., alli habria que pensar otro modo de "almacenamiento" y control ., como podria ser la EEPROM

El atmega2560 ., tiene una linda EEPROM ., pero asi a groso modo ., no te sabria decir ., que espacio usaria cada "banco de memoria ., ni que cantidad de "bancos " se podrian guardar

Vos pretendias al principio del mensaje ., manejar unas 25 cabezas roboticas ., esas mas o menos ., manejan entre 12 o 15 canales cada una

Pero si et atmega queda "chico" ., se porian manejar mas por I2C ( que ya lo tendrias implementado por el LCD Y la cosa seria ., una EEPROM externa para cada banco ., que por I2C pueden ser muchas

Si bien en la teoria o planteo todo es factible ., en la practica te va a ser muy dificil ., crear un algoritmo para el manejo de estas multifunciones

Por que serian "lectura "., "escritura" ., y "lectura de ejecucion"., en otras palabras leer el "SET CUE" ., guardar "CUE REC" ., y ejecutar "CUE PLAY"Si entendes todo esto ., !!!!! bien ¡¡¡¡ ., sino ..... nos reimos un poco jajajajajaajajajajaja

Espero haberte aclarado las cosas un poco mas ., si no fue asi ., bueno vale el intento
 
Hola locodelafonola!!!:
Te agradezco el esfuerzo que estas invirtiendo en todas estas explicaciones.

Cada vez que envías un mensaje tengo que coger el cuaderno de apuntes para anotar aquellos conceptos nuevos que incorporas.

La parte de las direcciones la tengo en cuenta porque creo que es el primer kit de la cuestión. Antes de dar con este foro y en concreto con usted, otro gran aficionado y conocedor del tema DMX ya me lo introdujo, al igual que me enseñó el analizador lógico.

Creo que el tema de las consolas DMX comerciales más simples que hay (que yo conozco a través de vídeos de youtube) como por ejemplo la que muestra Jooshua Dámazo en el vídeo de youtube fU0d4IStcWw, es que tiene preasignadas direcciones en cada *escáner (la 1, la 17, la 33... hasta completar las 192 que permite manejar la consola) y esto desaprovecha aquellas direcciones que el receptor no usa (a no ser que se introduzca una dirección al receptor que quede vacía en el mismo escáner para poder manejarlo).

[*Yo llamo escáner -según la definición que se da a estas consolas- a aquellos pulsadores que prefijan la dirección en el manejo de los faders.]

El proyecto que tengo en mente y dentro de la dificultad sería el más sencillo (creo); esto es la controladora de un solo universo en la que las 512 direcciones (para el caso que me ocupa serian 500) se dividirían en 25 escáners a razón de 20 direcciones por éscaner (25*20=500) -por eso los 10 faders incluyendo un pulsador de Page. Tenía un problema con el tema de los escáners para poder introducir la información en el arduino Mega, ya que tiene limitada las entradas a 30. Pense en que se podrian multiplexar las entradas para ocupar únicamente 5 entradas, a la que luego me surgió la duda de que de esta forma solo podría tener un escáner activado a la vez.

Aunque no he conversado mucho con mi tutor porque todavía estoy en el comienzo del proyecto, me dijo que esto no era problema porque se podrían guardar o recordar estas direcciones introducidas -no he detallado este tema, de momento- de forma que se podrían activar más de un escáner a la vez.
En este proyecto no habrá realimnentación (RDM) por parte de los receptores, ya que como tu indicas complicaría aún más las cosas.

Si esto es posible, puedo recurrir a la disposición que tienen estas consolas, estableciendo 32 escáners con 8 faders y el pulsador de Page, abarcando las 512 direcciones con pocas entradas del arduino Mega (esto introduciría un poco más de electrónica en mi proyecto).

No sé si he logrado entender que con tu comentario se puden programar "al uso, o en cada uso" los escáners para así ajustar mejor las direcciones, respecto del comentario "Ahora eso no seria problema ., si no fuera por el simple hecho ., de ocupar canales inutilmente ., por una simple cuenta ., en ese lugar donde entraria uno solo efecto ., en realidad al poder asignar el numero de canales ., entrarian 4 efectos ., numero triplicado con esa funcion. Ni hablar ., de como se limita ., el uso de un solo universo (512 canales) ., eso son detalles muy importantes que no se toman en cuenta".

Respecto a la otra función importantísima no llego a entender del todo; este lunes he vuelto a quedar con el tutor para poner en conocimiento estas ideas i discutirlas, y ver cual es el enfoque o
que aspectos debo considerar para realizar este proyecto.

Este finde lo tengo complicado así que intentaré seguir las conversaciones a partir de martes o miércoles.

Saludos,

Joan
 
Última edición:
hola JoanG y locodelafonola me prodrian explicar bien cual es el objetivo de este proyecto? me parece que variar la intensidad de las luces asì parece fàcil pero en los mensajes que se dan esta hecha una ensalada para animarme a desarrolarlo con pic(lo cual manejo) y por otros driver de potencia o cual esten usando
asi pueda darles una mano a este dolor de cabeza
 
Hola
Hola locodelafonola!!!:
Te agradezco el esfuerzo que estas invirtiendo en todas estas explicaciones.

Cada vez que envías un mensaje tengo que coger el cuaderno de apuntes para anotar aquellos conceptos nuevos que incorporas.

La parte de las direcciones la tengo en cuenta porque creo que es el primer kit de la cuestión. Antes de dar con este foro y en concreto con usted, otro gran aficionado y conocedor del tema DMX ya me lo introdujo, al igual que me enseñó el analizador lógico.

Creo que el tema de las consolas DMX comerciales más simples que hay (que yo conozco a través de vídeos de youtube) como por ejemplo la que muestra Jooshua Dámazo en el vídeo de youtube fU0d4IStcWw, es que tiene preasignadas direcciones en cada *escáner (la 1, la 17, la 33... hasta completar las 192 que permite manejar la consola) y esto desaprovecha aquellas direcciones que el receptor no usa (a no ser que se introduzca una dirección al receptor que quede vacía en el mismo escáner para poder manejarlo).

[*Yo llamo escáner -según la definición que se da a estas consolas- a aquellos pulsadores que prefijan la dirección en el manejo de los faders.]
Bueno como se diria conmunmente "pasame el cuchillo jack ., que despedazamos esta historia" jajajjajjajajajajajaajjajaja

Lo primero ., yo te diria ., que para la direccion y la asignacion de canales ., pensaras en "asignarla" o "escribirlas" por soft
Claro me vas a preguntar ¿¿¿¿¿ yyyyyy como hago eso ???? ., aca te muestro ., donde tendria que ir en el codigo que sacaste la idea
PHP:
  ArduinoDmx0.set_tx_address(1);  // poner aqui la direccion de inicio de DMX // put here DMX start address
                                      
  ArduinoDmx0.set_tx_channels(100);   // poner aqui el numero de canales a transmitir  // put here the number of DMX channels to transmmit
                                      
  ArduinoDmx0.init_tx(DMX512);        // iniciar transmision universo 0, modo estandar DMX512 // starts universe 0 as TX, standard mode DMX512
Paso a explicarte que hace cada definicion de estas ., con : ArduinoDmx0.set_tx_address(1)
Donde ArduinoDmx0 ., significa que esta en el universo cero de 512 canales ., o sea que lo identifica de los cuatro que hay
Lo que sigue es lo que te interesa y es : set_tx_address(1)
El set_tx_ ., alli le esta diciendo a la USART que trasmita

Y al lugar o direccion que tiene que enviarla lo asigna asi :address(1)

ACA la cosa es simple solo hay que cambiar ese : (1) ., o sea que puede ser hasta la direccion 511 (y seguiria un canal nada mas ., porque no hay mas universo )

Se definen del 1 al 512 ., porque la direccion "0 "., no existe (NO los canales ., que si existe la Dmx Channel 0)
Ahora de la misma forma que lo anterior ., pasa con esto tambien

Y sucede con : ArduinoDmx0.set_tx_channels(100)

Como veras ., con esa definicion suceden varisa cosa ., la primera es que no tiene mucho sentido ., que definas ., que puede enviar 100 canales
Por un lado ., podes manejar 6 potenciometros solamente ., y por el otro si el equipo conectado ., a la direccion uno tiene 6 canales ., solo acepta los 6 y tiene que rechazar los otros " 94 " que le asignan
Por otro lado ., le pedis a la USART ., que si o si ., te asigne 100 canales para enviar ., o sea esos "94" restantes tendran un valor de "0" ., pero se toma el trabajo de mandarlos igual
Porque sucede tambien ., que el equipo receptor las va a rechazar ., y con esto tambien ., se pierde tiempo de envio de la "trama siguiente"
Estas dos funciones son muy ., pero muy importantes ., porque al estar mal configuradas ., la consecuencia es ., que la trasmicion se vuelve lenta ., de 250Kb ., puede llegar a 90Kb ( te digo por que lo veo seguido)
Si queres guiarte ., de como hacer ., "el menu" ., fijate en el proyecto del "cargador de direcciones" ., alli podes ver ., de manera clara como Cosme ., escribe y lee en la EEPROM ., el mumero de la direccion ., y que por supuesto no se borra si quito la energia
El proyecto que tengo en mente y dentro de la dificultad sería el más sencillo (creo); esto es la controladora de un solo universo en la que las 512 direcciones (para el caso que me ocupa serian 500) se dividirían en 25 escáners a razón de 20 direcciones por éscaner (25*20=500) -por eso los 10 faders incluyendo un pulsador de Page. Tenía un problema con el tema de los escáners para poder introducir la información en el arduino Mega, ya que tiene limitada las entradas a 30. Pense en que se podrian multiplexar las entradas para ocupar únicamente 5 entradas, a la que luego me surgió la duda de que de esta forma solo podría tener un escáner activado a la vez.
LO del universo ., esta bien., (podria haber mas universos ., perooooooo ) ¿¿¿¿ que equipo comercial esta preparado para leerte el canal o direccion 530 por ejemplo ?????
Hay consolas virtuales ., que manejan dos universos (1024 canales) ., pero lo hacen por dos USART ., de 512 canales cada una La verdad que ., no se si esos otros universos funcinaron (me juego a que no)., porque el tiempo de el protocolo ., es uno solo : 250kbaud, 8N2 (velocidad de USART para protocolo DMX)
Si te fijas en el 2560 ., te daras cuenta que tiene mas de una USART ., y pueden trabajar de forma independiente (lindo detalle no ????)
Como te explique mas arriba ., los canales se tiene que asignar (igual que la direccion) la "paginacion" la podes usar en la RAM ., pero no en la EEPROM Lo otro ., creo que estas confundido en el planteo ., lo que se adapta ....!!! es la consola al equipo ¡¡¡ ., NO al revez
A menos que esos 20 equipos sean iguales en marca y modelo ., no van a tener la misma cantidad de canales ( y los canales tendran distinta configuracion )

Entonces pasan dos cosas ., una es que ya te cambia la direcion del equipo ., y la otra ., es que un canal de uno te maneja el "STROBO" ., y en el canal del otro te maneja el PAM o el TILT
Imaginate si al motor le mandas la secuencia del STROBO ., jajajajjajajajajajajajajaj bailaria de lo lindo
Asi como lo planteas ., en la practica y ralidad de uso ., no serviria (pasa con muchisimas consolas comerciales) .,de 192 canales terminan pudiendo manejar como mucho 70 canales
Si esto es posible, puedo recurrir a la disposición que tienen estas consolas, estableciendo 32 escáners con 8 faders y el pulsador de Page, abarcando las 512 direcciones con pocas entradas del arduino Mega (esto introduciría un poco más de electrónica en mi proyecto).

No sé si he logrado entender que con tu comentario se puden programar "al uso, o en cada uso" los escáners para así ajustar mejor las direcciones, respecto del comentario "Ahora eso no seria problema ., si no fuera por el simple hecho ., de ocupar canales inutilmente ., por una simple cuenta ., en ese lugar donde entraria uno solo efecto ., en realidad al poder asignar el numero de canales ., entrarian 4 efectos ., numero triplicado con esa funcion. Ni hablar ., de como se limita ., el uso de un solo universo (512 canales) ., eso son detalles muy importantes que no se toman en cuenta".

Respecto a la otra función importantísima no llego a entender del todo; este lunes he vuelto a quedar con el tutor para poner en conocimiento estas ideas i discutirlas, y ver cual es el enfoque o
que aspectos debo considerar para realizar este proyecto.

Este finde lo tengo complicado así que intentaré seguir las conversaciones a partir de martes o miércoles.

Saludos,

Joan
Bueno esta parte ., no sabria explicartela bien ., el multiplexado no sirve ., porque para trasmitir tendias que desmultiplexsar ., y alli tendrias problemas de los valores
Vos tenes un arduino mega con 100 pin/port ., ponele que de esos te queden para uso efectivo 89 pin/portAlli tenes que ver cuantos PIN/PORT ., te quedan con entrada ADC ., y usarlos todos para potenciometros ., si hay mas de 20 mejor ., lo ideal serian 30 potes si pensas un poco ., y si fueran 30 potes o PIN/PORT usadosa te quedan 59 PIN/PORT libres ., para botones ., led y llaves (u otras funciones que se nesesitan )
Yo creo que todavia ., no tenes muy claro como funcionan los receptores .,(que tendrias que empezar por eso) ., y despues entender ., que lo que se puede programar es la consola ., no el efecto
Aca te subo el manual de un efecto comercial que puede ser confugurado con dos canales menos ., pero que tiene 27 canales .,(configura PAM y TILT con un pote ., y lo mismo pero con 32b (mas resolucion en los motores) Con eso te digo que te fijes en las funciones ., y como harias para manejarlo con 8 potes ., porque tendras que manejarlo para grabar la esenas
Con eso te demuestro que muchisimas consolas no podrian manejar este efecto ., y eso que es un simple SCANNER ., imaginate un "robot" ., que es mucho mas complejo que este
 

Adjuntos

  • elation_sniper_PRO_user_manual_070616 (1).pdf
    3.2 MB · Visitas: 18
Hola locodelafonola:

Del tema de las direcciones es lo que pensaba; me parecía un poco estraño programarlas desde la mesa de luces. Entonces entendí bien.

En el tema de la programación por soft, sacado del ejemplo de los 4 universos de Toni (esto también lo tenia controlado).

Con el tema del cargador de direcciones, lo consultaré con el tutor porque no entiendo todo el programa (no se que lenguaje utiliza; supongo que el tutor me orientará).

Del tema de los receptores, no se si dije lo que compré (en el mensaje posterior lo comentaré y así le explicaré a wasauski que es lo que llevo entre manos -y los que estáis ayudando con ideas-), pero especifico que es lo que hace el foco, porque la cristal ball mezcla varios efectos en cada canal.
He visto el Elantion Sniper Pro y es muchísimo más completo que el que yo tengo... De todas formas y simplificando vendría a ser lo mismo:

El foco, que compré en aliexpress (sólo puedo poner parte de la dirección porque no puedo mandar enlaces por el foro: buscar en google, en imágenes lo siguiente: Etapa-proyector-12-l-mpara-par-led-rgbw-color-mixing-8ch-luz-partido-de-la-etapa (de la marca light me) tiene 7 canales (el 8 que indica no sé lo que hace) y son:

Canal 1: RGBW Master Light dimmer. Pasa de apagado a todos los colores al máximo.
Canal 2, 3, 4 y 5: lo mismo que en el canal 1 pero con los colores R(2), G(3), B(4), W(5)
Canal 6: Se elige funcion: de valor 0-50-->Strobo, 51-100 --> cambio de colores a saltos, 101-150--> Cambio gradual, 151-200--> Cambio con pulsos, de 201-255--> cambio con el sonido
Canal 7:Velocidad.

Del tema del multiplexado -demultiplexado de las entradas lo comentaré con el tutor a ver si la idea que tengo de, en función de las 5 entradas que tenga se pueda seleccionar, todo esto programado.
No sé si me explico; la idea sería... (por ejemplo)
si pin 9=0, pin 10=0, pin 11=1, pin 12=0, pin 13=0, entonces la dirección seria de la 65 a la 81 (1r escáner dir 1-16, 2a escáner dir 17-32, 3a escáner dir 33-48, 4o escáner dir 49-64, 5o escáner dir 65-81,...). No sé si será factible. Para el lunes es una de las cuestiones que quiero puntualizar.


Saludos,

Joan

[Edita tus comentarios en lugar de crear nuevos]

Hola wasausky:
Partiendo de la explicación de Jooshua Dámazo en el vídeo de youtube U0d4IStcWw, sobre qué es el DMX y cómo funciona, pretendo realizar una controladora DMX para un universo con 512 canales, y dentro de mis posibilidades y conocimientos me gustaría que esta controladora tuviese la parte de escáners (32 con una asignación de 16 canales por escáner (serían un total de 512 direcciones), con 8 faders y un pulsador de Page (para asignar a los mismos faders una segunda dirección) y que tuviese un display para reflejar los valores de los potenciómetros. Además, si la cosa fuese sencilla se podrían acoplar escenas, botón de sonido rítmico, grabación… aunque esto ya supondría una fantasía para los conocimientos que tengo.

¿Y a qué viene todo esto?

Bueno, este proyecto lo decido hacer para completar mi formación en electrónica. Este año he cursado segundo curso (y último) de un ciclo de Mantenimiento Electrónico. Para finalizar el ciclo se deben hacer prácticas en empresa y a la vez realizar un proyecto sobre aquellos contenidos que hayamos trabajado durante los dos años. Desafortunadamente para mis conocimientos, el año pasado no llegamos a ver microcontroladores (es más, lo último que vimos de digital fue el 555 y registros de desplazamiento), imaginaos las carencias.

En este año estuvimos viendo el arduino y nos introdujimos en la programación en C a través del propio software del arduino que era algo que nos resultaba asequible.

Así que el proyecto que pretendo consiste en montar una controladora DMX utilizando el Arduino Mega, y este en concreto porque tiene 30 entradas/salidas digitales, 15 PWM y 15 entradas analógicas (en clase utilizamos el Uno). Con esto me obligo a entender un poco más el ATMega (sólo un poco porque como ya va montado en la tarjeta, su uso se simplifica bastante) e intento “estirar mis conocimientos” y evitar que se oxiden los que tengo –estos foros me están enseñando que van muy bien para conseguirlo; de hecho, prácticamente no he empezado y locodelafonola ya me ha encaminado en gran parte del proyecto!- también porque dispongo de display que funciona por protocolo I2C –y que estuvimos viendo en clase programando una EEPROM-

A esto hay que puntualizar que en cuanto a programación sólo conozco C y estaría sobre un 15-20% de conocimiento de este lenguaje (con el arduino esta parte se simplifica, aunque también se limita).

Me arriesgué con este proyecto porque vi la página de Toni Merino, deskontrol, donde muestra un proyecto sobre arduino 4 universos DMX y además ya dispone las librerías, con lo cual pensé que la parte más complicada ya estaba hecha y que era la cuestión de las librerías.

Poco a poco la cosa fue torciéndose, ya que locodelafonolo me planteó una serie de aspectos que no había apreciado, por desconocimiento, y que hacían poco viable este proyecto según lo estaba planteando.

Por suerte, tengo un tutor en el instituto que conoce lenguajes de programación, y dentro de las posibilidades intentaremos dar solución a este proyecto.

Así que de momento estoy en periodo de recogida de información para contrastarla y ver qué posibilidades hay.

Saludos
 
Última edición por un moderador:
Hola
Hola locodelafonola:

Del tema de las direcciones es lo que pensaba; me parecía un poco estraño programarlas desde la mesa de luces. Entonces entendí bien.

En el tema de la programación por soft, sacado del ejemplo de los 4 universos de Toni (esto también lo tenia controlado).

Con el tema del cargador de direcciones, lo consultaré con el tutor porque no entiendo todo el programa (no se que lenguaje utiliza; supongo que el tutor me orientará).

Del tema de los receptores, no se si dije lo que compré (en el mensaje posterior lo comentaré y así le explicaré a wasauski que es lo que llevo entre manos -y los que estáis ayudando con ideas-), pero especifico que es lo que hace el foco, porque la cristal ball mezcla varios efectos en cada canal.
He visto el Elantion Sniper Pro y es muchísimo más completo que el que yo tengo... De todas formas y simplificando vendría a ser lo mismo:

El foco, que compré en aliexpress (sólo puedo poner parte de la dirección porque no puedo mandar enlaces por el foro: buscar en google, en imágenes lo siguiente: Etapa-proyector-12-l-mpara-par-led-rgbw-color-mixing-8ch-luz-partido-de-la-etapa (de la marca light me) tiene 7 canales (el 8 que indica no sé lo que hace) y son:

Canal 1: RGBW Master Light dimmer. Pasa de apagado a todos los colores al máximo.
Canal 2, 3, 4 y 5: lo mismo que en el canal 1 pero con los colores R(2), G(3), B(4), W(5)
Canal 6: Se elige funcion: de valor 0-50-->Strobo, 51-100 --> cambio de colores a saltos, 101-150--> Cambio gradual, 151-200--> Cambio con pulsos, de 201-255--> cambio con el sonido
Canal 7:Velocidad.

Del tema del multiplexado -demultiplexado de las entradas lo comentaré con el tutor a ver si la idea que tengo de, en función de las 5 entradas que tenga se pueda seleccionar, todo esto programado.
No sé si me explico; la idea sería... (por ejemplo)
si pin 9=0, pin 10=0, pin 11=1, pin 12=0, pin 13=0, entonces la dirección seria de la 65 a la 81 (1r escáner dir 1-16, 2a escáner dir 17-32, 3a escáner dir 33-48, 4o escáner dir 49-64, 5o escáner dir 65-81,...). No sé si será factible. Para el lunes es una de las cuestiones que quiero puntualizar.


Saludos,

Joan
Bueno veo que todavia andas confundido., siiiiiii olvidate de esa librerias ., los de los demas universos (menos el universo 0 ) ., no creo que funcionen​
Hay algo que creo que todavia no te has dado cuenta​
Si sobre una DIRECCION ., ejemplo : DMXADRESS 23 ., tenes 27 canales ., te ocuparia hasta la direccion 50 ., o sea el equipo siguiente estaria en DMXADRESS 51​
Ahora eso si lo has entendido ., lo que no has entendido ., es que los 27 canales no se pueden separar ., porque van ., uno atras del otro ., en la "trama de envio"​
ahora mi pregunta ¿¿¿¿ ccomo vas hacer par enviar 27 canales (o lectura de potenciometros ) todos juntos (uno tras otro ) si solo pensas en 8 potenciometros )​
La "trama" ., sobre esa direccion no se puede partir​
Porque lo que sucederia ., es que si mandas 8 ., si te recibe esos 8 ., pero los siguientes ya estarian en la direccion DMXADRES 51​
A menos que busques la manera de "juntar o sumar la lectura de esos 8 potes hasta que logres la cantidad de 27 canales de esa direccion​
Creo que eso todavia no lo has entendido ., los receptores no los podes reconfigurar desde la consola ., ya esta definido y programado la funcion de ese canal o canales​
Lo otro ., y no es que la iniciativa este mal ., es como con un efecto de 8 canales ., pensas darte idea de como manejar un "robot"​
En el ., tenes muchisimos mas canales ., ademas de las combinaciones complejas ., de los demas canales o entre canales ( color ., pismas ., rotacion de gobos ., cantidad y tipos de gobos ETC)​
Sigo sin entender eso ., de como lo tenes pensado hacer par mandar los 27 canales nesesarios​
En cuanto al lenguaje de programacion es C (para avr) ., es el mismo lenguaje que usas en el arduino​
Yo te diria ., que te bajas esa librerias ( exelente trabajo de cosmefulanito04) y se las muestres al tutor ., te va a guiar muy bien en como manejar el "menu" ., para cambiar la direccion y cantidad de canales​
Eso esta Hecho ., en base al protocolo profecional ., incluso en el video ., muestro como el equipo se comporta igual que los comerciales ., al intentar forzar "errores" de direccionamiento​
De todas maneras vas atener que tomarte el trabajo de pasarlas al arduino cosa que es muy facil) ., porque usan el mismo lenguaje C​
Yo creo que tu gran confucion esta ., en que cada direccion ., vos le podes asignar la cantidad de canales definidos por tu criterio (16 u 8 o los que pensas vos )​
Pero eso ya esta fijado y definido en el equipo receptor !!!! y no se puede cambiar ¡¡¡¡ ., la cantidad de canales tiene que ser programada y definida individulmente ., y no puede tener limities​
Si el equipo se maneja con 27 canales ., tenes que guardar los valores de los 27 juntos ., en el envio de la trama DMX ., van todos juntos ., seguidos y uno detras del otro (no te olvides dela separacion del BREAK ., MAB y SC ) entre canales​
Aca te pongo una imagen de como se comporta internamente un efecto ., en este caso se representan unos led ., o sea en la direccion DMXADRESS (1) ., tendriamos 6 canales DMXCHANNEL(6) ., que serian 6 led de colores diferentes​
Lo valores que ves ., 55 ., 144 etc ., son los valores de los potenciometros ., que en este caso harian dimerizado ( muy dificil de representar en una imagen .GIF)​
Tambien te pongo los patrones de tiempo que maneja el protocolo ., de eso ya habiamos hablado ., pero esta tabla ejemplifica lo que te decia de la longitud del cable​
y si te fijas abajo de la tabla ., veras donde se aloja la direccion ., y seguidamente los datos de 8bit ., de los canales (canal 1 mostrado)​
Aca te muestro ., de manera grafica como pasa la señal por los equipos ., que pueden ser o no de 6 canales como el anterior ejemplo ., ., como que podrian ser todos de 27 canales ( en la imagen ., REC es la abreviatura de receptor., no confundirlo con grabacion )​
Con esto te digo que estas encarando mal la logica de diseño ., tenes que adaptar la consola a los equipos ., porque los equipos no se pueden adaptar !!! A nada ¡¡¡​
Aca te subo un manual de un robot muy viejito ., el MP300SPOT ., que se maneja con 14 canales en simultaneo ., los robot mas nuevos son mas complejos que este​
PD : si podes poner link externos ., ya tenes mas de 5 mensajes ., en el foro
 

Adjuntos

  • mp300.pdf
    2.4 MB · Visitas: 18
Arriba