Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support FYSETC 2.42 inch OLED #18485

Merged
merged 3 commits into from
Jul 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Marlin/Configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -2091,6 +2091,11 @@
//
//#define OVERLORD_OLED

//
// FYSETC OLED 2.42" 128 × 64 FULL GRAPHICS CONTROLLER with WS2812 RGB
// Where to find : https://www.aliexpress.com/item/4000345255731.html
//#define FYSETC_242_OLED_12864 // Uses the SSD1309 controller

//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
Expand Down
21 changes: 21 additions & 0 deletions Marlin/src/inc/Conditionals_LCD.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,27 @@
#define IS_RRD_SC
#define IS_U8GLIB_SSD1306

#elif ENABLED(FYSETC_242_OLED_12864)

#define IS_RRD_SC
#define U8GLIB_SH1106
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@GerogeFu — This disagrees with the block in marlin_DOGM.h which tries to use either SSD1306 or SSD1309 for FYSETC_242_OLED_12864. It looks like displays with these controllers can have SPI or I2C interfaces, so I don't want to presume they always refer to I2C. As we're trying to wrangle display pins and types, this is one of those head-scratchers.


#define LED_CONTROL_MENU
#define NEOPIXEL_LED
#undef NEOPIXEL_TYPE
#define NEOPIXEL_TYPE NEO_RGB
#if NEOPIXEL_PIXELS < 3
#undef NEOPIXELS_PIXELS
#define NEOPIXEL_PIXELS 3
#endif
#ifndef NEOPIXEL_BRIGHTNESS
#define NEOPIXEL_BRIGHTNESS 127
#endif

#if ENABLED(PSU_CONTROL)
#define LED_BACKLIGHT_TIMEOUT 10000
#endif

#elif ANY(FYSETC_MINI_12864_X_X, FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0, FYSETC_MINI_12864_2_1, FYSETC_GENERIC_12864_1_1)

#define FYSETC_MINI_12864
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/inc/Conditionals_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@
#endif
#endif

