Pregunta:
¿Cómo agregar opciones de menú al menú LCD (firmware Marlin)?
cds333
2018-12-17 16:52:57 UTC
view on stackexchange narkive permalink

¿Dónde está el archivo de firmware Marlin correcto y la ubicación para agregar el código que quiero comprar en el menú LCD de mi impresora y luego ejecutar la función que escribo cuando se presiona el botón?

Para ejemplo Quiero agregar un elemento de menú que dice "Precalentar personalizado" que está en el mismo menú que "precalentar PLA" y "precalentar ABS" y luego ejecuta el código para calentar a los valores que especifique. > Estoy ejecutando la versión 1.1.9 del firmware Marlin en una Creality Ender 3.

Tres respuestas:
0scar
2018-12-22 13:43:31 UTC
view on stackexchange narkive permalink

La respuesta a su pregunta es el archivo ultralcd.cpp. Hoy en día, también puede habilitar opciones adicionales a través del archivo Configuration_adv.h, simplemente habilite:

  #define CUSTOM_USER_MENUS  

y edite las opciones debajo de él según sus necesidades (de lo contrario, usará los valores preestablecidos del archivo Configuration.h).


Agregue elementos personalizados usando ultralcd. cpp

Así es como solía hacerlo si desea agregar elementos al menú en el firmware de Marlin a través de ultralcd.cpp. Es mejor mirar primero la implementación actual de los elementos del menú. Como ya mencionaste Precalentar PLA , ese sería el primero en buscar. La búsqueda de archivos es fácil cuando accede al sitio web de github con las fuentes de firmware de Marlin, la funcionalidad está disponible para buscar en los archivos. Alternativamente, descargue una copia del firmware y use una utilidad "grep" gratuita para buscar archivos.

La búsqueda de Preheat PLA le mostrará un montón de archivos de traducción de idiomas. Estos apuntan al uso de un MSG_PREHEAT_1 constante que encuentra su presencia en ultralcd.cpp. Esto sugiere la función lcd_preheat_m1_menu que es llamada por MENU_ITEM que agrega elementos de menú a la pantalla LCD. Puede empezar por ahí para añadir su propia opción.


Demostración

Como demostración rápida, he añadido un PRECALENTAMIENTO PERSONALIZADO elemento copiando la función lcd_preheat_m2_menu en ultralcd.cpp y renombrado este lcd_preheat_m3_menu (un elemento funcional completo necesita cambios dentro del lcd_preheat_m3_menu ya que ahora usa las constantes de la opción de precalentamiento ABS).

Luego agrega el elemento al menú cambiando esta parte del código:

 / / // Precalentar para Material 1 y 2 // #if TEMP_SENSOR_1! = 0 || TEMP_SENSOR_2! = 0 || TEMP_SENSOR_3! = 0 || TEMP_SENSOR_4! = 0 || HAS_HEATED_BED
MENU_ITEM (submenú, MSG_PREHEAT_1, lcd_preheat_m1_menu); MENU_ITEM (submenú, MSG_PREHEAT_2, lcd_preheat_m2_menu); // AÑADIR ESTA LÍNEA: MENU_ITEM (submenú, "PRECALENTAMIENTO PERSONALIZADO", lcd_preheat_m3_menu); #else MENU_ITEM (función, MSG_PREHEAT_1, lcd_preheat_m1_e0_only); MENU_ITEM (función, MSG_PREHEAT_2, lcd_preheat_m2_e0_only); #endif 

Después de compilar y cargar en la placa de la impresora, ingrese al menú Prepare y desplácese hacia abajo para ver:

LCD showing custom preheat option

Marcelo Nicolás Obachi
2019-11-25 19:15:14 UTC
view on stackexchange narkive permalink

Como dijo Mark, Marlin admite varios elementos de menú en su configuración avanzada. Estos elementos están diseñados para ejecutar un código G personalizado, que en este caso (agregar una acción de precalentamiento con un extrusor de destino personalizado y la temperatura de la cama) es suficiente para satisfacer sus necesidades. Entonces, veamos ese archivo de configuración avanzada: Configuration_adv.h. La sección que estamos buscando está casi al final del archivo, puede presionar ctrl + f para "CUSTOM_USER_MENUS" para encontrarla.

  #define CUSTOM_USER_MENUS # if ENABLED (CUSTOM_USER_MENUS) #define USER_SCRIPT_DONE "M117 User Script Done" #define USER_SCRIPT_AUDIBLE_FEEDBACK // # define USER_SCRIPT_RETURN // Vuelve a la pantalla de estado después de un script #define USER_DESC_1 "Haz el truco" #define USER_GCODE_1 "G91 \ nG0 z5 \ nG0 y10" #define define USER_GCODE_2 "G27 P2" // # define USER_DESC_2 "Precalentar para PLA" // # define USER_GCODE_2 "M140 S" STRINGIFY (PREHEAT_1_TEMP_BED) "\ nM104 S" STRINGIFY (PREHEAT_1_TEMP_HOTER "END_) // #define USER_GCODE_3 "M140 S" STRINGIFY (PREHEAT_2_TEMP_BED) "\ nM104 S" STRINGIFY (PREHEAT_2_TEMP_HOTEND) // # define USER_DESC_4 "Calor cama / Hogar / Nivel" // # define USER_GC1BODE_4 " nG29 "// # define USER_DESC_5" Inicio & Info "// # define USER_GCODE_5" G28 \ nM503 "#endif  

El código fuente descargado del repositorio oficial en realidad viene con algunos ejemplos (los comentados) y agregué dos más solo por diversión. Para que funcione su elemento de menú de precalentamiento personalizado, utilizará los siguientes códigos G:

Mark
2019-10-22 20:16:24 UTC
view on stackexchange narkive permalink

Podría haber una solución mejor.

Marlin admite menús de usuario personalizados, en configuration_adv.h , probablemente debería intentar mantener sus cambios limitados a los archivos de configuración * .h .

El código del menú es algo feo y puedes romper cosas fácilmente.

Hola Mark y bienvenido a SE.3DP. Suena como un buen punto a destacar. ¿Podría proporcionar un fragmento del código? No lo he mirado yo mismo, y tal vez sea demasiado grande para resumir, pero si pudiera editar su respuesta y mostrar una parte del código e ilustrar cómo / dónde insertarlo, sería una gran adición a la respuesta.


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 4.0 bajo la que se distribuye.
Loading...