Pantalla SSD1306 llegada trenes animada 128x64


¿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 128x64 pixeles, y un tamaño por pixel de 0,15 mm x 0,15 mm. La 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 memoria 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 en Github

Librería original U8glib desde la web arduinolibraries.info

Saludos a todos!!!!