0

DCC++ con pantalla OLED SSD1306 i2C

Muy buenas a todos los amigos del hobby!!! y a los que no… ya caeréis… Esta vez traigo una adaptación para la central DCC++ con una pequeña pantalla Oled de 0.96″ conectada al protocol i2C.

Esta pequeña pantalla nos mostrará datos actualizados de los comandos que entran por el monitor serial, ya sea conectado directamente al Pc o a un transmisor Bluetooth HC-06 (para mi la mejor manera de conectarlo tanto a Pc como por Android con DCCpp Cab).

¿Como conectamos la pantalla Oled a la central DCC++?

Las pantallas que he visto por internet funcionan en su mayoría a 5V aunque también creo que pueden funcionar a 3.3V ¡¡¡Revisa bien la información de la pantalla antes de realizar las conexiones!!! Una vez tenemos esto claro, y al estar comunicada con el protocolo i2C solo tenemos que conectar los pines SDA y SCL situados en los pines 20 y 21 respectivamente. La placa Mega tiene dos de estos conectores, uno situado justo al USB y otro, en la misma linea de pines, junto a Serial 1.

Que ofrece esta adaptación?

Con esta adaptación la central mostrará en la pantalla la información que recibe la central DCC++ en cada momento. Como indica el titulo, esta es una pantalla i2C de 0.96″ en blanco y negro. Esta estará conectada a la placa MEGA de Arduino. Si, me temo que su hermano pequeño UNO no es capaz de tirar en condiciones de esta pantalla o al menos no con la librería de Adafruit. Tengo mis dudas sobre si por culpa de la librería o por la memoria, sea como fuere, UNO, solo carga la pantalla inicial, cuando enciende, su funcionamiento deja de ser el deseado.

El código añadido a son las dos paginas llamadas Oled.h y Oled.cpp de las cuales haré un resumen mas adelante. Para configurar la pantalla también se han añadido unos parámetros de configuración en el archivo Config.h.

Estos se encuentran al final de la pagina y son estos:

#define OLED_ADDRESS 0x3C //Dirección de la pantalla

#define OLED_NAME «SDD1306» //Nombre de la pantalla

La dirección de la pantalla (0x3C) es la que puede variar según la pantalla. Muchas veces viene escrito en algún lugar de la pantalla y otras no, si tu caso es el último hay software que te puede ayudar con eso. Conectando la pantalla y corriendo este sencillo sketch el cual te informara en el monitor serial la dirección de la pantalla.

El archivo Oled.cpp:

define ACTUALIZA_INFO 250 es la linea encargada del refresco de la pantalla que sera cada 250ms. Es decir la pantalla tiene un refresco de 4fps.

define PAUSA_ 24 es la siguiente linea que se puede modificar y bueno esta pausa no es una pausa en si, son las repeticiones que harán las pantalla que no sean la principal. Como tenemos 4fps y queremos que la pausa sea de 6 segundos 6*4 = 24 repeticiones.

Una vez que pasa la pequeña animación de scroll, entra la pantalla inicial:

Esta pantalla nos indica el estado de la central, la versión de DCC++, el tipo de comunicación y el número de desvíos, sensores y salidas definidas en la central. Aparecerá siempre que apaguemos la central con el comando < 0 >.

Cuando encendamos la central con el comando < 1 > da paso a la pantalla de encendido:

La etiqueta «Throttle» muestra la dirección DCC de la locomotora, así como su velocidad y sentido de la marcha. << >>

«Accessor» muestra la dirección, subdirección y el estado del último accesorio/desvío que se haya activado o desactivado

En «Sensores» y «Salidas» primero muestra el identificador (id) luego el pin asociado a ese sensor o salida y el estado 1 o 0.

Si intentamos activar un desvío que no esté definido aparecerá el siguiente mensaje…

Hay algunas pantallas más las cuales iré subiré dentro de poco.

Por lo demás la central sigue siendo la misma que la original, como digo solo he añadido la posibilidad de conectar una pantalla i2C, Si tu pantalla no es la misma que la definida lamentablemente no funcionará o lo escrito en la pantalla no corresponderá con la que he descrito aquí.

Recuerda que también puedes añadir a la central DCC++ un modulo bluetooth para poder usarlo de una manera más cómoda. Aquí te explico como.

En actualizaciones próximas quiero añadir un sistema de recepción IR para comunicar los diferentes sensores con la central de una manera inalámbrica , pero por el momento es solo una idea.

También sigo trabajando en DCCpp Cab que próximamente contara con diferentes pantallas para crear, editar o borrar los desvíos sensores y salidas directamente desde la central.

He subido el proyecto a GitHub y también lo puedes descargar aquí y en la sección de descargas de esta misma web.

Un saludo a todos y gracias por vuestra paciencia!!!

(Visitado 26 veces, 1 visitas hoy)

Deja un comentario

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