From 16739264d3a3799b44396985c3a200ffde73823f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 5 Feb 2018 22:25:49 -0600 Subject: [PATCH] Add UltiController v2.1 support Add compatibility with the original screen bord from Ultimaker 2 printer (UltiController v2.1 with the PG-2864ALBP I2C display) --- Marlin/Configuration.h | 6 ++++++ Marlin/src/inc/Conditionals_LCD.h | 20 ++++++++++++++++---- Marlin/src/inc/SanityCheck.h | 3 +++ Marlin/src/lcd/ultralcd_impl_DOGM.h | 3 +++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index cb110a942e..cf0b3abe2d 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1618,6 +1618,12 @@ #define U8GLIB_SH1106 #endif +// +// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder +// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1) +// +//#define ULTI_CONTROLLER + // // CONTROLLER TYPE: Shift register panels // diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 0c6ca8f9af..d4c43ecf17 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -151,10 +151,21 @@ #define DEFAULT_LCD_CONTRAST 17 #endif -// Generic support for SSD1306 / SH1106 OLED based LCDs. -#if ENABLED(U8GLIB_SSD1306) || ENABLED(U8GLIB_SH1106) +#if ENABLED(ULTI_CONTROLLER) + #define U8GLIB_SSD1309 + #define REVERSE_ENCODER_DIRECTION + #define LCD_RESET_PIN LCD_PINS_D6 // This controller need a reset pin + #define LCD_CONTRAST_MIN 0 + #define LCD_CONTRAST_MAX 254 + #define DEFAULT_LCD_CONTRAST 127 + #define ENCODER_PULSES_PER_STEP 2 + #define ENCODER_STEPS_PER_MENU_ITEM 2 +#endif + +// Generic support for SSD1306 / SSD1309 / SH1106 OLED based LCDs. +#if ENABLED(U8GLIB_SSD1306) || ENABLED(U8GLIB_SSD1309) || ENABLED(U8GLIB_SH1106) #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for I2C LCD 128x64 (Controller SSD1306 / SH1106 graphic Display Family) + #define DOGLCD // Support for I2C LCD 128x64 (Controller SSD1306 / SSD1309 / SH1106 graphic Display Family) #endif #if ENABLED(PANEL_ONE) || ENABLED(U8GLIB_SH1106) @@ -178,7 +189,8 @@ #if ENABLED(ULTIMAKERCONTROLLER) \ || ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) \ || ENABLED(G3D_PANEL) \ - || ENABLED(RIGIDBOT_PANEL) + || ENABLED(RIGIDBOT_PANEL) \ + || ENABLED(ULTI_CONTROLLER) #define ULTIPANEL #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 5737438d02..a669b40c3f 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1426,6 +1426,9 @@ static_assert(1 >= 0 #if ENABLED(ZONESTAR_LCD) + 1 #endif + #if ENABLED(ULTI_CONTROLLER) + + 1 + #endif , "Please select no more than one LCD controller option." ); diff --git a/Marlin/src/lcd/ultralcd_impl_DOGM.h b/Marlin/src/lcd/ultralcd_impl_DOGM.h index 9a148c995d..2f537445f8 100644 --- a/Marlin/src/lcd/ultralcd_impl_DOGM.h +++ b/Marlin/src/lcd/ultralcd_impl_DOGM.h @@ -211,6 +211,9 @@ // Generic support for SH1106 OLED I2C LCDs //U8GLIB_SH1106_128X64_2X_I2C_2_WIRE u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST); // 4 stripes U8GLIB_SH1106_128X64_2X u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST); // 4 stripes +#elif ENABLED(U8GLIB_SSD1309) + // Generic support for SSD1309 OLED I2C LCDs + U8GLIB_SSD1309_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST); #elif ENABLED(MINIPANEL) // The MINIPanel display //U8GLIB_MINI12864 u8g(DOGLCD_CS, DOGLCD_A0); // 8 stripes