Добавление собственных пунктов в меню Marlin

energuda
Идет загрузка
Загрузка
29.03.2020
5302
19
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

5
Статья относится к принтерам:
Tronxy X5

   Привет всем 3D печатникам и не только!

   Сегодня постараюсь в простой форме рассказать, как можно добавить собственный пункт меню в Marlin. На форуме уже была статья на эту тему, но в ней рассматривался случай отмены печати при возникновении проблем в начале печати. Способ несколько мудрёный и для моих целей на сегодня избыточный. А цель я поставил - добавить пункт для нагрева стола перед печатью PETG до 80 градусов. Дело в том, что в стоке меню имеет пункты для нагрева стола/сопла/всего_вместе для PLA (60 гр.) и ABS (100 гр.). Я использую все упомянутые виды пластика, а они имеют разные требования к температуре стола.

    Так что, кому интересно, прошу под CUT.

Добавление собственных пунктов в меню Marlin

   

Я не могу гарантировать, что этот метод будет на 100% работоспособен на всех вариантах принтеров. Имею в хозяйстве бутерброд из Mega+RAMPS 1.4. В этой комбинации работает.

   Прошивка у меня на момент написания статьи Marlin 1.1.8. На других версиях не тестировал, но думаю, что не должно сильно отличаться. 

   Итак, приступим.

   Открываем Arduino IDE и переходим во вкладку ultralsd.cpp. Именно в этом файле находятся описания меню принтера.

Добавление собственных пунктов в меню Marlin

   Преднагрев пластика находится во вкладке "Действия" или "Prepare" в англоязычном варианте. Нажав Ctrl+F вызываем поиск и ищем строку "Prepare" submenu. После неё идут функции обеспечивающие вывод строк во вкладке "Действия" или "Prepare" в англоязычном варианте.

Добавление собственных пунктов в меню Marlin

   Теперь надо определиться в каком месте меню будет размещаться будущая строчка. Для ориентира можно использовать комментарии перед функцией. Например, // Move Axis - это вторая строчка, // Auto Home - это третья, и так далее. Я желаю видеть свою строчку после "Преднагрев ABS". По английски это будет // Preheat for Material 1 and 2

Добавление собственных пунктов в меню Marlin

   Искать "ABS" бессмысленно, дело в том, что в прошивке жёстко не определено название материала. Его можно изменить. Поэтому пункт назвали "Преднагрев материала 1 и 2".

   После этого пункта располагаем нашу новую строку:

    //

    // Preheat PETG

    //

    MENU_ITEM (function, "Преднагрев PETG стол", Preheat_PETG);

Добавление собственных пунктов в меню Marlin

   Если быть точным, то внесённая запись не просто строка в меню. Это ещё и вызов функции, которая будет выполнять определённые действия, а именно нагрев стола до 80 градусов. Безусловно, эту функцию надо будет описать:

   void Preheat_PETG(){

       lcd_return_to_status();

       enqueue_and_echo_commands_P(PSTR("M140 S80"));

Расположу я её перед описанием подменю "Действия" или "Prepare" в англоязычном варианте. 

 Добавление собственных пунктов в меню Marlin

   Теперь осталось залить прошивку в принтер и можно будет наблюдать картинку, что я разместил в начале поста. После выбора пункта меню "Преднагрев PETG стол" включается нагрев и возвращается основной экран.

   Если вам надо нагревать не только стол, но и сопло, то вместо "M140 S80" надо написать "M140 S80\nM104 S240".

   По сути дела, данный метод описывает добавление пункта меню с действием в виде помещения исполняемой команды GCODE в очередь в буфер принтера. Поэтому возможных вариантов использования очень много. 

   Добавить немного удобства всегда приятно, не правда ли?

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

5
Комментарии к статье