Как добавить пользовательские физические кнопки на 3D-принтер в программном обеспечении Marlin

У меня есть 3D-принтер с материнской платой MKS Robin + TMC2209.

Как мне добавить фрагмент кода в Marlin, например, чтобы сделать физическую кнопку для запуска предварительного нагрева и т. Д. Я хотел бы использовать существующую материнскую плату, я не хочу использовать OctoPrint.

У меня есть базовые знания по программированию на Arduino. Я мог бы легко написать программное обеспечение для запуска функции при нажатии кнопки, но я не могу найти, как интегрировать его в Marlin.

, 👍3

Обсуждение

Привет и очень теплый прием в SE.3DP! Лично мне, как любителю Ардуино, мне *очень* нравится ваш вопрос, и я также хотел бы знать ответ. Однако, к сожалению, я думаю, что здесь это может быть не по теме, поскольку речь идет скорее о разработке SW, чем о 3D - печати. Было бы лучше спросить на [форуме прошивки Marlin](https://reprap.org/forum/list.php?415), или создайте запрос на функцию в [репозитории Github](https://github.com/MarlinFirmware/Marlin). Однако последние могут быть либо очень медленными, либо не вызывать особого отклика, поскольку они очень занятые люди - все же стоит попробовать., @Greenonline

В качестве альтернативы вы могли бы потратить несколько недель и попытаться самостоятельно ознакомиться с исходным кодом Marlin и написать его самостоятельно, что, безусловно, не входит в сферу невозможности. Я бы также сказал, что SE.Arduino, вероятно, тоже не то место, чтобы спрашивать. Возможно, на форумах Arduino, но опять же, это может не получить большого отклика, хотя, вероятно, ответ будет лучше, чем на Stack Exchange - причина в том, что добавление кода в прошивку-это не простой вопрос вопросов и ответов, а скорее долгое обсуждение. В целом, форум Марлина, вероятно, лучшее место для начала. Удачи..! :-), @Greenonline

Я думал, что об этом (модификации прошивки) уже спрашивали, но я не могу *действительно* найти вопрос, который я помню... Возможно, это был вопрос 0scar: Могут ли сценарии G-кода автоматически запускаться при вставке SD-карты при использовании прошивки Marlin?, а также представляет интерес (хотя он рекомендует OctoPrint) Как заставить физические кнопки отправлять G-код?, @Greenonline


1 ответ


1

ultralcd.cpp

Может быть, просто можетбыть, это сообщение из раздела как добавить физическую кнопку для управления двигателем экструдера? #10394 может помочь (акцент сделан на мне):

вместо того, чтобы непосредственно работать над stepper.cpp, Я бы скорее предложил взглянуть на часть управления ЖК-дисплеем и интегрировать эмуляцию кода подготовки/перемещения/оси Z. Что касается доступных контактов, возможно, используйте какие-либо неиспользуемые конечные контакты ?

Это имело бы смысл, поскольку это похоже на расположение (т. е. файлы), которое требовалось изменить для вопроса 0scar. Могут ли сценарии G-кода запускаться автоматически при вставке SD-карты при использовании прошивки Marlin?. Файл в этом случае был ultralcd.cpp (смотрите мой ответ).

Однако, ultralcd.cpp похоже, что они были либо удалены, либо перемещены, либо переименованы в ultralcd_st7920_u8glib_rrd_AVR.cpp. Это не выглядит обнадеживающим. Ранее это было в исправлении ошибки 3-й части, см. Этот ответи ссылку на это ultralcd.cpp теперь он мертв.

Код клавиатуры

В качестве альтернативы, этот пост услужливо предлагает:

Это не та функция, которую мы хотели бы добавить. Но можно совершать движения с помощью кнопок, подключив ЖК-код и следуя методике, используемой в настоящее время для клавиатур.

Итак, это, казалось бы, многообещающее место для начала. Однако я (в настоящее время) не уверен, какой это файл(ы). Это может быть код, который обрабатывает клавиатуру RepRapWorld (см. Ниже).

Клавиатура RepRapWorld

Это также может быть полезно, клавиатураRepRapWorld:

Подключите его к вашему порту RAMPS AUX-2. Настройте встроенное ПО для использования клавиатуры. Клавиатура полностью поддерживается прошивкой Marlin.

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

FWIW, здесь упоминается аналогичная по звучанию (9 кнопок) клавиатура, добавляющая пользовательскую клавиатуру, marlin

Однако при дальнейшем чтении неясно, поддерживается ли по-прежнему клавиатура RepRapWorld, см. Запрос функции: добавить поддержку для клавиатуры reprapworld #1142. По-видимому, RepRapWorld (6 лет назад) не поддерживал его и не предоставлял исходный код и ожидал, что программисты Marlin поддержат его бесплатно.

Другие ссылки и ссылки

Тем не менее, в следующем посте также предлагаются другие источники информации, которые могут быть полезны:

Для получения наилучших результатов получения помощи в настройке и устранении неполадок, пожалуйста, используйте следующие ресурсы:

После обращения за помощью к сообществу, если консенсус указывает на ошибку в Marlin, вам следует опубликовать отчет об ошибке.

Следует отметить, что, как правило, люди Marlin предпочитают, чтобы потенциальные проблемы сначала обсуждались на форуме прошивки, прежде чем отправлять какие-либо сообщения об ошибках или запросы на функции на Github. Это делается для того, чтобы остановить их страницу с вопросами на Github за то, что они слишком загромождены.

Также обратите внимание, что 3D-форумы Тома теперь мертвы.

Смотрите также Мод Marlin/ Код с ЖК-клавиатурой, хотя поток, похоже, состоит в основном из сообщений, оплакивающих техническое обслуживание программного обеспечения и жизненные циклы, а затем как бы теряет силу и умирает в конце. Однако в этом посте упоминается uiconfing.h или ui.h.


,

Должно быть легко добавить кнопку в соответствии с https://www.thingiverse.com/thing:4932876, он использует кнопку и макросы для (отмены)загрузки филамента. Хотя это для прошивки RepRap, это может сработать и для Marlin., @0scar