A lightweight, feature-rich Arduino library for SSD1306 OLED displays that uses only the Wire library. Perfect for projects requiring minimal memory usage and no external dependencies.
- ✅ Wire Library Only - No heavy graphics libraries required
- ✅ Multiple Display Sizes - Supports 128x64 and 128x32 displays
- ✅ Configurable I2C Address - Works with 0x3C and 0x3D addresses
- ✅ Text Rendering - Built-in 5x7 font with position control
- ✅ Graphics Functions - Lines, rectangles, circles, pixels
- ✅ Image Support - Bitmap and XBM format images
- ✅ Memory Efficient - Optimized for Arduino Uno and similar boards
- ✅ Easy to Use - Simple, intuitive API
- Open Arduino IDE
- Navigate to Library Manager
Tools → Manage Libraries... (or Ctrl+Shift+I)
- Search for GeoLinker
- Type "GeoLinker" in the search box
- Install version 1.0.2
- Include with
#include <SimpleOLED.h>
- Download the library files
- Place in
Arduino/libraries/SimpleOLED/
- Restart Arduino IDE
- Include with
#include <SimpleOLED.h>
Add to your platformio.ini
:
lib_deps =
SimpleOLED
#include <SimpleOLED.h>
SimpleOLED display; // Default: 0x3C, 128x64
void setup() {
display.begin();
display.clear();
display.println(0, 0, "Hello World!");
display.display();
}
void loop() {
// Your code here
}
OLED Pin | Arduino Uno | ESP32 | ESP8266 |
---|---|---|---|
VCC | 3.3V/5V | 3.3V | 3.3V |
GND | GND | GND | GND |
SDA | A4 | 21 | D2 |
SCL | A5 | 22 | D1 |
begin()
- Initialize displaydisplay()
- Update screen with bufferclear()
- Clear display buffersetSize(width, height)
- Set display dimensionssetAddress(address)
- Set I2C address
print(text)
/println(text)
- Print at cursorprint(x, y, text)
/println(x, y, text)
- Print at positionsetCursor(x, y)
- Set text cursor position
setPixel(x, y, color)
- Set individual pixeldrawLine(x0, y0, x1, y1)
- Draw linedrawRect(x, y, w, h)
- Draw rectangle outlinefillRect(x, y, w, h)
- Draw filled rectangledrawCircle(x, y, radius)
- Draw circle
drawBitmap(x, y, bitmap, w, h)
- Draw bitmap imagedrawXBM(x, y, xbm, w, h)
- Draw XBM format image
display.clear();
display.println(0, 0, "Temperature:");
display.print(0, 16, "Value: ");
display.print(50, 16, 25.6, 1);
display.println(80, 16, " C");
display.display();
display.clear();
display.drawRect(10, 10, 50, 30, 1);
display.drawCircle(80, 25, 15, 1);
display.drawLine(0, 50, 127, 50, 1);
display.display();
// For 128x32 display
SimpleOLED display(0x3C, 128, 32);
// For different I2C address
SimpleOLED display(0x3D, 128, 64);
MIT License - Feel free to use in personal and commercial projects.
Copyright (C) 2025 Jobit Joseph, Semicon Media Pvt Ltd (Circuit Digest)
Jobit Joseph
- v1.0.1 - Current release
- Bug Fix
- v1.0.0 - Initial release