Создаем новый пункт меню в прошивке MARLIN

Возникла необходимость создать собственный пункт меню в прошивке MARLIN. В интернете нашел пару интересных решений. Спешу поделиться ими с вами.

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

Мне необходимо добавить функцию преднагрева сопла и стола для пластика PETG. Назову этот пункт меню «Preheat PETG». Помещу его во вкладку «Prepare».

В исходном коде нахожу процедуру, отвечающую за вывод пунктов меню вкладки «Prepare». У меня это строка номер 2646.

Создаем новый пункт меню в прошивке MARLIN

На скриншоте я выделил куски кода, отвечающие за вывод пунктов меню раздела Prepare. Теперь сюда вставлю свой пункт меню.

Создаем новый пункт меню в прошивке MARLIN

MENU_ITEM(gcode, "Preheat PETG", PSTR ("M300 S5000 P280\nM140 S80\nM104 S240"));

  • \n – перенос строки.
  • M300 S5000 P280 ; звуковой сигнал
  • M140 S80 ; Нагрев стола до 80 градусов.
  • M104 S240 ; Нагрев сопла до 240 градусов.

Хочу предупредить, что такой Gcode включает одновременный нагрев стола и сопла. Если у вас слабый блок питания, то лучше не рисковать, запуская его.

У этого метода есть один недостаток. После запуска процедуры не происходит переход на главный экран. Приходится это делать вручную. О начале процедуры сигнализирует лишь звуковой сигнал.

Второй способ исправляет этот недостаток. Код получается чуть  сложнее, но  это стоит того.

Первое, создаем новую процедуру.

void Preheat_PETG(){

  lcd_return_to_status();

  enqueue_and_echo_commands_P(PSTR("M300 S5000 P280\nM140 S80\nM104 S240\nM117 Preheat PETG..."));

}

  • Preheat_PETG() – название процедуры.
  • lcd_return_to_status(); - переход в меню статуса.
  • enqueue_and_echo_commands_P(PSTR(gcode)); - выполнение gcode.

Процедура готова, осталось ее вызвать.

MENU_ITEM (function, "Preheat PETG", Preheat_PETG); 

Вот что получилось.

Создаем новый пункт меню в прошивке MARLIN

Как видно, создавать меню в прошивке Marlin очень просто. Несколько строк кода и все готово!