6

Pantalla SSD1306 llegada de trenes animada 128×64

¿Te gustaría darle un toque de realismo a tu estación de tren h0? Ahora con la pantalla SSD1306 y las posibilidades de Arduino, podríamos hacer casi cualquier cosa, pero en este caso, una pantalla de llegadas con unas pequeñas animaciones.

La pantalla SSD1306 en su modalidad I2C y con unas dimensiones de 26,70 mm x 19,26 mm x 1,85 mm es ideal para casi cualquier estación por pequeña que sea (sobre todo en escala H0).
Su resolución es de 128×64 pixeles, y un tamaño por pixel de 0,15 mm x 0,15 mm.
Su alimentación va desde los 3V hasta los 5 y estando completamente encendida tiene un consumo de 0,08W
En cuanto a colores es monocromo, blanco y negro, suficiente para un pequeño cartel de información.

La librería u8g:

En un principio programe la pantalla con la librería de Adafruit, pero como se puede ver en la imagen, esta librería ocupa más de un 60% ella solita… un par de Strings después tenia la memora superando el 80%. Obviamente podría haber intentado con otro tipo de variables, pero al final, desistí de Adafruit y tuve que reprogramar todo (prácticamente desde 0) con la librería U8G de olikraus. Creo que las fotos hablan por si mismas…

Tiene una enorme cantidad de pantallas disponibles, así que si tenéis una pantalla que no sea la SSD1306 muy posiblemente encontréis la vuestra también.

Lo que también tiene, y muchas, son tipos de letra con diferentes medidas y estilos para que podamos personalizar el cartel a nuestro gusto.

Al principio un poco liado con el funcionamiento, pero viendo los resultados al final la he incorporado al proyecto de la DCC++ con pantalla Oled que presentare próximamente por aquí.

¿Que hace realmente la pantalla?

Al abrir el sketch nos escontraremos con las variables que, por supuesto, se pueden poner a nuestro gusto, añadir, quitar cambiando la cifra en la variable llamada «const int destinos = 7;»  únicamente hay que respetar que los nombres de los destinos en la variable «char destino [destinos][18]» no tengan más de 17 caracteres y que la variable «char horario[destinos][6]» siempre tenga el formato de hora «00:00«, si no, no funcionara.

La velocidad del reloj la podemos cambiar en: «const unsigned long period = 5;» Si aumentamos el número, el reloj irá más despacio.

El Setup:

Al iniciar Arduino, carga un comando llamado «randomSeed» el cual se encargará de sacar un número aleatorio del pin A0. ¿Porque el pin A0? Al no tener nada conectado en ese pin únicamente recibiremos «ruido», ese ruido se transforma en un número totalmente aleatorio. Con esto conseguimos que el reloj siempre se inicie en una al azar. Esto lo podemos cambiar comentando las lineas:  «hora = random(0, 23);»  y «minuto = random(0, 59);» sustituyéndolas por «hora = 0;» y «minuto = 0;» la pantalla siempre iniciara a las 00:00.

Y estas son las cosas que se pueden cambiar directamente en el sketch para personalizarlo a vuestro gusto. Os dejo un vídeo donde se muestra el funcionamiento del programa

Descarga directamente Pantalla_llegadas_SSD1306.rar

Librería original U8glib desde la web arduinolibraries.info

Saludos a todos!!!!

(Visitado 483 veces, 1 visitas hoy)

6 comentarios

  1. Hola Peyutron. ¿Podrías compartirme el sketch de la pantalla que muestra el estado de la Dcc++. Es la que tienes publicada como «DCC++ OLED LCD Screen». Estoy muy interesado en entender cómo obtiene los valores a través de los arreglos con el 6n137 y cómo le hiciste para desplegarlos en la pantalla. Muchas gracias. Saludos.

    • Buenas Nino! Ya tienes el sketch disponible Central DCC++ para Arduino Mega con pantalla SSD1306 128×64 i2C BETA También esta disponible en la sección de descargas, no es nada definitivo fueron una pruebas que estuve haciendo, creo que esta puesto para que funcione solo con Mega. Las pruebas que hice con la placa UNO, funcionaba bien hasta que encendias la central que dejaba de funcionar correctamente imagino que por falta de memoria ya que entraba justito justito. Aunque creo que por lo que me preguntas, la pantalla no va conectada a la linea DCC si no que va conectada directamente a la central, de ahí que solo funcione en el Mega. El planteamiento que propones lo estuve mirando ayer precisamente, ya que sería mucho mejor y podría dedicar una pantalla más grande (una de 2.5″ que tengo por ahí) Una de las cosas que creo que no podre salvar es hacerlo todo en uno, es decir la pantalla (SIN i2C) con su Arduino por un lado y en el otro con el 6n137 y un sketch tipo «DCC sniffer» de la librería DCCdecorer por otro. Este ultimo mandaría los datos por serial al Arduino con la pantalla de sin i2C… Estoy abierto a sugerencias..

  2. Hola.
    Muy bueno.
    Para escala n queda grande. Pero igual hay pantallas mas pequeñas.
    Saludos

    • Hay una más pequeña de 128*32, es decir, la mitad de altura que la del artículo, no sé si habrá más pequeñas, pero es cuestión de mirar. Tipos de letra creo que hay uno que se llama «font_baby» que es minúscula!! Saludos!!

Responder a Jose Antonlo Nuñez Cancelar respuesta

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