Добавление собственных пунктов в меню 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 в очередь в буфер принтера. Поэтому возможных вариантов использования очень много.
Добавить немного удобства всегда приятно, не правда ли?
Еще больше интересных статей
Свои RFID метки катушек пластика для ams bambu lab
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Эта статья скорее гайд по созданию меток, так как я не нашёл подробных...
Простой кирпич в стене или требует ли красота жертв?
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
G-CODE по-русски для 3D печати (Мини-справочник)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Для ваших хотелок это iDrier п...
Я тоже таким примерно объёмом....
Друзья подскажите как установи...
Приветсвую. Столкнулся с пробл...
Коллеги, пожалуйста, подскажит...
Можно ли в Prusa Sliser сделат...
В квартире довольно влажно осо...