Сенсорный экран для большого дерева.
Подключение сенсорного экрана MKS TS35 к платам BigTreeTech SKR.
При всей широте ассортимента электроники для 3D печати, выпускаемой компанией BIQU, в части экранов предложение ограничено Smart Screen различного размера. Такой экран представляет собой автономный принт сервер, ничего не знающий о внутреннем устройстве принтера, поэтому его возможности по настройке параметров принтера весьма и весьма ограничемы.Три предлагаемых модели умеют работать в режиме эмуляции экрана 12864 с полноценным доступом к меню принтера, но использование экрана 3,5 дюймового экрана для отображения такой картинки выглядит несколько расточительно.
Альтернативой выступает экран MKS TS35, ни разу не умный, но со подключением к стандарным EXP1/EXP2 разъёмам.Собственного микроконтроллера у этого экрана нет и отрисовкой картинки занимается прошивка основной платы.Поддержка TFT экранов в Marlin есть для STM32F1/F4 и для LPC176x, подключать экран я буду, соответственно, к SKR Mini v1.1 и SKR v1.3.Изначально MKS TS35 сделан для использования с MKS Robin Nano v2.x и v3.x, но благодаря удачной распиновке прекрасно дружит и с другими платами.
Первое, о чём нужно помнить - это альтернативный взгляд MKS на разъемы EXP1/EXP2.Проблема не новая и тянется со времен экранов 2004 и 12864. По сравнению RepRap электроникой, MKS использует перевернутые разъемы EXP1/EXP2.Три стандартных варианта решения:
- снять пластиковую часть разъемов и поставить её ключем в другую сторону
- спилить ключ на разъёмах кабеля (с одной стороны) и воткнуть их обратной стороной
- взять кабель для подключения RepRap контроллеров к платам MKS
Пины для подключения MKS TS35 к SKR Mini v1.1 и SKR v1.3 уже прописаны в соответствующих pins.h файлах.Для других плат может потребоваться добавить следующие строчки
#define BEEPER_PIN EXP1_01_PIN #define BTN_ENC EXP1_02_PIN #define BTN_EN1 EXP2_03_PIN #define BTN_EN2 EXP2_05_PIN #define TFT_CS_PIN EXP1_07_PIN #define TFT_SCK_PIN EXP2_02_PIN #define TFT_MISO_PIN EXP2_01_PIN #define TFT_MOSI_PIN EXP2_06_PIN #define TFT_DC_PIN EXP1_08_PIN #define TFT_A0_PIN TFT_DC_PIN #define TFT_RESET_PIN EXP1_04_PIN #define LCD_BACKLIGHT_PIN EXP1_03_PIN #define TFT_BACKLIGHT_PIN LCD_BACKLIGHT_PIN #define TOUCH_BUTTONS_HW_SPI #define TOUCH_BUTTONS_HW_SPI_DEVICE 1 #define TOUCH_CS_PIN EXP1_05_PIN #define TOUCH_SCK_PIN EXP2_02_PIN #define TOUCH_MISO_PIN EXP2_01_PIN #define TOUCH_MOSI_PIN EXP2_06_PIN #define LCD_READ_ID 0xD3 #define LCD_USE_DMA_SPI #define TFT_BUFFER_SIZE 2400
Параметр TOUCH_BUTTONS_HW_SPI_DEVICE нужно сконфигурировать в соответствии с используемым аппаратным SPI.Для снижения нагрузки на микроконтроллер, вывод данных из буфера на экран осуществляется с использованием DMA, поэтому размер буфера не может превышать максимальное значение счётчика DMA контроллера.В этом месте заботливо прикопаны грабли для LPC176x. Возможности DMA контроллера в этих MCU ограничены передачей 4095 (0xFFF) 8-ми или 16-ти битных значений.Для сравнения - DMA контроллер в STM32 может передавать до 65535 (0xFFFF) таких значений.Из-за ограничений DMA контроллера вывод на экран у LPC176x осуществляется маленькими порциями и визуально медленнее, чем у STM32.
Осталось настроить соответствующие параметры в Configuration.h:У меня энкодер имеет склонность к перескакиванию через строчку, поэтому излишняя его ретивость ограничивается параметром
#define ENCODER_PULSES_PER_STEP 5
Задаем тип используемого экрана
#define MKS_TS35_V2_0
Указываем, какой графический интерфейс использовать
#define TFT_COLOR_UI
Включаем поддержку сенсорного экрана
#define TOUCH_SCREEN
Компилируем, прошиваем и радуемся результату.
С параметром #define LCD_LANGUAGE обращатся осторожно.При неправильном использовании, в зависимости от свежести кода, можно получить или нечитаемые цифробуквы, или нечитаемые (для большинства) иероглифы.Первое лечится заменой выбранного языка на английский (en), второе - заменой на язык, известный пользователю.
Если выбраный язык не использует иероглифы (т.е. не Корейский, не Китайский и не Японский), то в Configuration_adv.h:Включить поддержку юникода в именах файлов (имена в кодировке CP1251, CP866 и прочие KOI8-как по-прежнему не поддерживаются)
#define UTF_FILENAME_SUPPORT
(По желанию) включить поддержку длинных имен файлов при работе через COM порт.
#define LONG_FILENAME_HOST_SUPPORT#define LONG_FILENAME_WRITE_SUPPORTПоддержка юникода и дополнительних наборов символов на момент написания статьи ещё ожидает включения в основной репозиторий.https://github.com/MarlinFirmware/Marlin/pull/25073
Еще больше интересных статей
Подключение мощного диодного лазера к 3D-принтеру
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Появилось у меня как-т...
Flashforge AD5M Pro - доработка 2. Датчик движения филамента.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
G-CODE по-русски для 3D печати (Мини-справочник)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Крутой обзор
Так дуть надо вниз, вверх тепл...
А как с набором влаги?
Печатал себе печатал петгом, п...
Всем привет, недавно столкнулс...
platformio run --silent -e LPC...
Сделал в блендере подставку по...