Металл2024 Реклама
Метобр2024 Реклама

Устраняем раздражающие моменты Marlin

StasBronchukov
Идет загрузка
Загрузка
23.03.2019
11328
27
Техничка

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

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

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

72
Добрый день, товарищи!

Сразу хочу предупредить - то о чем пойдет речь возможно когда то и кем то рассматривалось и решалось, но я почему то это упустил, так что если что не пинайте. В любом случае повторить не будет лишним.

Собственно к теме.

Принтер у меня где то полгода. Печатаю не очень часто, но уже изрядно выбешивает один, на первый взгляд пустяковый, аспект - отсутствие элементарного пункта в меню принтера 'Плохой старт' (забегая вперед, я его так назвал).

Запуская печать иногда происходит [нужное вставить] и нужно прекратить печать что бы быстренько исправить что нужно и запустить печать повторно, но в реальности эта спокойная, на первый взгляд, операция превращается в раздражитель нервов.

Отмена печати => Возврат домой => Исправление => Запуск повторной печати => Ожидание - время всего этого можно сократить парой строчек кода.

В данной теме мы допилим Marlin 1.1.9 , но то же самое можно проделать и со старшими версиями, код если и будет отличаться, то незначительно.

Для начала зайдем в language_en.h и добавим имя для пункта

Вставить можно в любое место списка, я вставил после 659 строчки:
#ifndef BAD_START

#define BAD_START _UxGT('Bad start')

#endif
Устраняем раздражающие моменты Marlin
Если пользуетесь только английским языком то пропускайте следующий пункт, если нет смотрим дальше.

В language_ru.h или любом другом добавляем:
#define BAD_START _UxGT('Плохой старт')
Устраняем раздражающие моменты Marlin
Теперь основное. В ultralcd.cpp после 864 строки добавляем новую функцию:
void bad_start_stop() {

wait_for_heatup = wait_for_user = false;

card.stopSDPrint(

#if SD_RESORT

true

#endif

);

enqueue_and_echo_commands_P(PSTR('G91

G1 F1800 E-5

G1 F3000 Z10

G90

G0 Y220

G28 X0

M84 '
));

lcd_setstatusPGM(PSTR(MSG_PRINT_ABORTED), -1);

lcd_return_to_status();

}
Устраняем раздражающие моменты Marlin
Которая останавливает только печать, а не завершает все процессы. Выполняет последовательность команд (подчеркнуты) которые вы можете задать сами. Пишите что хотите, но я советую в конце всегда дописывать M84 (если кому будет интересно напишу в коменты почему). И выводит статус о завершении печати.

Теперь собственно осталось только добавить еще один пункт к меню.

После 1122 строки добавляем:
if (axis_known_position&&card.sdprinting) MENU_ITEM(function, BAD_START, bad_start_stop);
Устраняем раздражающие моменты Marlin
Проверяем что известны координаты (что бы не выйти за границы) и то что идет печать. Все - пункт будет появляться в меню только когда идет непосредственно печать.

При желании можете добавить такую же последовательность действий при полной отмене печати - допишите:
enqueue_and_echo_commands_P(PSTR('G91

G1 F1800 E-5

G1 F3000 Z10

G90

G0 Y220

G28 X0

M84 '));
В функцию lcd_sdcard_stop()
void lcd_sdcard_stop() {

wait_for_heatup = wait_for_user = false;

abort_sd_printing = true;

enqueue_and_echo_commands_P(PSTR('G91

G1 F1800 E-5

G1 F3000 Z10

G90

G0 Y220

G28 X0

M84 '));

lcd_setstatusPGM(PSTR(MSG_PRINT_ABORTED), -1);

lcd_return_to_status();

}
Устраняем раздражающие моменты Marlin
Все! В подобном виде прошивкой пользуюсь где то полгода и каждый раз когда нужно прервать печать хвалю себя!
Устраняем раздражающие моменты Marlin
Пользуйтесь!

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

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

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

72
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама