DCCpp LMD Teclado y encoder


Si hay algo que destaca en esta central es lo minimalista que puede llegar a ser. Aunque la comunicación serial, en todas sus variedades, es la comunicación con las centrales DCCpp. En LMD hemos querido hacer que la central pueda operar de una manera autónoma. Para esto necesitaremos tres elementos extras, la pantalla Oled, teclado y encoder rotativo.

Así como podemos usar la pantalla de manera independiente. Para usar el teclado necesitaremos la pantalla de manera obligatoria, ya que sera la encargada de mostrarnos los datos de las locomotoras que queramos hacer funcionar.

Para esa autonomía, ahora podemos añadir un teclado y un encoder rotatorio con el que podremos operar las diferentes locomotoras y accesorios. Para esto se han preparado dos archivos nuevos,Keyboard.h y Keyboard.cpp y actualizado los archivo Oled.cpp y Oled.h.

Activar o desactivar esta función de la central DCCpp LMD tenemos que ir al archivo DCCpp.h y quitar el comentario a la linea:

	#define USE_KEYBOARD
	

Una vez activado, en el archivo Keyboard.h, es donde vienen especificadas las conexiones del teclado y el encoder rotativo. Estos son los pines que vamos a utilizar: 43, 44, 45, 46, 47, 48, 49 y 50. Dependiendo del teclado, las lineas de conexión son diferentes, en este enlace hay diferentes teclados y sus pines de conexión. Esta es su configuración :

  • PIN_ROW1 44 -> Fila 1
  • PIN_ROW2 46 -> Fila 2
  • PIN_ROW3 48 -> Fila 3
  • PIN_ROW4 50 -> Fila 4
  • PIN_COL1 43 -> Columna 1
  • PIN_COL2 45 -> Columna 2
  • PIN_COL3 47 -> Columna 3
  • PIN_COL4 49 -> Columna 4 (Solo teclado 4x4)

Para conectar el encoder rotativo se usan los pines 51 para el pulsador integrado y 52 y 53 para el movimiento del encoder, quedaría de la siguiente manera:

  • PINSW 51 -> Pulsador
  • PINCLK 52 -> CLK
  • PINDT 53 -> DT

La selección entre los diferentes teclados de viene en la parte superior del archivo Keyboard.h y podemos diferenciar entre dos teclados, uno de 4x3 o uno de 4x4 y los activaremos desde los #define:

	#define USE_DIGITAL_4x3		// Default
	// #define USE_DGITAL_4x4
	// #define USE_ENCODER

Para el uso del encoder usamos las interrupciones que están en los pines 51 y 53. De esta manera no influimos en el correcto funcionamiento del programa.

La configuración de dichos pines esta en el archivo Keyboard.cpp en el apartado de inicialización del encoder Keyboard::initEncoder():

  PCICR |= (1 << PCIE0);   // ESPERAMOS INTERRUPCIONES
  PCMSK0 |= (1 << PCINT1); // pin 51
  PCMSK0 |= (1 << PCINT2); // pin 52
  PCMSK0 |= (1 << PCINT3); // PIN 53

Una vez todo configurado arrancamos la central y en cualquiera de las dos pantallas, DCC on y DCC off, podemos usar las siguientes teclas:

  • '*' -> Encendido / Apagado
  • '0' -> Lista de pantallas
  • '1' -> Pantalla uso locomotoras y funciones
  • '2' -> Pantalla uso desvíos con parámetro ID
  • '3' -> Uso de accesorios con parámetros dirección y subdirección

-.0 pantalla menu

Esta pantalla muestra los números de las diferentes pantallas

Pantalla Menu
  • '*' -> Encendido / Apagado
  • '1' -> Pantalla uso locomotoras y funciones
  • '2' -> Pantalla uso desvíos con parámetro ID
  • '3' -> Uso de accesorios con parámetros dirección y subdirección

-.1.0 Uso locomotoras

Pantalla control locomoras y funciones

Antes de cargar la librería tenemos que especificar en el archivo Oled.cpp en la linea

uint16_t LocoAddress[LMAX] = {3, 36, 35, 12};

Donde podemos introducir los números de las direcciones DCC que vayamos a utilizar.

Configurados los números de direcciones, encendemos la central y pulsando la tecla '1' tenemos la información de la locomotora que vallamos a operar en ese momento

  • '*' -> Avance / Retroceso
  • '0' -> Siguiente registro de locomotora
  • '1' -> Grupo de funciones 1
  • '2' -> Grupo de funciones 2
  • '3' -> Grupo de funciones 3
  • '4' -> Grupo de funciones 4
  • '5' -> Grupo de funciones 5
  • '#' -> Salida al menú principal

Para aumentar o disminuir la velocidad usaremos el encoder configurado para hasta 126 pasos de velocidad

-.1.1 pantalla uso funciones

Pantalla  funciones

-.2 pantalla uso desvíos

Partiendo de la pantalla principal, si pulsamos el número 2 accedemos al uso de desvíos definidos, es decir, almacenados en la memoria de la central. Es el equivalente al comando "Tn 0/1".

Volver

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

Seguiré actualizando!!!