The I2C Wiring

The SSD1306 communicates over I2C, which only needs two data lines (SDA and SCL) plus power and ground. If you've already built the RTC Clock tutorial, this is the exact same screen wiring — you can reuse that breadboard.

ESP32-S3 GPIO 8: SDA
ESP32-S3 GPIO 9: SCL
VCC Pin: 3.3V
GND Pin: Ground

The Arduino Source Code

Install the Adafruit_SSD1306 and Adafruit_GFX libraries via the Library Manager first. Most SSD1306 modules use I2C address 0x3C — check your module's datasheet if the screen stays blank.

// ESP32-S3 OLED Hello World Tutorial - CircuitHub.pro
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET    -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  Serial.begin(115200);

  // Custom ESP32-S3 I2C pins (SDA=8, SCL=9)
  Wire.begin(8, 9);

  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for (;;);
  }

  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 20);
  display.println("Hello,");
  display.println("CircuitHub!");
  display.display();
}

void loop() {
  // Nothing needed here - the static text stays on screen
}

Required Components

Just two parts beyond your dev board:

ESP32-S3 DevKitC-1 Buy Board
SSD1306 128x64 OLED Buy Screen

🚀 Take It Further

Try combining this with the Potentiometer tutorial: read the pot's ADC value and print it live to the OLED instead of the Serial Monitor, using display.clearDisplay() at the start of every loop to avoid overlapping text.