# Adafruit Monochrome 1.12" 128x128 OLED Graphic Display

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/106/423/medium800thumb/adafruit_products_1_12_OLED_shapes.jpg?1636580694)

This OLED goes out to all the fans who want _more pixels in a smaller size_! Normally our 128x64 OLEDs are the biggest ones we've stocked that can use I2C. This one is a whopping 128x128 pixels in crisp monochrome.

![](https://cdn-learn.adafruit.com/assets/assets/000/106/368/medium800/adafruit_products_1_12_OLED_top.jpg?1636480966)

This display is a petite 1.12" diagonal, but very readable due to the high contrast of an OLED display. This display is made of 128x128 individual white OLED pixels, each one is turned on or off by the controller chip. Because the display makes its own light, no backlight is required. This reduces the power required to run the OLED and is why the display has such high contrast; we really like these miniature displays for their crispness!

![](https://cdn-learn.adafruit.com/assets/assets/000/106/362/medium800/adafruit_products_1_12_OLED_back_angle.jpg?1636480498)

The driver chip, SSD1107 can communicate in two ways: I2C or SPI. The OLED itself requires a 3.3V and 12V power supply and 3.3V logic levels for communication. We include a 3.3V regulator and 12V boost converter, and all pins are fully level shifted so you can use with 3V _or_ 5V devices!

![](https://cdn-learn.adafruit.com/assets/assets/000/106/364/medium800/adafruit_products_1_12_OLED_STEMMA_side.jpg?1636480516)

If you are using I2C, we've included [SparkFun qwiic](https://www.sparkfun.com/qwiic) compatible**&nbsp;[STEMMA QT](https://learn.adafruit.com/introducing-adafruit-stemma-qt)**&nbsp;connectors for the I2C bus so **you don't even need to solder!** Plug and play with any board that has a Qwiic or STEMMA QT connector for effortless prototyping and development.&nbsp;[**QT Cable is not included** , but we have a variety in the shop](https://www.adafruit.com/?q=stemma+qt+cable&sort=BestMatch).&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/106/365/medium800/adafruit_products_1_12_OLED_back.jpg?1636480526)

This display, being 128x128 pixels, requires 128 \* 128 = 2KB of SRAM just to buffer the display. So **you can't use it with a small chip such as the Arduino UNO** (ATmega328 or 32u4). Pick a microcontroller or microcomputer with 16KB+ RAM - a SAMD21, SAMD51, ESP, nRF52, Teensy, etc. will do an excellent job. As long as you have I2C or SPI interface available, you're good to go - SPI will be much faster but I2C requires fewer pins.

[We have both Arduino](https://github.com/adafruit/Adafruit_SH110x) and [CircuitPython support](https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_SH1107) for this display chipset (SH1107).

![](https://cdn-learn.adafruit.com/assets/assets/000/106/367/medium800/adafruit_products_1_12_OLED_connected.jpg?1636480950)

Please note that OLED displays are made of hundreds of...OLEDs! That means each pixel is a little organic LED, and if it's kept on for over 1000 hours, it'll start to dim. If you want to keep the display uniformly bright, please turn off the display (set the pixels off) when it isn't needed to keep them from dimming.

![](https://cdn-learn.adafruit.com/assets/assets/000/106/363/medium800/adafruit_products_1_12_OLED_top_header.jpg?1636480508)

# Adafruit Monochrome 1.12" 128x128 OLED Graphic Display

## Pinouts

![](https://cdn-learn.adafruit.com/assets/assets/000/106/370/medium800/adafruit_products_1_12_OLED_pinouts.jpg?1636481195)

## Power Pins
- **GND&nbsp;** - this is the power and signal ground pin
- **Vin** &nbsp;- this is the power pin, connect to 3-5VDC - it has reverse polarity protection but try to wire it right!
- **3Vo** - this is the 3.3V output from the onboard regulator, you can 'borrow' about 100mA if you need to power some other 3.3V logic devices

![adafruit_products_1_12_OLED_pinouts_power.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/376/medium640/adafruit_products_1_12_OLED_pinouts_power.jpg?1636490208)

## STEMMA QT Connectors
- The display comes with two **STEMMA QT ports**. These connectors allow you to connect to development boards with **STEMMA QT** connectors or to other things with&nbsp;[various associated accessories](https://www.adafruit.com/?q=JST%20SH%204). Since they are connected in parallel, either side can be used as an input or output. They can be used to daisychain multiple STEMMA QT breakouts.

![adafruit_products_1_12_OLED_pinouts_STEMMA.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/375/medium640/adafruit_products_1_12_OLED_pinouts_STEMMA.jpg?1636489940)

## I2C Pins
- **Clk** - this is the Clock pin. Connect to **I2C SCL**
- **Data** - this is the Data pin. Connect to **I2C SDA**

![adafruit_products_1_12_OLED_pinouts_I2C.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/377/medium640/adafruit_products_1_12_OLED_pinouts_I2C.jpg?1636490368)

## SPI Pins
- **CS** &nbsp;- this is the Chip Select&nbsp;pin, it is used by SPI to select the device.
- **DC** - this is the Data/Command selector pin used to differentiate between Data and Commands that are sent to the display.
- **Clk** - this is the Clock pin. Connect to **SPI SCLK**
- **Data** - this is the Data pin. Connect to **SPI MOSI**

![adafruit_products_1_12_OLED_pinouts_SPI.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/378/medium640/adafruit_products_1_12_OLED_pinouts_SPI.jpg?1636490444)

## I2C and SPI Jumpers
Warning: 

You'll notice there are two open jumpers on the back towards the center of the board.

- To use in I2C mode, you'll want to make sure the **J1** jumper is open. To use in SPI mode, you'll want to bridge the J1 jumper. The board comes in I2C mode by default.
- The **A0 jumper** is used for setting the I2C address. When it is open, the I2C address is `0x3D`. When it is bridged, the I2C Address is `0x3C`. Alternatively, by tying the A0 pin to ground, you can set the I2C address to `0x3C`.

![adafruit_products_1_12_OLED_pinouts_jumpers.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/379/medium640/adafruit_products_1_12_OLED_pinouts_jumpers.jpg?1636490540)

## LED Disable Pad
- Above the "on" LED on the left side of the back of the board is a closed jumper. If you want to disable the power LED, you can cut the trace here. After cutting the trace, if you wish to enable it again, you can solder the jumper closed.

![adafruit_products_1_12_OLED_pinouts_LED_pad.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/380/medium640/adafruit_products_1_12_OLED_pinouts_LED_pad.jpg?1636490787)

## RST Pin
- **Rst** &nbsp;- this is the Reset&nbsp;pin, you may be able to share this with your microcontroller reset pin but if you can, connect it to a digital pin.

![adafruit_products_1_12_OLED_pinouts_RST.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/381/medium640/adafruit_products_1_12_OLED_pinouts_RST.jpg?1636490878)

# Adafruit Monochrome 1.12" 128x128 OLED Graphic Display

## CircuitPython

It's easy to use the Monochrome 1.12" 128x128 OLED with Python or CircuitPython, and the [Adafruit CircuitPython DisplayIO SH1107](https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_SH1107) module. This module allows you to easily write Python code that controls the Monochrome 1.12" 128x128 OLED graphic display.

## CircuitPython Microcontroller Wiring

First wire up your OLED to your board exactly as shown below. Here's an example of wiring a Feather M4 to the display with I2C using one of the handy [**STEMMA QT**](https://learn.adafruit.com/introducing-adafruit-stemma-qt) connectors:

- **Board 3V** &nbsp;to **display VIN (red wire)**
- **Board GND** &nbsp;to&nbsp;**display GND (black wire)**
- **Board SCL** &nbsp;to&nbsp;**display Clk (yellow wire)**
- **Board SDA** &nbsp;to&nbsp;**display Data (blue wire)**

![adafruit_products_1_12_OLED_Feather_I2C_STEMMA_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/576/medium640/adafruit_products_1_12_OLED_Feather_I2C_STEMMA_bb.jpg?1637177526)

You can also use the standard **0.100" pitch** headers to wire it up via I2C on a breadboard:

- **Board 3V** &nbsp;to **display VIN (red wire)**
- **Board GND** &nbsp;to&nbsp;**display GND (black wire)**
- **Board SCL** &nbsp;to&nbsp;**display Clk (yellow wire)**
- **Board SDA** &nbsp;to&nbsp;**display Data (blue wire)**

![adafruit_products_1_12_OLED_Feather_I2C_breadboard_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/427/medium640/adafruit_products_1_12_OLED_Feather_I2C_breadboard_bb.jpg?1636583824)

You can also use the standard **0.100" pitch** headers to wire it up via SPI on a breadboard:

Warning: 

- **Board 3V** &nbsp;to **display VIN (red wire)**
- **Board GND** &nbsp;to&nbsp;**display GND (black wire)**
- **Board SCK** to&nbsp;**display Clk (yellow wire)**
- **Board MOSI** to&nbsp;**display Data (blue wire)**
- **Board D5** to **display CS (orange wire)**  
- **Board D6** to **display DC (green wire)**  
- **Board D9** to **display Rst (purple wire)**  

![adafruit_products_1_12_OLED_Feather_SPI_breadboard_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/428/medium640/adafruit_products_1_12_OLED_Feather_SPI_breadboard_bb.jpg?1636583850)

## CircuitPython Usage

To use with CircuitPython, you need to first install the DisplayIO SH1107 library into the **lib** folder on your **CIRCUITPY** drive. This example also requires the Display Text library. Then you need to update **code.py** with the example script.

Thankfully, we can do this in one go. In the example below, click the **Download Project Bundle** button below to download the necessary libraries and the **code.py** file in a zip file. Extract the contents of the zip file, and copy the **entire**  **lib**  **folder** and the **code.py** file to your **CIRCUITPY** drive.

Your **CIRCUITPY/lib** folder should contain the following folder and file:

- **adafruit\_displayio\_sh1107.mpy**
- **adafruit\_display\_text/**

## Example Code
This example defaults to using I2C. To use with SPI, comment out the I2C setup, and uncomment the SPI setup.

Warning: 

https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_SH1107/blob/main/examples/displayio_sh1107_mono_128x128_test.py

![](https://cdn-learn.adafruit.com/assets/assets/000/106/593/medium800/adafruit_products_1_12_OLED_CircuitPython.jpg?1637184289)

Once everything is saved to the **CIRCUITPY** drive, you should see the display change!

That's all there is to using the Monochrome 1.12" 128x128 OLED Graphic Display with CircuitPython!

# Adafruit Monochrome 1.12" 128x128 OLED Graphic Display

## Python Docs

# Adafruit Monochrome 1.12" 128x128 OLED Graphic Display

## Arduino

Using the&nbsp;Monochrome 1.12" 128x128 OLED Graphic Display with Arduino involves wiring up the display to your Arduino-compatible microcontroller, installing the [Adafruit SH110x](https://github.com/adafruit/Adafruit_SH110x) library and running the provided example code.

This display, being 128x128 pixels, requires 128 \* 128 = 2KB of SRAM just to buffer the display. So **you can't use it with a small chip such as the Arduino UNO** (ATmega328 or 32u4). Pick a microcontroller or microcomputer with 16KB+ RAM - a SAMD21, SAMD51, ESP, nRF52, Teensy, etc. will do an excellent job. As long as you have I2C or SPI interface available, you're good to go - SPI will be much faster but I2C requires fewer pins.

## Wiring

Here is how to wire up the display via I2C using one of the [**STEMMA QT**](https://learn.adafruit.com/introducing-adafruit-stemma-qt) connectors. The examples show a Metro but wiring will work the same for an Arduino or other compatible board.

- Connect&nbsp;**Vin (red wire)**&nbsp;to the power supply, 3-5V is fine. Use the same voltage that the microcontroller logic is based off of. For most Arduinos, that is 5V
- Connect&nbsp;**GND (black wire)&nbsp;**to common power/data ground
- Connect the&nbsp;**Clk (yellow wire)**&nbsp;pin to the I2C clock&nbsp; **SCL** &nbsp;pin on your Arduino.   
- Connect the&nbsp;**Data (blue wire)**&nbsp;pin to the I2C data&nbsp; **SDA&nbsp;** pin on your Arduino.

![adafruit_products_1_12_OLED_Arduino_I2C_STEMMA_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/429/medium640/adafruit_products_1_12_OLED_Arduino_I2C_STEMMA_bb.jpg?1636583952)

Here is how to wire the display via I2C to a board using a solderless breadboard:

- Connect&nbsp;**Vin (red wire)**&nbsp;to the power supply, 3-5V is fine. Use the same voltage that the microcontroller logic is based off of. For most Arduinos, that is 5V
- Connect&nbsp;**GND (black wire)&nbsp;**to common power/data ground
- Connect the&nbsp;**Clk (yellow wire)**&nbsp;pin to the I2C clock&nbsp; **SCL** &nbsp;pin on your Arduino.   
- Connect the&nbsp;**Data (blue wire)**&nbsp;pin to the I2C data&nbsp; **SDA&nbsp;** pin on your Arduino.

![adafruit_products_1_12_OLED_Arduino_I2C_breadboard_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/430/medium640/adafruit_products_1_12_OLED_Arduino_I2C_breadboard_bb.jpg?1636584072)

Here is how to wire the display via SPI to a board using a solderless breadboard:

Warning: 

- Connect&nbsp; **Vin** to the power supply, 3-5V is fine. Use the same voltage that the microcontroller logic is based off of. For most Arduinos, that is 5V
- Connect&nbsp; **GND** to common power/data ground
- Connect the&nbsp; **Clk** pin to the SPI clock&nbsp; **SCK** &nbsp;pin on your Arduino. On the Metro, you'll want to use the **ICSP Header Pin 3**.   
- Connect the&nbsp; **Data** &nbsp;pin to the SPI data&nbsp; **MOSI&nbsp;** pin on your Arduino. On the Metro, you'll want to use the **ICSP Header Pin 4**. 
- Connect the **DC** pin to **D8** on the Arduino and similar shaped boards. If you don't have this pin on your Microcontroller, feel free to use a different one and update the example.
- Connect the **CS** pin to **D10** on the Arduino and similar shaped boards. If you don't have this pin on your Microcontroller, feel free to use a different one and update the example.

![adafruit_products_1_12_OLED_Arduino_SPI_breadboard_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/106/431/medium640/adafruit_products_1_12_OLED_Arduino_SPI_breadboard_bb.jpg?1636584110)

## Library Installation

You can install the **Adafruit SH110x** library for Arduino using the Library Manager in the Arduino IDE.

![](https://cdn-learn.adafruit.com/assets/assets/000/106/420/medium800/adafruit_products_Arduino_Open_Library_Manager.png?1636577714)

Click the&nbsp; **Manage Libraries ...** menu item, search for **SH1107** , and select the **Adafruit SSH110x** library, and install the latest version:

![](https://cdn-learn.adafruit.com/assets/assets/000/106/421/medium800/adafruit_products_1_12_OLED_Arduino_lib_install.png?1636577835)

When asked to install the dependencies, click **Install all**.

![](https://cdn-learn.adafruit.com/assets/assets/000/106/422/medium800/adafruit_products_1_12_OLED_Arduino_dependency_install.png?1636577858)

## Load Example

Open up&nbsp; **File -\> Examples -\> Adafruit SH110x -\> SH1107\_128x128**

https://github.com/adafruit/Adafruit_SH110x/blob/master/examples/SH1107_128x128/SH1107_128x128.ino

![](https://cdn-learn.adafruit.com/assets/assets/000/106/594/medium800thumb/adafruit_products_1_12_OLED_lines_adafruit.jpg?1637184823)

# Adafruit Monochrome 1.12" 128x128 OLED Graphic Display

## Arduino Docs

# Adafruit Monochrome 1.12" 128x128 OLED Graphic Display

## Downloads

## Files

- [SH1107 datasheet](https://cdn-learn.adafruit.com/assets/assets/000/094/580/original/SH1107_datasheet.pdf?1599165309)
- [EagleCAD PCB files on GitHub](https://github.com/adafruit/Adafruit-1.12in-128x128-OLED-PCB)
- [Fritzing object in the Adafruit Fritzing Library](https://github.com/adafruit/Fritzing-Library/blob/master/parts/Adafruit%20Monochrome%201.12in%20128x128%20OLED.fzpz)

# Schematic and Fab Print
![](https://cdn-learn.adafruit.com/assets/assets/000/106/382/medium800/adafruit_products_1_12_OLED_sch.png?1636492620)

![](https://cdn-learn.adafruit.com/assets/assets/000/106/383/medium800/adafruit_products_1_12_OLED_fab_print.png?1636492628)


## Primary Products

### Adafruit Monochrome 1.12" 128x128 OLED Graphic Display

[Adafruit Monochrome 1.12" 128x128 OLED Graphic Display](https://www.adafruit.com/product/5297)
This OLED goes out to all the fans who want _more pixels in a smaller size_! Normally our 128x64 OLEDs are the biggest ones we've stocked that can use I2C. This one is a whopping 128x128 pixels in crisp monochrome.

This display is a petite 1.12" diagonal, but very...

Out of Stock
[Buy Now](https://www.adafruit.com/product/5297)
[Related Guides to the Product](https://learn.adafruit.com/products/5297/guides)

## Featured Products

### STEMMA QT / Qwiic JST SH 4-Pin Cable - 50mm Long

[STEMMA QT / Qwiic JST SH 4-Pin Cable - 50mm Long](https://www.adafruit.com/product/4399)
This 4-wire cable is&nbsp;50mm / 1.9" long and fitted with JST SH female 4-pin connectors on both ends. Compared with the chunkier JST PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert and remove.

<a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/4399)
[Related Guides to the Product](https://learn.adafruit.com/products/4399/guides)
### STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long

[STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long](https://www.adafruit.com/product/4210)
This 4-wire cable is a little over 100mm / 4" long and fitted with JST-SH female 4-pin connectors on both ends. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert and remove.

<a...></a...>

Out of Stock
[Buy Now](https://www.adafruit.com/product/4210)
[Related Guides to the Product](https://learn.adafruit.com/products/4210/guides)

## Related Guides

- [0.96" mini Color OLED](https://learn.adafruit.com/096-mini-color-oled.md)
- [Raspberry Pi Care and Troubleshooting](https://learn.adafruit.com/raspberry-pi-care-and-troubleshooting.md)
- [Adafruit PCF8574 I2C GPIO Expander](https://learn.adafruit.com/adafruit-pcf8574.md)
- [Adafruit ISO1540 Bidirectional I2C Isolator](https://learn.adafruit.com/adafruit-iso1540-bidirectional-i2c-isolator.md)
- [Adafruit I2C QT Rotary Encoder](https://learn.adafruit.com/adafruit-i2c-qt-rotary-encoder.md)
- [Adafruit ESP32-S3 TFT Feather](https://learn.adafruit.com/adafruit-esp32-s3-tft-feather.md)
- [Split Ortho Keyboard with TCA8418 Matrix Expanders](https://learn.adafruit.com/split-ortho-keyboard.md)
- [Adafruit Circuit Playground Tri-Color E-Ink Gizmo](https://learn.adafruit.com/adafruit-circuit-playground-tri-color-e-ink-gizmo.md)
- [Adafruit Mini GPS PA1010D Module](https://learn.adafruit.com/adafruit-mini-gps-pa1010d-module.md)
- [Adafruit High Power Infrared LED Emitter](https://learn.adafruit.com/adafruit-high-power-infrared-led-emitter.md)
- [Adafruit STEMMA Piezo Driver Amp](https://learn.adafruit.com/adafruit-stemma-piezo-driver-amp.md)
- [Adafruit Feather RP2040 RFM95](https://learn.adafruit.com/feather-rp2040-rfm95.md)
- [No-Code WipperSnapper Water Detection](https://learn.adafruit.com/water-detection-with-wippersnapper.md)
- [Adafruit QT Py CH32V203](https://learn.adafruit.com/adafruit-qt-py-ch32v203.md)
- [Wizzy: A Needle Felted Cat](https://learn.adafruit.com/wizzy-a-needle-felted-cat.md)
