I specifically mentioned the sketch that works, and the ones that don’t, which is every single other one. I also said which platform I was using, and which steps I used to get where I am.
In the file that works, the FactoryTest, in the ESP32 Dev Boards Library, this works:
SSD1306Wire factory_display(0x3c, 500000, SDA_OLED, SCL_OLED, GEOMETRY_128_64, RST_OLED); // addr , freq , i2c group , resolution , rst
This class is from the library HT_SSD1306Wire.h, and a derived class of ScreenDisplay.
In, for example, UIDemo, which is in the ESP32_LoRa_V3 Examples, the following is used:
class OLEDDisplayUi {
private:
OLEDDisplay *display;
This is a subclass of OLEDDisplay, which is found in OLEDDisplay.h. This library is in a general ESP32 ESP8266 driver library.
In minimal_demo, which again is in the same ESP32_LoRa_V3 Examples, we have:
heltec_setup();
which comes from heltec_unofficial.h, which is in the device-specific library. It includes SSD1306Wire.h and OLEDDisplayUi.h. We have there:
SSD1306Wire display(0x3c, SDA_OLED, SCL_OLED, DISPLAY_GEOMETRY);
Note that this is from SSD1306Wire, not HT_SSD1306Wire, and comes from the generic driver library. It also subclasses OLEDDisplay.
Anyway, my point is that I don’t want to chase all of this crap down. It’s obviously not been maintained, and at the end of the day, I just need something that will work. I have the display and hardware up using micropython anyway, so I probably won’t be messing at all with these libraries once I have that running.