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

energuda
Идет загрузка
Загрузка
29.03.2020
2267
19
печатает на Tronxy X5
Техничка

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

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

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

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

   Привет всем 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 в очередь в буфер принтера. Поэтому возможных вариантов использования очень много. 

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

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

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

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

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

Комментарии

29.03.2020 в 23:06
0

в марлине давно есть штатный метод добавить свои пункты в кастомное меню. раньше было до 5шт. сейчас, по моему, уже до 50.
зачем это рукоблудие?

30.03.2020 в 09:41
0

   Штатный метод у меня не сработал. Скорее всего, конечно, я не смог его допинать до успешной реализации. Начал искать свой путь и нашёл. Не такой уж он и сложный. И 5-ю пунктами не ограничен (для 1.1.8).

   Спасибо за внимание к моему творчеству ;)

30.03.2020 в 00:40
0

У меня все это есть, штатными средствами, в конфиге включается.(1,1,9) и в 1.1.8 тоже было.

30.03.2020 в 11:42
0

зачем городить грабли если все уже предусмотрено в    #define CUSTOM_USER_MENUS

30.03.2020 в 12:01
0

   Штатный метод у меня не сработал. Скорее всего, конечно, я не смог его допинать до успешной реализации. Начал искать свой путь и нашёл. Граблями обычно называют метод вызывающий кучу проблем при его реализации. Мой путь работает, прост в реализации и не ограничен 5-ю пунктами меню (для Marlin 1.1.8).

   Искал -> нашёл -> поделился. Использовать или нет решайте сами.

   В любом случае спасибо за внимание к моему творчеству ;)

30.03.2020 в 12:24
0

дело в том что от версии к версии может сильно отличатся сам код и ваше решение подходит только к вашей версии

30.03.2020 в 12:30
0

   Всё верно. У меня на это указано в начале статьи, да ещё и жирным шрифтом.

   Однако, логика Marlin от версии к версии меняется не сильно. И мои выводы можно использовать не как инструкцию к реализации, а как направление поиска своего решения.

   Покрутить самому, поменять код так и сяк, кому-то это будет интересно и познавательно.

31.03.2020 в 09:20
0

а кнопки на фото? - бутафория для детей

31.03.2020 в 09:33
0

Я ждал этого вопроса ;)

Нет конечно, они работают. Установка дополнительных кнопок будет темой отдельной статьи. 

07.04.2020 в 12:14
0

Вот ее-то мы и ждем =)))

07.04.2020 в 13:00
0
31.03.2020 в 09:32
0

.

25.04.2020 в 23:51
0

Добавить бы пункт в главное меню для быстрого управления осью Z, Для меня актуально, к примеру для смены сопла и т.п. операций.

26.04.2020 в 08:53
0

   Можно попробовать. Что конкретно вы хотите получить?

26.04.2020 в 09:16
0

Хотел бы пункт "Z вниз", нажал, стол опустился на 150 мм. Пункт расположить в главном меню 3им- 4ым в списке.

У меня стол на двух шпильках, ранее они приводились ремнем, я спокойно вручную опускал. Теперь на двух моторах, руками не покрутишь.

По самой команде не понял пока как ее правильно написать. Компьютер отображает мне команды "G91 G1 Z150 F 1200 G 90" добавил в свой пункт, не двигается

26.04.2020 в 10:06
0

   Компьютер дело говорит, а вы записываете неправильно. Каждая команда должна начинаться с новой строки. А в случае написания в одну строку нескольких команд, надо разделять их символом "\n". Ваша строчка будет иметь вид "G91\nG1 Z150 F 1200\nG90". Попробуйте так.

26.04.2020 в 10:14
0

Благодарю Вас. Подправлю это дело.

Еще подскажите такой момент где искать отсутствующие пункты в меню? У меня такой же принтер как у Вас. В родной прошивке к примеру можно было настраивать джерки и ускорения, но нельзя было записывать в EEPROM все это.

Перешел на другую плату и marlin 1.1.9 но теперь даже пункт "движения" пустой. Нет пункта "change SD/initial SD" , хотя принтер в роде наличие карты определяет.

26.04.2020 в 10:35
0

   Вы знаете, мой принтер сильно изменился, от того, что было изначально осталась только рама, моторы и оси. Плата управления тоже заменена на бутерброд Мега+RMPS. Установлен Marlin 1.1.8, он немного отличается от версии 1.1.9. В моей версии тоже нет пунктов "change SD/initial SD", но они и не нужны - Marlin самостоятельно определяет SD карту и в случае извлечения с последующим втыкание карты сам её инициализирует. Ни разу проблем не было. 

   Но еслй вам сильно хочется иметь такие пункты меню, то можно добавить свои, присвоив им соответствующие команды GCODE и расположив в удобном для себя месте. Например, команда M21 инициализирует SD карту в случае, если она не инициализировалась автоматически.

26.04.2020 в 13:21
0

А, теперь ясно с картой. Буду мучать принтер дальше).

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

3Д печать в сельском хозяйстве ч.2

Еще один принтер. Часть 2. Корректировки конструкции, ось Z.

Подставка под 3д ручку

Normandy sr2 на изоляции.

Haunebu III

бюджетный термобокс tronxy x5sa