#if ENABLED(FYSETC_MINI_12864_2_1)
#if ENABLED(FYSETC_MINI_12864_2_1, FYSETC_242_OLED_12864)
#define LED_CONTROL_MENU
#define LED_USER_PRESET_STARTUP
#define LED_COLOR_PRESETS
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/lcd/dogm/ultralcd_DOGM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ void MarlinUI::init_lcd() {
OUT_WRITE(LCD_BACKLIGHT_PIN, DISABLED(DELAYED_BACKLIGHT_INIT)); // Illuminate after reset or right away
#endif

#if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306)
#if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306, FYSETC_242_OLED_12864)
SET_OUTPUT(LCD_PINS_DC);
#ifndef LCD_RESET_PIN
#define LCD_RESET_PIN LCD_PINS_RS
Expand Down
12 changes: 12 additions & 0 deletions Marlin/src/lcd/dogm/ultralcd_DOGM.h
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,18 @@
#define U8G_CLASS U8GLIB_SH1106_128X64 // 8 stripes
#endif

#elif ENABLED(FYSETC_242_OLED_12864)

// FYSETC OLED 2.42" 128 × 64 FULL GRAPHICS CONTROLLER

#define FORCE_SOFT_SPI // SW-SPI

#if ENABLED(ALTERNATIVE_LCD)
#define U8G_CLASS U8GLIB_SSD1306_128X64_2X // 4 stripes
#else
#define U8G_CLASS U8GLIB_SSD1306_128X64 // 8 stripes
#endif

#elif ENABLED(U8GLIB_SH1106)

// Generic SH1106 OLED I2C LCD
Expand Down
105 changes: 62 additions & 43 deletions Marlin/src/pins/ramps/pins_FYSETC_F6_13.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,58 +211,77 @@
//
// LCDs and Controllers
//
#define BEEPER_PIN 37
#define SD_DETECT_PIN 49

#if ENABLED(FYSETC_MINI_12864)
//
// See https://wiki.fysetc.com/Mini12864_Panel/?fbclid=IwAR1FyjuNdVOOy9_xzky3qqo_WeM5h-4gpRnnWhQr_O1Ef3h0AFnFXmCehK8
//
#define DOGLCD_A0 16
#define DOGLCD_CS 17

#if ENABLED(FYSETC_GENERIC_12864_1_1)
#define LCD_BACKLIGHT_PIN 27
#endif

#define KILL_PIN 41
#define LCD_RESET_PIN 23 // Must be high or open for LCD to operate normally.
// Seems to work best if left open.

#if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0)
#ifndef RGB_LED_R_PIN
#define RGB_LED_R_PIN 25
#endif
#ifndef RGB_LED_G_PIN
#define RGB_LED_G_PIN 27
#if ENABLED(FYSETC_242_OLED_12864)
#define BTN_EN1 37
#define BTN_EN2 29
#define BTN_ENC 35
#define BEEPER_PIN 31

#define LCD_PINS_DC 25
#define LCD_PINS_RS 33
#define DOGLCD_CS 16
#define DOGLCD_MOSI 23
#define DOGLCD_SCK 17
#define DOGLCD_A0 LCD_PINS_DC

#define KILL_PIN -1 // NC
#define NEOPIXEL_PIN 27

#else
#define BEEPER_PIN 37

#if ENABLED(FYSETC_MINI_12864)
//
// See https://wiki.fysetc.com/Mini12864_Panel/?fbclid=IwAR1FyjuNdVOOy9_xzky3qqo_WeM5h-4gpRnnWhQr_O1Ef3h0AFnFXmCehK8
//
#define DOGLCD_A0 16
#define DOGLCD_CS 17

#if ENABLED(FYSETC_GENERIC_12864_1_1)
#define LCD_BACKLIGHT_PIN 27
#endif
#ifndef RGB_LED_B_PIN
#define RGB_LED_B_PIN 29

#define KILL_PIN 41
#define LCD_RESET_PIN 23 // Must be high or open for LCD to operate normally.
// Seems to work best if left open.

#if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0)
#ifndef RGB_LED_R_PIN
#define RGB_LED_R_PIN 25
#endif
#ifndef RGB_LED_G_PIN
#define RGB_LED_G_PIN 27
#endif
#ifndef RGB_LED_B_PIN
#define RGB_LED_B_PIN 29
#endif
#elif ENABLED(FYSETC_MINI_12864_2_1)
#define NEOPIXEL_PIN 25
#endif
#elif ENABLED(FYSETC_MINI_12864_2_1)
#define NEOPIXEL_PIN 25
#endif

#elif HAS_GRAPHICAL_LCD
#elif HAS_GRAPHICAL_LCD

#define LCD_PINS_RS 16
#define LCD_PINS_ENABLE 17
#define LCD_PINS_D4 23
#define LCD_PINS_D5 25
#define LCD_PINS_D6 27
#define LCD_PINS_D7 29
#define LCD_PINS_RS 16
#define LCD_PINS_ENABLE 17
#define LCD_PINS_D4 23
#define LCD_PINS_D5 25
#define LCD_PINS_D6 27
#define LCD_PINS_D7 29

#if ENABLED(MKS_MINI_12864)
#define DOGLCD_CS 25
#define DOGLCD_A0 27
#endif
#if ENABLED(MKS_MINI_12864)
#define DOGLCD_CS 25
#define DOGLCD_A0 27
#endif

#endif
#endif

#if ENABLED(NEWPANEL)
#define BTN_EN1 31
#define BTN_EN2 33
#define BTN_ENC 35
#if ENABLED(NEWPANEL)
#define BTN_EN1 31
#define BTN_EN2 33
#define BTN_ENC 35
#endif
#endif

#ifndef RGB_LED_R_PIN
Expand Down