7

DCC++ Accesorios y desvíos en español

Arduino Uno con Motor Shield para central DCC++

Una de las características de la DCC++ es que es capaz de almacenar en la memoria diferentes dispositivos añadidos a la central.

Los dispositivos añadidos en la central se distinguen en tres tipos que trataremos de manera independiente, en esta entrada del blog intentare explicar el uso de accesorios y desvíos, pero también disponemos de sensores y salidas.

Accesorios y desvíos, ¿no son lo mismo?

Pues en esencia si, un desvío es un accesorio pero DCC++ tiene dos maneras de clasificarlos:

Como accesorio de tal manera que solo mandaremos la dirección del accesorio y si lo queremos encendido o apagado, pero NO recibiremos ninguna respuesta por parte de la central.

Por el contrario un desvíos es un accesorio que esta almacenado en la memoria EEPROM de la central y que al ser llamado devolverá un dato de confirmación. Esta confirmación la da central, no el decoder.

¿Que datos necesito saber para configurar un accesorio o un desvío?

Para configurar cualquiera de los dos necesitamos 3 datos: La dirección, la subdirección y el estado

  • DIRECCIÓN: Dirección primaria del decodificador  (0-511).
  • SUBDIRECCIÓN: La subdirección del decodificador  (0-3).
  • ESTADO: (0) (Desactivado, Apagado) o (1) (Activado, Encendido).

Accesorios:

Pueden ser cualquier dispositivo conectado a un decodificador, servos, luces, relés, actuadores. Como he comentado más arriba es un comando sencillo que no devuelve ninguna información, el comando es el siguiente:

< a DIRECCIÓN SUBDIRECCIÓN ESTADO >

Una vez escribamos esto en el terminal el dispositivo asociado a esa dirección/subdirección se encenderá o apagará según el estado que le hayamos dado. Fin, no hace nada más. Si hay un problema en la transferencia de datos la central no nos avisará.

NOTA: De manera particular es el método que utilizo ahora mismo ya que siempre lo utilizo con DCCpp Cab y este aun no esta preparado para tratar con la memoria interna de la central, aunque es algo en lo que estoy trabajando.

Desvíos:

Ahora bien, si lo que queremos es tener información 100% real de los datos que maneja la central a la hora de accionar un desvío, entonces tenemos que definir un desvío y almacenarlo en la memoria EEPROM… Suena difícil? Pues es realmente sencillo. Como con los accesorios, también necesitamos saber la dirección y subdirección al que este asociado el desvío. La diferencia esta en que estos datos los usaremos para asignar una ID al accesorio (desvío).

Definiendo un desvío:

A partir de aquí haremos uso del comando <T> y sus variantes y el comando <E> para almacenar el desvío definido.

Usaremos  < T ID DIRECCIÓN SUBDIRECCIÓN > para configurar un desvío.

Crear una nueva ID de desvío con DIRECCIÓN y SUBDIRECCIÓN si la dirección ya existe, esta se actualizara (sobrescribiendo) con la nueva DIRECCIÓN y SUBDIRECCIÓN.

Devuelve: “< 0 >” si es correcto y “< X >” si es incorrecto (ejemplo, fuera de memoria).

De esta manera para almacenar por ejemplo un desvío que esta en el decodificador con la dirección 1 y subdirección 0 de tal manera que sera la primera ID de la lista y lo almacenaremos en la memoria:

Desvío con ID 1:

<T 1 1 0> (DCC++ devuelve <0>).

<E> (DCC++ devuelve <0>).

……

…..

Desvío con ID 14:

<T 14 7 2> (DCC++ devuelve <0>).

<E> (DCC++ devuelve <0>).

No es necesario seguir un orden aunque si es recomendable para luego una mejor organización.

Una vez que todos los desvíos se hayan definido correctamente, lo almacenamos en la memoria con el comando <E>Este ultimo paso es imprescindible, si no cuando apaguemos y volvamos a encender la central esos datos habrán desaparecido.

Uso de un desvío definido:

Seguimos con el comando <T> ahora ya viene la parte fácil y es que una vez que tenemos el desvío almacenado solo necesitamos saber la ID del desvío para cerrar o abrir el mismo.

Siguiendo con los ejemplos anteriores para accionar el desvío con la ID 1:

<T 1 1> o <T 1 0> DCC++ debería devolver <H 1 1> o <H 1 0>

Para la ID 14:

<T 14 1> o <T 14 0> DCC++ debería devolver <H 14 1> o <H 14 0>

En ambos casos si el desvío no esta definido nos devolverá <X>.

Listando desvíos definidos:

El comando para leer la memoria y que muestre todos los desvíos definidos es el <H>. Este nos dará información sobre las direcciones y subdirecciones asociadas a un ID.

Escribimos el comando <T> y DCC++ nos responde con la siguiente estructura:

<H 1 1 0><H 14 7 2>

Eliminando desvíos:

DCC++ no tiene un comando para eliminar un desvío, la única manera de hacer eso es sobrescribir la ID o eliminar TODO con el comando <e>. Lo que no es nada recomendable…

Pues si no me dejo nada.. creo que esto es lo mas importante a la hora de utilizar desvíos con la central DCC++. Espero que os haya gustado y si tenéis alguna duda podéis dejarla en los comentarios y tratare de responderla lo antes que me sea posible, Saludos!!!

Visitar DCC++ Comandos y su estructura

Visitar DCC++ Sensores

(Visitado 50 veces, 1 visitas hoy)

7 comentarios

    • La pantalla que uso en los vídeos? pues es algo que tengo a medias, y por el momento solo me ha funcionado en el Mega, no se si funcionará con UNO, te puedo pasar el programa por privado si quieres, es lo siguiente de la lista, los decos, el manual con los desvíos y sensores (con sus vídeos), la actualización del DCCpp cab, y ya para hacer los vídeos con este mismo programa y la central con la pantalla. Espero tenerlo todo antes de fin de mes… espero…

  1. Hola
    muy bien explicado ,yo que soy novato de novato.com lo he entendido todo perfectamente.
    muchas gracias y sigue por ese camino que a mi me va perfecto.

    • Me alegro Jose!!! y gracias por los animos!!! Para los sensores estoy preparando un vídeo también, lo que no se si sera para el fin de semana o para la semana que viene. Ahora estoy liado con el DCCpp cab a ver si para el fin de semana tengo lista la actualización y ya me lío con el vídeo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *