Подключение энкодера к экранам OLED 0.96' (SSD1306) и OLED 1.3' - SH1106 в прошивках MARLIN

Подписаться на 3Dtoday
Lenivo
Идет загрузка
Загрузка
01.02.19
6230
8
RepRap
27
Добрый день всем!
Получаю достаточно много вопросов в личную почту по подключению энкодеров и экранов OLED 0.96' (SSD1306) и OLED 1.3' - (SH1106) в прошивках MARLIN, поэтому решил написать эту маленькую статью по подключению данных экранов, энкодера и карты памяти.
PREVIEW
d65bd1549a56c141b6001836b8011150.JPG
b74b3495091dd6e53e9bb1882e72f9f4.JPG
Экраны хороши тем, что дешевы, малогабаритны, подключаются всего по четырём проводам, имеют питание от 3,3 вольт до 5,5 вольт - то есть их можно поставить и на 8- битные платы, с питанием 5 вольт и на 32 битные платы с питанием 3,3 вольт без переделок и без дополнительных настроек.

Проблема в том , что экран подключается простым раскоментированием строки

#define U8GLIB_SSD1306

И экран начинает работать , а энкодер не подключается. В разных статьях предлагается много способов решить этот вопрос - но надо лезть внутрь прошивки и там править код.
Также если подключить экран OLED 1.3' - (SH1106) - он больше в полтора раза чем 0,96' - по данной строке, то экран заработает, но начальная строка будет изображаться со сбоем.
Для того чтобы нормально заработал OLED 1.3' - (SH1106) надо после строки "#define U8GLIB_SSD1306 " ВСТАВИТЬ немного другой код.

В файле конфигурации (для MARLIN 2.0 bugfix - это файл "Configuration.h") это будет выглядеть так:

//
// SSD1306 OLED full graphics generic display
//
//#define U8GLIB_SSD1306
#define U8GLIB_SH1106

Для того чтобы заработал энкодер нужно добавить блок включения энкодера и добавить две строки , чтобы можно было включить карту памяти, подключенной через стандартный кард-ридер. Итоговый код будет выглядеть так:

// SSD1306 OLED full graphics generic display
//
//#define U8GLIB_SSD1306
#define U8GLIB_SH1106
#if ENABLED(U8GLIB_SH1106)
#define BTN_EN1 35
#define BTN_EN2 37
#define BTN_ENC 31
#define SD_DETECT_PIN -1
#define KILL_PIN -1
#endif

SD- карта подключается стандартно раскоментированием строки "#define SDSUPPORT":

/**
* SD CARD
*
* SD Card support is disabled by default. If your controller has an SD slot,
* you must uncomment the following option or it won't work.
*
*/
#define SDSUPPORT

Схема, как подключить энкодера и экран .
e19e326c883b29f372a1f0ddd7269340.JPG
35057f075800eb0831a1f017da8f9b91.JPG
Подписаться на 3Dtoday
27
Комментарии к статье

Комментарии

01.02.19 в 09:58
1
На какой версии подключаешь?
http://3dtoday.ru/blogs/bustep/mini-oled-controller-for4/ камрад давно пописал, но этот же конфиг на 1.1.9 марлине не захотел нормально отрабатывать энкодер. Экран, картридер норм. А вот с энкодером ни как. Точнее ни ни как, а были какие-то траблы (уже не помню за давностью).
01.02.19 в 13:14
0
У меня всё сделано на DUE+RAMPS - 32 бита. Прошивка MARLIN 2.0 bugfix. Но на обычном старом марлине тоже работало, версию на которой проверял не помню, но не свежая это точно.

А до этого на принтере на профиле на той же прошивке было сделано на МЕГА+RAMPS (8 бит).

Со статьёй по ссылке знаком, на неё часто в вопросах ссылаются, поэтому и написал свой метод - очень простой и действенный.

Ссылка на модель панельки для OLED 1.3' для замены экрана 2004 .

http://3dtoday.ru/3d-models/detali-dlya-3d-printerov/chasti-printera/panel_dlya_oled_1_3_enkodera_i_karty_pamyati/
03.02.19 в 16:27
0
А на картридере что за конденсатор напаян? Дорожки какие то резали? Я для себя собрал на microsd card adapter и нужно перезагружать принтер чтобы он после извлечения карту увидел. Ну и по меню медленно бегает.
Ещё почему-то на экране справа полоска белая. Информация на экране как бы смещена влево.
03.02.19 в 16:48
0
Полоска на экране -это и есть сбой отображения.
Вставьте полностью код. Карта с этим кодом работает после ручного инициирования карты в меню. Надо сперва нажать "Инициировать карту", а потом она появиться. Это потому , что карта и экран используют один канал интерфейса в прошивке.
Чтоб полоски не было - надо прописать U8GLIB_SH1106.

Дорожки не резал. Конденсатор просто на питание напаян для стабилизации питания - карта памяти много тока потребляет и если провода тонкие, то без конденсатора могут быть сбои по питанию (а может и не быть). Я привык в этом месте ставить дополнительный конденсатор, чтоб потом не искать из-за чего карта памяти плохо работает.
01.02.19 в 22:06
0
спасибо! ждуне дождусь, когда же приедет моя олед-рассыпуха, чтобы сделать себе такой экран, КОТОРЫЙ ВИДНО ПОД ЛЮБЫМ УГЛОМ, а не как эти фул графикс дисконт
01.02.19 в 23:30
0
Здесь эта тема рассмотрена подробно. На английском.
03.02.19 в 13:10
0
Да, только там нет вот этого:
экран начинает работать , а энкодер не подключается. В разных статьях предлагается много способов решить этот вопрос - но надо лезть внутрь прошивки и там править код.
Также если подключить экран OLED 1.3' - (SH1106) - он больше в полтора раза чем 0,96' - по данной строке, то экран заработает, но начальная строка будет изображаться со сбоем.
Для того чтобы нормально заработал OLED 1.3' - (SH1106) надо после строки "#define U8GLIB_SSD1306 " ВСТАВИТЬ немного другой код.

13.02.19 в 07:09
0
Для экрана OLED 0.96' - U8GLIB_SSD1306 полная вставка кода будет выглядеть таким образом:

#define U8GLIB_SSD1306
#if ENABLED(U8GLIB_SSD1306)
#define BTN_EN1 35
#define BTN_EN2 37
#define BTN_ENC 31
#define SD_DETECT_PIN -1
#define KILL_PIN -1
#endif

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Снижаем цены на популярные модели Wanhao!

Неприступный замок: UrbanAlps печатает на 3D-принтерах малоуязвимые замки и ключи

Алхимия фотополимерных смол – подводим итоги.

Компания FELIXprinters анонсировала FDM 3D-принтеры Pro L и Pro XL

Fusion360 для чайников.

MMRU (Multi Material Russian Upgrade) Remix on MMU2 (Часть 5: Когда почти работает - ничего не дает)