Configuración DCCpp LMD


Debido a las múltiples posibilidades de la central DCCpp LMD existen muchas configuraciones posibles. Si bien están un poco diseminadas por todo el programa, aquí haré un resumen de las más comunes indicando en que archivo se encuentra y las opciones posibles

  • DCCpp.cpp
  • DCCpp_Uno.h
  • Config.h
  • Oled.cpp
  • Sound.h

Archivo DCCpp.cpp

En este archivo se encuentra la configuración general, en ella podemos habilitar el uso de los puertos seriales, pantalla o debug.

#define USE_TURNOUT
#define USE_OUTPUT
#define USE_SENSOR
#define USE_EEPROM
#define USE_TEXTCOMMAND
// #define DCCPP_DEBUG_MODE // Muestra Información en pantalla
#define USE_SERIALWIFI      // Serial1
#define USE_SERIALBLUETOOTH // Serial2
#define USE_SERIALAUX       // Serial3 
#define USE_OLED          	// Pantalla OLED 128x64 i2C 
#define USE_SOUND          	// Buzzer sonidos varios
#define DCCPP_PRINT_DCCPP

#define USE_TURNOUT Habilita el uso de desvíos o accesorios

#define USE_OUTPUT Habilita el uso de pines disponibles en Arduino como salidas

#define USE_SENSOR Habilita el uso de pines disponibles en Arduino entrada como: sensores de presencia, barreras infrarrojas, pulsadores, etc..

#define USE_EEPROM Habilita el uso de la memoria EEPROM. Esta memoria es utilizada para asignar una ID a un elemento concreto. Por ejemplo en los desvíos, si no disponemos de esta memoria tendríamos que introducir el comando "a 10 3 1" que no tiene respuesta por parte de la central.

#define USE_TEXTCOMMAND Habilita el uso de los comandos seriales.

#define USE_DCCPP_DEBUG_MODE Habilita el modo debug, el cual nos dará información extra sobre la central. Solo disponible para comunicación serial con PC.

#define USE_SERIALWIFI Habilita el puerto serial 1.

#define USE_SERIALBLUETOOTH Habilita el puerto serial 2.

#define USE_SERIALAUX Habilita el puerto serial 3.

Archivo DCCpp_Uno.h

En este archivo tenemos la configuración de la comunicación serial básica (PC) y Ethernet:

#if defined(USE_ETHERNET)

	#define DCCPP_INTERFACE eServer
	#define SDCARD_CS 4
  
#else

	#define DCCPP_INTERFACE Serial

#endif

#define DCCPP_INTERFACE eServer En caso de comunicación ethernet, DCCPP_INTERFACE deja de ser Serial.

#define DCCPP_INTERFACE Serial Habilita el puerto Serial. Este puerto queda reservado para la comunicación con el PC, programación y debug. Es recomendable no cambiar esta linea.

Como se puede ver estas opciones no se pueden usar simultáneamente. Al no haber usado nunca la comunicación ethernet, pero imagino que aunque perdamos la comunicación para el monitor serial, podremos programar el Arduino

Archivo SerialWifi.h

Desde este archivo podemos cambiar el puerto serial (no recomendado) al que se conecta el dispositivo Wifi.

#define WIFI Serial1

Archivo SerialBluetooth.h

Desde este archivo podemos cambiar el puerto serial (no recomendado) al que se conecta el dispositivo Bluetooth.

#define BLUETOOTH Serial2

Archivo SerialAux.h

Desde este archivo podemos cambiar el puerto serial (no recomendado) al que se conecta cualquier dispositivo auxiliar, como por ejemplo otro arduino.

#define SERIALAUX Serial3

Archivo Config.h

Aquí se ubican algunos de los parámetros básicos, como el número máximo de locomotoras que podemos operar simultáneamente o cuantas locomotoras en vía de programación.

Esta sección es casi automática dependiendo de la placa Arduino que estemos usando. Es este caso es la placa MEGA 2560

#define #define MAX_MAIN_REGISTERS X Es el número máximo de locomotoras que puede manejar la central

#elif defined(ARDUINO_AVR_MEGA2560)

#define MAX_MAIN_REGISTERS 21

21 para el caso de la placa MEGA

Hasta ahora hemos visto como comunicar la central DCCpp LMD con los diferentes puertos seriales, pero otra parte (igual de importante) es la alimentación y comunicación con nuestras locomotoras.

motorshield

Para esto existen diferentes escudos o Shields y drivers de potencia. En mi caso y puesto que no suelo usar muchas locomotoras al mismo tiempo, generalmente dos o tres, y el ahorro de espacio, uso el Shield Ardumoto pero existen otros como Pololu o LMD18200

El archivo config.h asigna los pines de estos drivers

Para iniciar el motorshield elegido, igual que los Seriales, lo definimos en el archivo .ino en la función setup()

DCCpp::beginMainMotorShield();
DCCpp::beginProgMotorShield();
 

Para el caso del shield Ardumoto y

DCCpp::beginMainPololu();
DCCpp::beginProgPololu();

Con Pololu MC33926

Para otros shields diferentes, puedes consultar la documentación en DCCpp.h

En DCC++ original, había que hacer unos puentes entre los pines D5 y D13 y otro puente entre los pines D10 y D12. Esos puentes ya no son necesarios.

Oled.cpp

Desde Oled.cpp podemmos cambiar los parametros de la pantalla Oled e incluso seleccionar otra pantalla desde la lista que esta esta en el archivo Oled.h.

#define ACTUALIZA_INFO 750  // La pantalla se actualiza cada 750ms 3/4
#define PAUSA_           4 // 14  // Pausa de 6 segundos para mostrar la información. 4x750 = 3000ms

#define ACTUALIZA_INFO Tiempo de actualización de la pantalla

#define PAUSA_ Número de pausas para mostrar un mensaje.

Sound.h

DCCpp LMD habla, no mucho, pero al menos ahora nos indicara de una manera sonora en Speakerdiferentes casos como, encendico, apagado, acción correcta o fallo.

Podemos cambiar el pin donde va conectado en la linea:

#define PIN_SOUND 6

Estos son algunas de las lineas de configuración más importantes que tenemos que modificar para el uso de la librería. Estas configuraciones son validas para la mayoría de las centrales que DCCpp que la usan. Aunque es mejor leer la documentación de cada central que estemos usando. La configuración de los retromodulos S88 tienen la misma configuración de pines que la central DCC-EX

Volver

Descargar Librería DCCpp_LMD 2.0.4 (Modificación Oled, S88, Sonido, wifi, Bluetooth, Serial3, teclado y encoder)

Seguiré actualizando!!!