Skip to product information
1 of 3

Axiometa

I²C OLED Display Module (128 × 64, SSD1306)

I²C OLED Display Module (128 × 64, SSD1306)

SKU:DSP0001

Regular price $9.99
Regular price Sale price $9.99
Sale Sold out
Taxes included. Shipping calculated at checkout.

Drop a sharp, monochrome dashboard into almost any build with this tiny OLED board. A 0.96-inch 128 × 64-pixel panel sits on a rectangular carrier no bigger than a postage stamp, driven by the ubiquitous SSD1306 controller over a simple two-wire I²C link. Just supply 3 V–5 V, connect SDA and SCL, and start drawing icons, graphs, or scrolling text with off-the-shelf libraries for Arduino, MicroPython, CircuitPython, or MicroBlocks.

View full details
  • Technical Details

    - 4× ⌀2.7 mm Mounting Holes
    - 3.3 V or 5.0 V
    - StemmaQT Connectors
    - 128 × 64 white-on-black pixels (SSD1306 driver)
    - I²C default address 0x3C (jumper-select 0x3D)
    - Arduino IDE Compatible
    - MicroPython Compatible
    - MicroBlocks Compatible

    Material Datasheet 
  • Pinout

  • Interface

  • Top

  • Bottom

Arduino Example Code

example.ino
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128  // OLED display width, in pixels
#define SCREEN_HEIGHT 64  // OLED display height, in pixels

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

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

  //Wire.begin(47, 48); // For Genesis ESP32-S3 Only
  screenSetup();
}

void loop() {
  display.clearDisplay();
  bouncingText();
  delay(1000);

  display.clearDisplay();
  rotatingCube();
  delay(1000);

  display.clearDisplay();
  rotatingTesseract();
  delay(1000);

  display.clearDisplay();
  rotatingSaturn();
  delay(1000);

  display.clearDisplay();
  earthAndMoon();
  delay(1000);
}

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

void bouncingText() {
  static int x = 0;
  static int y = 0;
  static int xSpeed = 2;
  static int ySpeed = 2;

  x += xSpeed;
  y += ySpeed;

  if (x <= 0 || x >= SCREEN_WIDTH - 60) xSpeed = -xSpeed;
  if (y <= 0 || y >= SCREEN_HEIGHT - 16) ySpeed = -ySpeed;

  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(x, y);
  display.println("AXIO");
  display.setCursor(x, y + 16);
  display.println("META");

  display.display();
}

void rotatingCube() {
  static int angle = 0;
  angle = (angle + 5) % 360;

  int centerX = SCREEN_WIDTH / 2;
  int centerY = SCREEN_HEIGHT / 2;
  int size = 20;

  display.drawLine(centerX - size, centerY - size, centerX + size, centerY - size, WHITE);
  display.drawLine(centerX + size, centerY - size, centerX + size, centerY + size, WHITE);
  display.drawLine(centerX + size, centerY + size, centerX - size, centerY + size, WHITE);
  display.drawLine(centerX - size, centerY + size, centerX - size, centerY - size, WHITE);

  display.drawLine(centerX - size / 2, centerY - size / 2, centerX + size / 2, centerY - size / 2, WHITE);
  display.drawLine(centerX + size / 2, centerY - size / 2, centerX + size / 2, centerY + size / 2, WHITE);
  display.drawLine(centerX + size / 2, centerY + size / 2, centerX - size / 2, centerY + size / 2, WHITE);
  display.drawLine(centerX - size / 2, centerY + size / 2, centerX - size / 2, centerY - size / 2, WHITE);

  display.display();
}

void rotatingTesseract() {
  static int angle = 0;
  angle = (angle + 5) % 360;

  int centerX = SCREEN_WIDTH / 2;
  int centerY = SCREEN_HEIGHT / 2;
  int size = 20;

  for (int i = 0; i < 4; i++) {
    int offset = i * (size / 4);
    display.drawLine(centerX - size + offset, centerY - size + offset, centerX + size - offset, centerY - size + offset, WHITE);
    display.drawLine(centerX + size - offset, centerY - size + offset, centerX + size - offset, centerY + size - offset, WHITE);
    display.drawLine(centerX + size - offset, centerY + size - offset, centerX - size + offset, centerY + size - offset, WHITE);
    display.drawLine(centerX - size + offset, centerY + size - offset, centerX - size + offset, centerY - size + offset, WHITE);
  }

  display.display();
}

void rotatingSaturn() {
  static int angle = 0;
  angle = (angle + 5) % 360;

  int centerX = SCREEN_WIDTH / 2;
  int centerY = SCREEN_HEIGHT / 2;
  int radius = 20;

  display.drawCircle(centerX, centerY, radius, WHITE);

  for (int i = 0; i < 4; i++) {
    int offset = i * (radius / 4);
    display.drawCircle(centerX, centerY, radius + offset, WHITE);
    display.drawCircle(centerX, centerY, radius / 2 + offset, WHITE);
  }

  display.display();
}

void earthAndMoon() {
  static int moonX = 10;
  static int moonY = SCREEN_HEIGHT / 2;
  static int moonSpeed = 2;

  moonX += moonSpeed;
  if (moonX > SCREEN_WIDTH) moonX = -10;

  int earthX = SCREEN_WIDTH / 2;
  int earthY = SCREEN_HEIGHT / 2;

  display.drawCircle(earthX, earthY, 10, WHITE);
  display.drawCircle(moonX, moonY, 5, WHITE);

  display.display();
}

        
  • First time setup

    Pair text with an image to focus on your chosen product, collection, or blog post. Add details on availability, style, or even provide a review.

  • Automatic Street Lights

    Pair text with an image to focus on your chosen product, collection, or blog post. Add details on availability, style, or even provide a review.

  • How Does an LDR work ?

    Pair text with an image to focus on your chosen product, collection, or blog post. Add details on availability, style, or even provide a review.