Добавление собственных пунктов в меню Marlin
Привет всем 3D печатникам и не только!
Сегодня постараюсь в простой форме рассказать, как можно добавить собственный пункт меню в Marlin. На форуме уже была статья на эту тему, но в ней рассматривался случай отмены печати при возникновении проблем в начале печати. Способ несколько мудрёный и для моих целей на сегодня избыточный. А цель я поставил - добавить пункт для нагрева стола перед печатью PETG до 80 градусов. Дело в том, что в стоке меню имеет пункты для нагрева стола/сопла/всего_вместе для PLA (60 гр.) и ABS (100 гр.). Я использую все упомянутые виды пластика, а они имеют разные требования к температуре стола.
Так что, кому интересно, прошу под CUT.
Я не могу гарантировать, что этот метод будет на 100% работоспособен на всех вариантах принтеров. Имею в хозяйстве бутерброд из Mega+RAMPS 1.4. В этой комбинации работает.
Прошивка у меня на момент написания статьи Marlin 1.1.8. На других версиях не тестировал, но думаю, что не должно сильно отличаться.
Итак, приступим.
Открываем Arduino IDE и переходим во вкладку ultralsd.cpp. Именно в этом файле находятся описания меню принтера.
Преднагрев пластика находится во вкладке "Действия" или "Prepare" в англоязычном варианте. Нажав Ctrl+F вызываем поиск и ищем строку "Prepare" submenu. После неё идут функции обеспечивающие вывод строк во вкладке "Действия" или "Prepare" в англоязычном варианте.
Теперь надо определиться в каком месте меню будет размещаться будущая строчка. Для ориентира можно использовать комментарии перед функцией. Например, // Move Axis - это вторая строчка, // Auto Home - это третья, и так далее. Я желаю видеть свою строчку после "Преднагрев ABS". По английски это будет // Preheat for Material 1 and 2
Искать "ABS" бессмысленно, дело в том, что в прошивке жёстко не определено название материала. Его можно изменить. Поэтому пункт назвали "Преднагрев материала 1 и 2".
После этого пункта располагаем нашу новую строку:
//
// Preheat PETG
//
MENU_ITEM (function, "Преднагрев PETG стол", Preheat_PETG);
Если быть точным, то внесённая запись не просто строка в меню. Это ещё и вызов функции, которая будет выполнять определённые действия, а именно нагрев стола до 80 градусов. Безусловно, эту функцию надо будет описать:
void Preheat_PETG(){
lcd_return_to_status();
enqueue_and_echo_commands_P(PSTR("M140 S80"));
Расположу я её перед описанием подменю "Действия" или "Prepare" в англоязычном варианте.
Теперь осталось залить прошивку в принтер и можно будет наблюдать картинку, что я разместил в начале поста. После выбора пункта меню "Преднагрев PETG стол" включается нагрев и возвращается основной экран.
Если вам надо нагревать не только стол, но и сопло, то вместо "M140 S80" надо написать "M140 S80\nM104 S240".
По сути дела, данный метод описывает добавление пункта меню с действием в виде помещения исполняемой команды GCODE в очередь в буфер принтера. Поэтому возможных вариантов использования очень много.
Добавить немного удобства всегда приятно, не правда ли?
Еще больше интересных статей
Голова для mankati fullscale XT под E3DV6
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Про мощность керамического нагревателя Qidi Q1 pro
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Некоторое время назад я менял керамический нагреватель на...
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
а зачем ставить русский язык н...
Судя по всему ты и в балете ра...
Не слишком удачная конструкция...
Прошу совета с выбором принтер...
Всех приветствую. Подскажите п...
Всем привет, где то тут на про...
Здравствуйте! Я новичок. Печат...