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();
}