Добрый день всем!
Получаю достаточно много вопросов в личную почту по подключению энкодеров и экранов 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
Подробнее…

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