SH1107 Display does not Display at all

Post here about your Arduino projects, get help - for Adafruit customers!

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
Jargonist
 
Posts: 8
Joined: Mon Aug 29, 2022 3:12 pm

SH1107 Display does not Display at all

Post by Jargonist »

This display appears dead to me. Nothing displays on the screen at all. I do know if I should see any evidence it is powered up. Here is what I have done:

I have tried two methods of connecting this wing to a ESP32-S3 Feather:
1. Using stacking headers
2. Using the four position feather socket

I have checked my soldering. Looks good to me! Photos are attached.
I have checked power, it is good.
I can see the display board at its expected address using the I2C scanner sketch.

I am using a version of the display test sketch. I get the expected serial output and the four buttons on the wing all work as expected. But nothing is every displayed on the display. I have used longer delays in my sketch in case it is a timing issue. One note I had to remove the conditional #define code that selects the feather board and sets the pin numbers. With the conditional defines in place the processor seems to reboot continuously. But with the correct defines entered manually is does not crash and the buttons all work. Here is my test sketch:

Code: Select all

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>

Adafruit_SH1107 display = Adafruit_SH1107(64, 128, &Wire);

// OLED FeatherWing buttons map to different pins depending on board: ESP32-S3

  #define BUTTON_A  9
  #define BUTTON_B  6
  #define BUTTON_C  5


void setup() {
  Serial.begin();
  delay(2000);

  Serial.println("128x64 OLED FeatherWing test");
  delay(2000); // wait for the OLED to power up
  display.begin(0x3C, true); // Address 0x3C default
  delay(2000);
  Serial.println("OLED begun");

  // Show image buffer on the display hardware.
  // Since the buffer is intialized with an Adafruit splashscreen
  // internally, this will display the splashscreen.
  display.display();
  delay(1000);

  // Clear the buffer.
  display.clearDisplay();
  display.display();

  display.setRotation(1);
  Serial.println("Button test message");

  pinMode(BUTTON_A, INPUT_PULLUP);
  pinMode(BUTTON_B, INPUT_PULLUP);
  pinMode(BUTTON_C, INPUT_PULLUP);

  // text display tests
  display.setTextSize(1);
  display.setTextColor(SH110X_WHITE);
  display.setCursor(0,0);
  display.print("Connecting to SSID\n'adafruit':");
  display.print("connected!");
  display.println("IP: 10.0.1.23");
  display.println("Sending val #0");
  display.display(); // actually display all of the above
}

void loop() {
  if(!digitalRead(BUTTON_A)) {
    display.print("A");
    Serial.println("Button A"); }
    
  if(!digitalRead(BUTTON_B)) {
    display.print("B");
    Serial.println("Button B"); }
  
  if(!digitalRead(BUTTON_C)) {
    display.print("C");
    Serial.println("Button C"); }
  
  delay(10);
  yield();
  display.display();
}

Looking for any next testing steps or for a replacement display.
Attachments
IMG_5769.jpg
IMG_5769.jpg (681.52 KiB) Viewed 459 times
IMG_5767.jpg
IMG_5767.jpg (556.55 KiB) Viewed 459 times
IMG_5765.jpg
IMG_5765.jpg (542.34 KiB) Viewed 459 times

User avatar
adafruit_support_carter
 
Posts: 29170
Joined: Tue Nov 29, 2016 2:45 pm

Re: SH1107 Display does not Display at all

Post by adafruit_support_carter »

The Feather ESP32-S3 has a dedicated power pin for the I2C bus. It's there for low power use cases. But making sure the power is enabled is still required for regular use. See general info here:
https://learn.adafruit.com/adafruit-esp ... er/pinouts
where it talks about the I2C pins:
There is an I2C power pin for the STEMMA QT connector (and the BME280, if present), which is on by default. It is available in CircuitPython as I2C_POWER, and in Arduino as PIN_I2C_POWER. To turn it off for low power usage, set the pin to output, and set it LOW to disable.
So just need to add a few lines of code to the top of the sketch to enable I2C power before trying to talk to the OLED.

Code: Select all

pinMode(PIN_I2C_POWER, OUTPUT);
digitalWrite(PIN_I2C_POWER, HIGH);
Guessing the I2C scanner sketch used also took care of that somehow.

User avatar
Jargonist
 
Posts: 8
Joined: Mon Aug 29, 2022 3:12 pm

Re: SH1107 Display does not Display at all

Post by Jargonist »

