Устраняем раздражающие моменты Marlin
Сразу хочу предупредить - то о чем пойдет речь возможно когда то и кем то рассматривалось и решалось, но я почему то это упустил, так что если что не пинайте. В любом случае повторить не будет лишним.
Собственно к теме.
Принтер у меня где то полгода. Печатаю не очень часто, но уже изрядно выбешивает один, на первый взгляд пустяковый, аспект - отсутствие элементарного пункта в меню принтера 'Плохой старт' (забегая вперед, я его так назвал).
Запуская печать иногда происходит [нужное вставить] и нужно прекратить печать что бы быстренько исправить что нужно и запустить печать повторно, но в реальности эта спокойная, на первый взгляд, операция превращается в раздражитель нервов.
Отмена печати => Возврат домой => Исправление => Запуск повторной печати => Ожидание - время всего этого можно сократить парой строчек кода.
В данной теме мы допилим Marlin 1.1.9 , но то же самое можно проделать и со старшими версиями, код если и будет отличаться, то незначительно.
Для начала зайдем в language_en.h и добавим имя для пункта
Вставить можно в любое место списка, я вставил после 659 строчки:
#ifndef BAD_STARTЕсли пользуетесь только английским языком то пропускайте следующий пункт, если нет смотрим дальше.
#define BAD_START _UxGT('Bad start')
#endif
В language_ru.h или любом другом добавляем:
#define BAD_START _UxGT('Плохой старт')Теперь основное. В ultralcd.cpp после 864 строки добавляем новую функцию:
void bad_start_stop() {Которая останавливает только печать, а не завершает все процессы. Выполняет последовательность команд (подчеркнуты) которые вы можете задать сами. Пишите что хотите, но я советую в конце всегда дописывать M84 (если кому будет интересно напишу в коменты почему). И выводит статус о завершении печати.
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();
}
Теперь собственно осталось только добавить еще один пункт к меню.
После 1122 строки добавляем:
if (axis_known_position&&card.sdprinting) MENU_ITEM(function, BAD_START, bad_start_stop);Проверяем что известны координаты (что бы не выйти за границы) и то что идет печать. Все - пункт будет появляться в меню только когда идет непосредственно печать.
При желании можете добавить такую же последовательность действий при полной отмене печати - допишите:
enqueue_and_echo_commands_P(PSTR('G91В функцию lcd_sdcard_stop()
G1 F1800 E-5
G1 F3000 Z10
G90
G0 Y220
G28 X0
M84 '));
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();
}
Еще больше интересных статей
Разборная катушка с силикагелем в сушилку Chitu FilaPartner E1 .
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Гладкая пластина из текстурированной pei.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
GCODE: Основы
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
GCODE: Плюшки от ПавлушкиПосле написания предыдущей...
Комментарии и вопросы
Только 2 слова у меня: п***ц к...
https://3dtoday.ru/questions/v...
Наверное излишне лохматое ))
Доброго времени суток!мучаюсь...
Продолжаю осваивать фотополиме...
Всем привет. Приобрел б\у прин...
Возможно вопрос глупый, но как...