Autor Tema: Modificar menú marlin  (Leído 494 veces)

nomyas

  • Nuevo
  • *
  • Mensajes: 40
  • Karma: +2/-0
    • Ver Perfil
  • Ubicación: palencia
Modificar menú marlin
« en: Abril 12, 2017, 06:46:50 pm »
Buenas compañeros de fatigas
Mi pregunta es si es posible modificar los menús de la lcd en marlin y los comandos que se ejecute al seleccionar una opción, me esplico: me e fabricado una impresora plegable, pero me surge el problema de que cuando la pliego el hotend en posición de otigen  me pega en la mesa y lo que me gustaría si se puede es que por ejemplo al seleccionar la opción apagar desde la lcd el eje X se desplazará hasta el final de su recorrido en positivo que es donde el hotend me libra aparte tambien que me expulse el filamento y no tener que hacer todo manualmente. Resumiendo que al seleccionar apagar hacer homing, eje X +300, calentar hotend extrusión un poco de filamento para limpiar y expulsar el filamento
espero haberme explicado bien
saludos

ngc1300

  • Administrador
  • Usuario de CNCs
  • *****
  • Mensajes: 2900
  • Karma: +46/-2
    • Ver Perfil
    • cncControl
  • Ubicación: Terrassa
Re:Modificar menú marlin
« Respuesta #1 en: Abril 12, 2017, 07:25:32 pm »
por poderse claro que se puede y no creo que sea muy complicado, creo que los menús están en el archivo ultralcd.cpp

nomyas

  • Nuevo
  • *
  • Mensajes: 40
  • Karma: +2/-0
    • Ver Perfil
  • Ubicación: palencia
Re:Modificar menú marlin
« Respuesta #2 en: Abril 13, 2017, 05:01:02 pm »
Ya se como se incluyen o modifican los menus de marlis como bien a dicho ngc1300 esta en ultralcd.cpp añadiento esto en la zona del menu que quieras:

MENU_ITEM(gcode, MSG_PLEGAR, PSTR("G28"));

en este caso hace un homing

pero si despues quiero que ejecute otro comando no me lo ejecuta, por ejemplo:

MENU_ITEM(gcode, MSG_PLEGAR, PSTR("G28; G1 X300 Y300"));

hace homing y nada mas, el desplazamiento de x e y a 300 no le hace, lo mismo si pongo "M104 S190" para calentar el hotend, solo me ejecuta el primer comando y no se como hacer que ejecute todos los comandos

ngc1300

  • Administrador
  • Usuario de CNCs
  • *****
  • Mensajes: 2900
  • Karma: +46/-2
    • Ver Perfil
    • cncControl
  • Ubicación: Terrassa
Re:Modificar menú marlin
« Respuesta #3 en: Abril 16, 2017, 07:27:22 am »
tienes que crearte un procedimiento con todas las instrucciones a hacer y luego llamarlo desde el menu.

static void final(){
  enquecommand("G28");
  enquecommand("G1 X300 Y300");             
  lcd_goto_menu(lcd_homing_menu , 0, false); 
}

MENU_ITEM(gcode, MSG_PLEGAR, final);

nomyas

  • Nuevo
  • *
  • Mensajes: 40
  • Karma: +2/-0
    • Ver Perfil
  • Ubicación: palencia
Re:Modificar menú marlin
« Respuesta #4 en: Abril 17, 2017, 10:08:07 pm »
Pues algo tengo que estar haciendo mal me tira este error seguramente no lo estoy poniendo donde devo
Arduino:1.6.5 (Windows 7), Placa:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

ultralcd.cpp: In function 'void lcd_prepare_menu()':
ultralcd.cpp:1195: error: a function-definition is not allowed here before '{' token
     static void final(){
                        ^
ultralcd.cpp:272: error: cannot convert 'void (*)()' to 'const char*' for argument '1' to 'void menu_action_gcode(const char*)'
         menu_action_ ## TYPE(ARGS); \
                                  ^
ultralcd.cpp:281:7: note: in expansion of macro '_MENU_ITEM_PART_2'
       _MENU_ITEM_PART_2(TYPE, ## ARGS); \
       ^
ultralcd.cpp:1201:5: note: in expansion of macro 'MENU_ITEM'
     MENU_ITEM(gcode, MSG_PLEGAR, final);
     ^
a function-definition is not allowed here before '{' token

  This report would have more information with
  "Show verbose output during compilation"
  activala desde Archivo > Preferencias

ngc1300

  • Administrador
  • Usuario de CNCs
  • *****
  • Mensajes: 2900
  • Karma: +46/-2
    • Ver Perfil
    • cncControl
  • Ubicación: Terrassa
Re:Modificar menú marlin
« Respuesta #5 en: Abril 18, 2017, 06:42:19 am »
me parece que estas metiendo el procedimiento dentro de otro procedimiento, o bien alguna '{' te sobra.

nomyas

  • Nuevo
  • *
  • Mensajes: 40
  • Karma: +2/-0
    • Ver Perfil
  • Ubicación: palencia
Re:Modificar menú marlin
« Respuesta #6 en: Abril 21, 2017, 11:40:22 pm »
si, lo tenia metido dentro de otro proceso, pero ahora lo pongo fuera y me tira este error:


ultralcd.cpp: In function 'void final()':
ultralcd.cpp:588: error: 'enquecommand' was not declared in this scope
   enquecommand("G28");
                     ^
ultralcd.cpp:590: error: 'lcd_homing_menu' was not declared in this scope
    lcd_goto_menu(lcd_homing_menu , 0, false);
                  ^
ultralcd.cpp:590: error: 'lcd_goto_menu' was not declared in this scope
    lcd_goto_menu(lcd_homing_menu , 0, false);
                                            ^
ultralcd.cpp: In function 'void lcd_main_menu()':
ultralcd.cpp:272: error: cannot convert 'void (*)()' to 'const char*' for argument '1' to 'void menu_action_gcode(const char*)'
         menu_action_ ## TYPE(ARGS); \
                                  ^
ultralcd.cpp:281:7: note: in expansion of macro '_MENU_ITEM_PART_2'
       _MENU_ITEM_PART_2(TYPE, ## ARGS); \
       ^
ultralcd.cpp:639:1: note: in expansion of macro 'MENU_ITEM'
 MENU_ITEM(gcode, MSG_PLEGAR, final);
 ^
'enquecommand' was not declared in this scope

 e probado poniéndolo en varios sitios pero nada  :'( :quemado:

ngc1300

  • Administrador
  • Usuario de CNCs
  • *****
  • Mensajes: 2900
  • Karma: +46/-2
    • Ver Perfil
    • cncControl
  • Ubicación: Terrassa
Re:Modificar menú marlin
« Respuesta #7 en: Abril 24, 2017, 07:06:34 am »
prueba a poner donde quieras que salga el en el menú

MENU_ITEM(gcode, "Mensaje por LCD", PSTR("G28\nG1 X300 Y300"));

nomyas

  • Nuevo
  • *
  • Mensajes: 40
  • Karma: +2/-0
    • Ver Perfil
  • Ubicación: palencia
Re:Modificar menú marlin
« Respuesta #8 en: Abril 27, 2017, 11:15:01 pm »
Ya esta, de momento funciona perfectamente gracias ngc1300 :) :)