Thanks for the reply. I added this code for PIN_I2C_POWER and it did not change my results. I was able to confirm that with this code I can turn on and off power to the STEMMA QT connector on the EPS32 feather as expected. I used a BME280 sensor board and monitored its power LED. But the display wing is connected to the ESP32 via the header pins and is getting its power and I2C connection this way. I believe the power for this header connection is not switched on/off and is always on. I confirmed that by moving the BME280 sensor to the STEMMA QT connector on the display board and testing the PIN_I2C_POWER set both LOW and HIGH. In both cases the BME280 remains powered when connected to the display wing. I feel pretty confident that I have power to the display but still no display.

User avatar
adafruit_support_carter
 
Posts: 29170
Joined: Tue Nov 29, 2016 2:45 pm

Re: SH1107 Display does not Display at all

Post by adafruit_support_carter »

Hmm. Will it show up in an I2C scan?
https://learn.adafruit.com/scanning-i2c ... ng-testbed

User avatar
Jargonist
 
Posts: 8
Joined: Mon Aug 29, 2022 3:12 pm

Re: SH1107 Display does not Display at all

Post by Jargonist »

Yes. Here are the results:

13:32:39.533 -> Scanning...
13:32:39.533 -> I2C device found at address 0x0B !
13:32:39.571 -> I2C device found at address 0x3C !
13:32:39.644 -> I2C device found at address 0x77 !
13:32:39.644 -> done

The Display is 0x3C and is connected via the header pins to the ESP32-S3. Not STEMMA QT.
I have a BME280 plugged into the Display using STEMMA QT and that is 0x77
I assume the ESP32-S3 is the 0x0B device.

User avatar
Jargonist
 
Posts: 8
Joined: Mon Aug 29, 2022 3:12 pm

Re: SH1107 Display does not Display at all

Post by Jargonist »

Ping! Looking for some next steps here? I really suspect this device is DOA.

User avatar
adafruit_support_carter
 
Posts: 29170
Joined: Tue Nov 29, 2016 2:45 pm

Re: SH1107 Display does not Display at all

Post by adafruit_support_carter »

Is that your only Feather? Would help to rule this out being something unique to the -S3.

The I2C scan results look as expected. The 0x0B address is from the battery monitor included on the Feather.

User avatar
Jargonist
 
Posts: 8
Joined: Mon Aug 29, 2022 3:12 pm

Re: SH1107 Display does not Display at all

Post by Jargonist »

No. I have the following feathers (wings?) that all are functioning as expected with my ESP32-S3:
• GPS
• Data Logger with RTC
• Latching Relay 2923
• High Amp Blue Relay 3191
• Quad AlphaNum

I have had the display connected by itself and with several of the other wings. Only the display refuses to talk. Having the display connected does not seem to effect anything else.

User avatar
adafruit_support_carter
 
Posts: 29170
Joined: Tue Nov 29, 2016 2:45 pm

Re: SH1107 Display does not Display at all

Post by adafruit_support_carter »

Yep, those are all Feather Wings (add ons), not Feather main boards, like the Feather ESP32-S3. So seems like that's the only Feather available. At least good to know the other Wings are all working.

Can you try the example from the guide:
https://learn.adafruit.com/adafruit-128 ... duino-code
and see if that helps.

User avatar
Jargonist
 
Posts: 8
Joined: Mon Aug 29, 2022 3:12 pm

Re: SH1107 Display does not Display at all

Post by Jargonist »

Yes that sketch is the first thing I tried as the original post mentions. This sketch crashes the EPS32-S3 unless I force the button defines to be as follows:

#define BUTTON_A 9
#define BUTTON_B 6
#define BUTTON_C 5

Which is correct for the ESP32-S3.
I suspect something is wrong in the #define logic and it is identifying the wrong board and using the wrong button values. But once I force the button defines the sketch no longer crashed. However the the display still does not work. I can replace all Display.print calls with Serial.print calls and I can see the sketch is working and the buttons are working. I really think this display is DOA.

User avatar
adafruit_support_carter
 
Posts: 29170
Joined: Tue Nov 29, 2016 2:45 pm

Re: SH1107 Display does not Display at all

Post by adafruit_support_carter »

OK, let's replace it and see what happens.

Send an email to [email protected] with a link to this thread and your order number and they can send you a replacement FeatherWing OLED (PID 4650)

Locked
Please be positive and constructive with your questions and comments.

Return to “Arduino”