diff --git a/src/configuration.h b/src/configuration.h index 6b7ba2fd54..a85ff5f5f0 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -104,6 +104,10 @@ along with this program. If not, see . #define SSD1306_ADDRESS 0x3C +// The SH1106 controller is almost, but not quite, the same as SSD1306 +// Define this if you know you have that controller or your "SSD1306" misbehaves. +//#define USE_SH1106 + // Flip the screen upside down by default as it makes more sense on T-BEAM // devices. Comment this out to not rotate screen 180 degrees. #define FLIP_SCREEN_VERTICALLY diff --git a/src/screen.cpp b/src/screen.cpp index 47f4f1c532..9198bc202a 100644 --- a/src/screen.cpp +++ b/src/screen.cpp @@ -34,7 +34,11 @@ along with this program. If not, see . #define FONT_HEIGHT 14 // actually 13 for "ariel 10" but want a little extra space #define FONT_HEIGHT_16 (ArialMT_Plain_16[1] + 1) +#ifdef USE_SH1106 +#define SCREEN_WIDTH 132 +#else #define SCREEN_WIDTH 128 +#endif #define SCREEN_HEIGHT 64 #define TRANSITION_FRAMERATE 30 // fps #define IDLE_FRAMERATE 10 // in fps diff --git a/src/screen.h b/src/screen.h index be5444c1e1..302c8e3393 100644 --- a/src/screen.h +++ b/src/screen.h @@ -3,7 +3,12 @@ #include #include + +#ifdef USE_SH1106 +#include +#else #include +#endif #include "PeriodicTask.h" #include "TypedQueue.h" @@ -211,7 +216,11 @@ class Screen : public PeriodicTask /// Holds state for debug information DebugInfo debugInfo; /// Display device +#ifdef USE_SH1106 + SH1106Wire dispdev; +#else SSD1306Wire dispdev; +#endif /// UI helper for rendering to frames and switching between them OLEDDisplayUi ui; };