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
Jobit Joseph
- v1.0.1 - Current release
- Bug Fix
- v1.0.0 - Initial release