Устраняем раздражающие моменты 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();
}
Еще больше интересных статей
Нейлон, БФ и нержавейка (изобретение велосипеда, окончание)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Оборудова...
Простое решение проблемы легкой кривизны стола Creality K1C b K1SE (спойлер - гроверы)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Blue Pill & SSD1306, ну очень маленькие.., но 32 бит!
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Решил я тут попробовать перейти с 8 бит на 32.
Готовы...
Комментарии и вопросы
Почитал статью, схватился за г...
Ну, конкретно эта штука на фле...
Я пару раз сталкивался с тем,....
Здраствуйте.проблема появилась...
Добрый день. Подскажите м...
Купил Anycubic cobra s1. Начал...
Установил на на ось Z четырёхз...