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: