- Optimized for code size
- Most options can be disabled, compiled in or enabled dynamically
Adafruit_SSD1306.h
// do not include splash screen to safe space
#ifndef ADAFRUIT_SSD1306_DISPLAY_SPLASH
# define ADAFRUIT_SSD1306_DISPLAY_SPLASH 0
#endif
// support for SSD1306_NO_SPLASH
#ifdef SSD1306_NO_SPLASH
# undef ADAFRUIT_SSD1306_DISPLAY_SPLASH
# define ADAFRUIT_SSD1306_DISPLAY_SPLASH 0
#endif
// remove code for SPI
#ifndef ADAFRUIT_SSD1306_NO_SPI
# define ADAFRUIT_SSD1306_NO_SPI 1
#endif
// remove destructor from class
#ifndef ADAFRUIT_SSD1306_NO_DESTRUCTOR
# define ADAFRUIT_SSD1306_NO_DESTRUCTOR 1
#endif
// remove code to change clock speed
#ifndef ADAFRUIT_SSD1306_WIRE_SET_CLOCK
# define ADAFRUIT_SSD1306_WIRE_SET_CLOCK 0
#endif
// remove code for wire variable and use Wire
#ifndef ADAFRUIT_SSD1306_FIXED_WIRE
# define ADAFRUIT_SSD1306_FIXED_WIRE 1
#endif
// set fixed vcc state
#ifndef ADAFRUIT_SSD1306_FIXED_VCCSTATE
# define ADAFRUIT_SSD1306_FIXED_VCCSTATE 1
#endif
// remove variable
#ifndef ADAFRUIT_SSD1306_VCCSTATE
# define ADAFRUIT_SSD1306_VCCSTATE SSD1306_SWITCHCAPVCC
#endif
// set fixed rotation 0-3 or -1 for reading it from the GFX class
#ifndef ADAFRUIT_SSD1306_FIXED_ROTATION
# define ADAFRUIT_SSD1306_FIXED_ROTATION 0
#endif
This is a library for our Monochrome OLEDs based on SSD1306 drivers
Pick one up today in the adafruit shop! ------> http://www.adafruit.com/category/63_98
These displays use I2C or SPI to communicate, 2 to 5 pins are required to interface.
Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries, with contributions from the open source community. Scrolling code contributed by Michael Gregg. Dynamic buffer allocation based on work by Andrew Canaday. BSD license, check license.txt for more information. All text above must be included in any redistribution
Preferred installation method is to use the Arduino IDE Library Manager. To download the source from Github instead, click "Clone or download" above, then "Download ZIP." After uncompressing, rename the resulting folder Adafruit_SSD1306. Check that the Adafruit_SSD1306 folder contains Adafruit_SSD1306.cpp and Adafruit_SSD1306.h.
You will also have to install the Adafruit GFX library which provides graphics primitves such as lines, circles, text, etc. This also can be found in the Arduino Library Manager, or you can get the source from https://github.com/adafruit/Adafruit-GFX-Library
Pull Request: (September 2019)
- new #defines for SSD1306_BLACK, SSD1306_WHITE and SSD1306_INVERSE that match existing #define naming scheme and won't conflict with common color names
- old #defines for BLACK, WHITE and INVERSE kept for backwards compat (opt-out with #define NO_ADAFRUIT_SSD1306_COLOR_COMPATIBILITY)
Version 1.2 (November 2018) introduces some significant changes:
- Display dimensions are now specified in the constructor...you no longer need to edit the .h file for different screens (though old sketches can continue to work that way).
- SPI transactions are used and SPI bitrate can be specified (both require Arduino 1.6 or later).
- SPI and Wire (I2C) interfaces other than the defaults are supported.
MCU | Tested Works | Doesn't Work | Not Tested | Notes |
---|---|---|---|---|
Atmega328 | X | |||
Atmega32u4 | X | |||
Atmega2560 | X | |||
ESP8266 | X | Change OLED_RESET to different pin if using default I2C pins D4/D5. | ||
ESP32 | X | |||
ATSAM3X8E | X | |||
ATSAM21D | X | |||
Intel Curie | X | |||
WICED | X | No hardware SPI - bitbang only | ||
ATtiny85 | X |
- ATmega328 : Arduino UNO, Adafruit Pro Trinket, Adafruit Metro 328, Adafruit Metro Mini
- ATmega32u4 : Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.0, Adafruit Flora, Bluefruit Micro
- ATmega2560 : Arduino Mega
- ESP8266 : Adafruit Huzzah
- ATSAM3X8E : Arduino Due
- ATSAM21D : Arduino Zero, M0 Pro, Adafruit Metro Express, Feather M0
- ATtiny85 : Adafruit Gemma, Arduino Gemma, Adafruit Trinket