27-04-2015, 07:40
Hola Carles,
Tengo una duda, supongo que es por falta de conocimiento del protocolo DCC ya que yo siempre conecto mis arduinos al Loconet y utilizo este bus y protocolo en lugar de "leer" directamente de la corriente de la vía:
Veo que has asignado cada tecla de funcion a una acción del arduino (reproducir un sonido, activar una salida, ajustar el volumen....), pero las teclas de función van siempre "ligadas" a un número de locomotora si no me equivoco (aquí es donde creo que se me escapa algo....). ¿Has asignado un número de loco al arduino como si fuera un deco de locomotora? ¿O directamente sea cual sea la tecla de función de la locomora que pulses se activa el sonido? (esta última no creo que sea, o cada vez que enciendas una función de una loco se activará un sonido...)
He mirado tu código para intentar entenderlo, pero como te decía no uso las librerias DCC, siempre trabajo con las Loconet. Veo que la función "extern void notifyDccFunc( uint16_t Addr, uint8_t FuncNum, uint8_t FuncState)" te da una dirección (Addr) pero no la usas ni compruebas cual es su valor, parece que activarás el sonido siempre que pulses la tecla de función de la locomotra que sea.
Pero por otro lado, en la inicialización de programa parece que asignas la dirección de Decoder número 5 en la configuración por defecto. Si es esta segunda opción significa que no has de tener ninguna locomotora con este número.
A parte de esta duda, te dejo una par de ideas y funcionalidades que yo he implementado en Loconet (no se si usando las librerias DCC se puede) por si te interesan:
* Mediante configuración, asigno a cada sonido cargado una tecla de función de una loco concreta. Por ejemplo, el anuncio de llegada personalizado de cada tren lo tengo asignado siempre al F5. Pulsando la F5 de la locomotora que esté controlando se escucha su anuncio de llegada, y con la F6 su anuncio de salida.
* En otra versión, configuro los sensores de llegada de las vias de la estación, y configuro a cada número de locomotora su locución de llegada. Cuando el Arduino ve que una locomora cambia su velocidad a 0 justo cuando se activa el retro de llegada a la estación, reproduzco su anuncio de llegada. Es como si tuvieras un sistema de reconocimiento de trenes, pero sin instalar un Railcomm ni Lissy ni nada de eso. Esta última funcionalidad supongo que no la puedes hacer porque por DCC no puedes leer el estado de los retros. ¿Es así?
Muchas gracias de nuevo por compartir, y siempre de manera tan clara y entendible.
Salut!
Dani
Tengo una duda, supongo que es por falta de conocimiento del protocolo DCC ya que yo siempre conecto mis arduinos al Loconet y utilizo este bus y protocolo en lugar de "leer" directamente de la corriente de la vía:
Veo que has asignado cada tecla de funcion a una acción del arduino (reproducir un sonido, activar una salida, ajustar el volumen....), pero las teclas de función van siempre "ligadas" a un número de locomotora si no me equivoco (aquí es donde creo que se me escapa algo....). ¿Has asignado un número de loco al arduino como si fuera un deco de locomotora? ¿O directamente sea cual sea la tecla de función de la locomora que pulses se activa el sonido? (esta última no creo que sea, o cada vez que enciendas una función de una loco se activará un sonido...)
He mirado tu código para intentar entenderlo, pero como te decía no uso las librerias DCC, siempre trabajo con las Loconet. Veo que la función "extern void notifyDccFunc( uint16_t Addr, uint8_t FuncNum, uint8_t FuncState)" te da una dirección (Addr) pero no la usas ni compruebas cual es su valor, parece que activarás el sonido siempre que pulses la tecla de función de la locomotra que sea.
Pero por otro lado, en la inicialización de programa parece que asignas la dirección de Decoder número 5 en la configuración por defecto. Si es esta segunda opción significa que no has de tener ninguna locomotora con este número.
A parte de esta duda, te dejo una par de ideas y funcionalidades que yo he implementado en Loconet (no se si usando las librerias DCC se puede) por si te interesan:
* Mediante configuración, asigno a cada sonido cargado una tecla de función de una loco concreta. Por ejemplo, el anuncio de llegada personalizado de cada tren lo tengo asignado siempre al F5. Pulsando la F5 de la locomotora que esté controlando se escucha su anuncio de llegada, y con la F6 su anuncio de salida.
* En otra versión, configuro los sensores de llegada de las vias de la estación, y configuro a cada número de locomotora su locución de llegada. Cuando el Arduino ve que una locomora cambia su velocidad a 0 justo cuando se activa el retro de llegada a la estación, reproduzco su anuncio de llegada. Es como si tuvieras un sistema de reconocimiento de trenes, pero sin instalar un Railcomm ni Lissy ni nada de eso. Esta última funcionalidad supongo que no la puedes hacer porque por DCC no puedes leer el estado de los retros. ¿Es así?
Muchas gracias de nuevo por compartir, y siempre de manera tan clara y entendible.
Salut!
Dani