Skip to main content

Customiza la pantalla LCD/OLED de tu impresora 3D como más te guste

Tenía un módulo LCD del tipo “RepRapDiscount Full Graphic Smart Controller” por casa, y he decidido ponerlo en la nueva Prusa i3 para hacerla autónoma, y de esa forma no tener que andar con un ordenador enchufado a esta cada vez que quiera imprimir algo.

Me ha costado un poco ponerla en marcha porque había un pin que hacía mal contacto y funcionaba todo menos ver los ficheros de la SD, incluso me detectaba que la introducía o quitaba. Después de un rato muy largo he descubierto que era el cable, así que conectándolo bien, ya ha empezado todo a funcionar. En cuanto a software no es para nada difícil de configurar, solo hay que instalar una librería en caso de que no la tengas (u8glib) y descomentar alguna línea, aunque no vamos a hablar de cómo hacer eso en esta entrada. Aunque yo haya probado con este módulo en concreto, aclarar que este tutorial debería valer para cualquier pantallita de 128×64 píxeles como puede ser una MKS OLED, por ejemplo

Cuando estaba imprimiendo una pieza para ver que funcionaba bien, me he dado cuenta de que el dibujo del hotend que aparecía en la pantalla no me gustaba demasiado. También he pensado que podría modificar la pantalla de inicio. Así que he decidido echar un vistazo a Marlin.

¿Qué necesitamos?

  • Escribir algunas cosas en Marlin, incluso usando la técnica “copy-paste” podríamos hacer todo. Vamos a ver que es muy sencillo.
  • Dibujar en blanco y negro para generar algunas imágenes. Yo he usado paint por la sencillez.

Vamos a ver que es muy sencillito de hacer. Vamos a dividirlo en dos partes, en la de custominzar la pantalla de inicio y en la de customizar la “info screen”.

Customizando los iconos de nuestra pantalla de información

Antes de ponernos a dibujar, vamos a localizar dónde están las imágenes. El fichero que vamos a cambiar es el dogm_bitmaps.h. Aquí es ahora donde tienes que analizar que sección te corresponde a ti. Por ejemplo, yo no tengo la base caliente puesta, y en el marlin he configurado que tengo únicamente un hotend. Comenzaremos buscando con “Ctrl+F” “HAS_TEMP_BED”, y una vez situados, la parte que nos corresponda.

En mi caso, tendré que ir al else por no tener base caliente, y ahí dentro buscar la sección de 1 hotend.

Dentro de cada sección que acabamos de definir, podemos ver que hay dos trozos de código, para dos imágenes. Cuando imprimimos si nos fijamos, si tenemos activado el ventilador, este va “girando”. Es por estas dos imágenes. La que lleva un 1 en el nombre es la que aparece cuando tenemos la pantalla de información antes de imprimir (ventilador parado), y la que lleva un 0 en el nombre es con la que va alternando cuando lo activamos. Esto lo podemos tener en cuenta a la hora de hacer los dibujos. También vemos que se especifica el tamaño de la anchura y de la altura de nuestra imagen.

Esta imagen va colocada en la banda superior, y ocupa casi todo el ancho (115 de 128 píxeles). Para hacernos una idea, si tenemos la imagen por defecto sería desde que empieza el hotend a la izquierda hasta que acaba el ventilador a la derecha.

Tenemos que tener cuidado con la altura de los dibujos, ya que podríamos superponer los números que aparecen arriba indicando las temperaturas objetivo.

Una vez que tenemos esto en cuenta, pasamos a hacer los dibujos en blanco y negro con el programa que nosotros queramos. Por facilidad, definiremos el tamaño del lienzo de 115x19px (mirando el código). Yo he hecho estos dibujos (lógicamente como he puesto grandes las fotos para que se vean salen pixelados). Al tener solo un hotend tengo mucho espacio libre para poder poner cosas.

hotend0
status_screen0_bmp
hotend1
status_screen1_bmp
hotendbd
prueba con el logo de Bilbao Dynamics

Una vez que tenemos los dibujos, accedemos a una de las dos webs que aparecen comentadas en el código de marlin para realizar la conversión. Yo he escogido la primera.

Cargamos la imagen y se nos genera el código. Copiamos esa parte en la función correspondiente (Nos fijamos que el nombre de la nueva función sea el que ya tenía la vieja para no tener que hacer más cambios). La función vieja la podemos borrar o dejar comentada. Así nos quedaría la parte correspondiente del código.

Y con esto ya tendríamos nuestros dibujos puestos.

20161214_092522

Añadiendo una imagen de arranque customizada

En un primer momento, había pensado en modificar la pantalla que aparece al encender la impresora con el logo de marlin, pero tras leer este mensaje que aparece en el fichero Configuration.h he decidido no hacerlo.

Solo he cambiado la url.

20161214_092520

Para poder añadir esta funcionalidad comenzamos descomentando la siguiente linea que nos aparece unas líneas más abajo, en el fichero Configuration.h

A continuación vamos a example_configurations/Hephestos_2 y copiamos el fichero _BootScreen.h y lo pegamos donde tenemos los ficheros de marlin.

Si abrimos el fichero para editarlo vemos que es muy sencillo, tiene tres parámetros, donde solo cambiaremos los de anchura y altura, el del timeout lo podemos dejar como está. Pondremos los números que correspondan con nuestra imagen. En este caso, me he descargado una de internet, en concreto un dibujo del museo Guggenheim de Bilbao.

splash

(De nuevo aparece pixelada porque es la que he usado directamente) Sus medidas son de 120x47px. Usamos la misma web que en el apartado anterior para generar el array, y lo sustituimos. Si nos fijamos en el código de a continuación, entre corchetes le pasamos el valor del tamaño de la imagen en bytes, que será pxwidth * pxheigth / 8.

Y con esto, ya tenemos completamente customizadas las imágenes de nuestra pantalla.

20161214_092517

Eneko Montero

Estudiando teleco e imprimiendo en 3D. A veces hago robotillos. Cuando tengo tiempo escribo algún artículo.

3 comentarios en “Customiza la pantalla LCD/OLED de tu impresora 3D como más te guste”

  1. Hola! buenisimo es justo lo que estaba buscando, ahora te consulto, tenes idea entrando a las opciones del menu si tambien hay forma de añadir iconos? y si todo iria en el mismo archivo? te agradezco cualquier info que me puedas dar, gracias!

    1. Hola Tony, no he investigado tanto, al no haber iconos por defecto no creo que esté implementado, diría que actualmente solo está pensado para mostrar texto, pero no te lo puedo asegurar.
      Un saludo

Deja un comentario