Grove - OLED Display 0.96 inch
Introduction
Grove - OLED Display 0.96” module is an OLED monochrome 128×64dot matrix display module with Grove 4pin I2C Interface.Comparing to LCD, OLED screens are more competitive, which has a number of advantages such as high brightness, self-emission, high contrast ratio, slim / thin outline, wide viewing angle, wide temperature range, and low power consumption. It has bigger screen so that it can display more contents than the OLED 96×96.
Features
- Grove compatible interface
- Communicate Mode:I2C
- Low power consumption
- Display Color: White
- Wide range of operating temperature:-20℃~70℃
Warning
Please notice: heavy impact or stress on the OLED will cause the breakdown of screen.
Tip
More details about Grove modules please refer to Grove System
Specifications
Items | Min | Norm | Max | Unit |
---|---|---|---|---|
Power Voltage (VCC) | 3.3 | 5.0 | 5.5 | V |
Driver IC | - | SSD1308Z | - | - |
Display Color | - | White | - | - |
Dot Matrix | - | 128×64 | - | - |
Panel Size | - | 26.7(W)×19.26(H) | - | mm |
Active Area | - | 21.74(W)×11.175 (H) | - | mm |
Dot Pitch | - | 0.17(W)×0.175 (H) | - | mm |
Dot Size | - | 0.15(W)×0.15 (H) | - | mm |
Wide range of operating temperature | - | -20~70 | - | ℃ |
Platforms Supported
Getting Started
With Arduino
Connection
The OLED128*64 uses all the pins of SSD1308 chip, the default original point is on the top left corner. You can also change the original point by adjusting the program and in order to display your desired patterns. For more details, please refer SSD1308_1.0.pdf and LY190-128064.pdf.
Here we demonstrate how to display “Hello World” on the screen.
First of all, We need to prepare the below stuffs:
Seeeduino V4 | Grove - OLED Display 0.96inch | Base Shield |
---|---|---|
![]() |
![]() |
![]() |
Get ONE Now | Get ONE Now | Get ONE Now |
- Plug the Grove OLED Display 128*64 onto the I2C port on Grove Base Shield, and then plug the Base Shield into Seeeduino;
Software
- Download Seeed OLED Display 128*64 library
- Please follow how to install an arduino library procedures to install library.
- Open the code directly by the path: File -> Example ->OLED_Display_128X64-master->OLED_Hello_World.
#include <Wire.h>
#include <SeeedOLED.h>
void setup()
{
Wire.begin();
SeeedOled.init(); //initialze SEEED OLED display
SeeedOled.clearDisplay(); //clear the screen and set start position to top left corner
SeeedOled.setNormalDisplay(); //Set display to normal mode (i.e non-inverse mode)
SeeedOled.setPageMode(); //Set addressing mode to Page Mode
SeeedOled.setTextXY(0,0); //Set the cursor to Xth Page, Yth Column
SeeedOled.putString("Hello World!"); //Print the String
}
void loop()
{
}
- Upload the code.
- We can see “hello world” on screen.
With Beaglebone Green
To begin editing programs that live on BBG, you can use the Cloud9 IDE and refer Beaglebone Green Wiki.
Here are the steps how to display “Hello World” on OLED.
Step1: Click the “+” in the top-right to create a new file.
Step2:Copy and paste the following code into the new tab
from Adafruit_I2C import Adafruit_I2C
import time
import math
Oled = Adafruit_I2C(0x3c)
Command_Mode=0x80
Data_mode=0x40
grayH= 0xF0
grayL= 0x0F
Normal_Display_Cmd=0xA4
BasicFont = [[0 for x in xrange(8)] for x in xrange(10)]
BasicFont=[[0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00],
[0x00,0x00,0x5F,0x00,0x00,0x00,0x00,0x00],
[0x00,0x00,0x07,0x00,0x07,0x00,0x00,0x00],
[0x00,0x14,0x7F,0x14,0x7F,0x14,0x00,0x00],
[0x00,0x24,0x2A,0x7F,0x2A,0x12,0x00,0x00],
[0x00,0x23,0x13,0x08,0x64,0x62,0x00,0x00],
[0x00,0x36,0x49,0x55,0x22,0x50,0x00,0x00],
[0x00,0x00,0x05,0x03,0x00,0x00,0x00,0x00],
[0x00,0x1C,0x22,0x41,0x00,0x00,0x00,0x00],
[0x00,0x41,0x22,0x1C,0x00,0x00,0x00,0x00],
[0x00,0x08,0x2A,0x1C,0x2A,0x08,0x00,0x00],
[0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00],
[0x00,0xA0,0x60,0x00,0x00,0x00,0x00,0x00],
[0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x00],
[0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00],
[0x00,0x20,0x10,0x08,0x04,0x02,0x00,0x00],
[0x00,0x3E,0x51,0x49,0x45,0x3E,0x00,0x00],
[0x00,0x00,0x42,0x7F,0x40,0x00,0x00,0x00],
[0x00,0x62,0x51,0x49,0x49,0x46,0x00,0x00],
[0x00,0x22,0x41,0x49,0x49,0x36,0x00,0x00],
[0x00,0x18,0x14,0x12,0x7F,0x10,0x00,0x00],
[0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00],
[0x00,0x3C,0x4A,0x49,0x49,0x30,0x00,0x00],
[0x00,0x01,0x71,0x09,0x05,0x03,0x00,0x00],
[0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00],
[0x00,0x06,0x49,0x49,0x29,0x1E,0x00,0x00],
[0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00],
[0x00,0x00,0xAC,0x6C,0x00,0x00,0x00,0x00],
[0x00,0x08,0x14,0x22,0x41,0x00,0x00,0x00],
[0x00,0x14,0x14,0x14,0x14,0x14,0x00,0x00],
[0x00,0x41,0x22,0x14,0x08,0x00,0x00,0x00],
[0x00,0x02,0x01,0x51,0x09,0x06,0x00,0x00],
[0x00,0x32,0x49,0x79,0x41,0x3E,0x00,0x00],
[0x00,0x7E,0x09,0x09,0x09,0x7E,0x00,0x00],
[0x00,0x7F,0x49,0x49,0x49,0x36,0x00,0x00],
[0x00,0x3E,0x41,0x41,0x41,0x22,0x00,0x00],
[0x00,0x7F,0x41,0x41,0x22,0x1C,0x00,0x00],
[0x00,0x7F,0x49,0x49,0x49,0x41,0x00,0x00],
[0x00,0x7F,0x09,0x09,0x09,0x01,0x00,0x00],
[0x00,0x3E,0x41,0x41,0x51,0x72,0x00,0x00],
[0x00,0x7F,0x08,0x08,0x08,0x7F,0x00,0x00],
[0x00,0x41,0x7F,0x41,0x00,0x00,0x00,0x00],
[0x00,0x20,0x40,0x41,0x3F,0x01,0x00,0x00],
[0x00,0x7F,0x08,0x14,0x22,0x41,0x00,0x00],
[0x00,0x7F,0x40,0x40,0x40,0x40,0x00,0x00],
[0x00,0x7F,0x02,0x0C,0x02,0x7F,0x00,0x00],
[0x00,0x7F,0x04,0x08,0x10,0x7F,0x00,0x00],
[0x00,0x3E,0x41,0x41,0x41,0x3E,0x00,0x00],
[0x00,0x7F,0x09,0x09,0x09,0x06,0x00,0x00],
[0x00,0x3E,0x41,0x51,0x21,0x5E,0x00,0x00],
[0x00,0x7F,0x09,0x19,0x29,0x46,0x00,0x00],
[0x00,0x26,0x49,0x49,0x49,0x32,0x00,0x00],
[0x00,0x01,0x01,0x7F,0x01,0x01,0x00,0x00],
[0x00,0x3F,0x40,0x40,0x40,0x3F,0x00,0x00],
[0x00,0x1F,0x20,0x40,0x20,0x1F,0x00,0x00],
[0x00,0x3F,0x40,0x38,0x40,0x3F,0x00,0x00],
[0x00,0x63,0x14,0x08,0x14,0x63,0x00,0x00],
[0x00,0x03,0x04,0x78,0x04,0x03,0x00,0x00],
[0x00,0x61,0x51,0x49,0x45,0x43,0x00,0x00],
[0x00,0x7F,0x41,0x41,0x00,0x00,0x00,0x00],
[0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00],
[0x00,0x41,0x41,0x7F,0x00,0x00,0x00,0x00],
[0x00,0x04,0x02,0x01,0x02,0x04,0x00,0x00],
[0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00],
[0x00,0x01,0x02,0x04,0x00,0x00,0x00,0x00],
[0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x00],
[0x00,0x7F,0x48,0x44,0x44,0x38,0x00,0x00],
[0x00,0x38,0x44,0x44,0x28,0x00,0x00,0x00],
[0x00,0x38,0x44,0x44,0x48,0x7F,0x00,0x00],
[0x00,0x38,0x54,0x54,0x54,0x18,0x00,0x00],
[0x00,0x08,0x7E,0x09,0x02,0x00,0x00,0x00],
[0x00,0x18,0xA4,0xA4,0xA4,0x7C,0x00,0x00],
[0x00,0x7F,0x08,0x04,0x04,0x78,0x00,0x00],
[0x00,0x00,0x7D,0x00,0x00,0x00,0x00,0x00],
[0x00,0x80,0x84,0x7D,0x00,0x00,0x00,0x00],
[0x00,0x7F,0x10,0x28,0x44,0x00,0x00,0x00],
[0x00,0x41,0x7F,0x40,0x00,0x00,0x00,0x00],
[0x00,0x7C,0x04,0x18,0x04,0x78,0x00,0x00],
[0x00,0x7C,0x08,0x04,0x7C,0x00,0x00,0x00],
[0x00,0x38,0x44,0x44,0x38,0x00,0x00,0x00],
[0x00,0xFC,0x24,0x24,0x18,0x00,0x00,0x00],
[0x00,0x18,0x24,0x24,0xFC,0x00,0x00,0x00],
[0x00,0x00,0x7C,0x08,0x04,0x00,0x00,0x00],
[0x00,0x48,0x54,0x54,0x24,0x00,0x00,0x00],
[0x00,0x04,0x7F,0x44,0x00,0x00,0x00,0x00],
[0x00,0x3C,0x40,0x40,0x7C,0x00,0x00,0x00],
[0x00,0x1C,0x20,0x40,0x20,0x1C,0x00,0x00],
[0x00,0x3C,0x40,0x30,0x40,0x3C,0x00,0x00],
[0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00],
[0x00,0x1C,0xA0,0xA0,0x7C,0x00,0x00,0x00],
[0x00,0x44,0x64,0x54,0x4C,0x44,0x00,0x00],
[0x00,0x08,0x36,0x41,0x00,0x00,0x00,0x00],
[0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00],
[0x00,0x41,0x36,0x08,0x00,0x00,0x00,0x00],
[0x00,0x02,0x01,0x01,0x02,0x01,0x00,0x00],
[0x00,0x02,0x05,0x05,0x02,0x00,0x00,0x00]]
def oled_init():
sendCommand(0xFD) # Unlock OLED driver IC MCU interface from entering command. i.e: Accept commands
sendCommand(0x12)
sendCommand(0xAE) # Set display off
sendCommand(0xA8) # set multiplex ratio
sendCommand(0x5F) # 96
sendCommand(0xA1) # set display start line
sendCommand(0x00)
sendCommand(0xA2) # set display offset
sendCommand(0x60)
sendCommand(0xA0) # set remap
sendCommand(0x46)
sendCommand(0xAB) # set vdd internal
sendCommand(0x01)
sendCommand(0x81) # set contrasr
sendCommand(0x53) # 100 nit
sendCommand(0xB1) # Set Phase Length
sendCommand(0X51)
sendCommand(0xB3) # Set Display Clock Divide Ratio/Oscillator Frequency
sendCommand(0x01)
sendCommand(0xB9)
sendCommand(0xBC) # set pre_charge voltage/VCOMH
sendCommand(0x08) # (0x08);
sendCommand(0xBE) # set VCOMH
sendCommand(0X07) # (0x07);
sendCommand(0xB6) # Set second pre-charge period
sendCommand(0x01)
sendCommand(0xD5) # enable second precharge and enternal vsl
sendCommand(0X62) # (0x62);
sendCommand(0xA4) # Set Normal Display Mode
sendCommand(0x2E) # Deactivate Scroll
sendCommand(0xAF) # Switch on display
time.sleep(0.1)
# delay(100);
# Row Address
sendCommand(0x75) # Set Row Address
sendCommand(0x00) # Start 0
sendCommand(0x5f) # End 95
# Column Address
sendCommand(0x15) # Set Column Address
sendCommand(0x08) # Start from 8th Column of driver IC. This is 0th Column for OLED
sendCommand(0x37) # End at (8 + 47)th column. Each Column has 2 pixels(segments)
# Init gray level for text. Default:Brightest White
grayH= 0xF0
grayL= 0x0F
def sendCommand(byte):
Oled.write8(Command_Mode,byte)
def sendData(byte):
Oled.write8(Data_mode,byte)
def multi_comm(commands):
for c in commands:
sendCommand(c)
def oled_clearDisplay():
for j in range (0,48):
for i in range (0,96):
sendData(0x00)
def oled_setNormalDisplay():
sendCommand(Normal_Display_Cmd)
def oled_setVerticalMode():
sendCommand(0xA0) # remap to
sendCommand(0x46) # Vertical mode
def oled_setTextXY(Row,Column):
sendCommand(0x15) # Set Column Address
sendCommand(0x08+(Column*4)) # Start Column: Start from 8
sendCommand(0x37) # End Column
# Row Address
sendCommand(0x75) # Set Row Address
sendCommand(0x00+(Row*8)) # Start Row
sendCommand(0x07+(Row*8)) # End Row
def oled_putChar(C):
C_add=ord(C)
if C_add<32 or C_add>127: # Ignore non-printable ASCII characters
C=' '
C_add=ord(C)
for i in range(0,8,2):
for j in range(0,8):
c=0x00
bit1=((BasicFont[C_add-32][i])>>j)&0x01
bit2=((BasicFont[C_add-32][i+1])>>j)&0x01
if bit1:
c=c|grayH
else:
c=c|0x00
if bit2:
c=c|grayL
else:
c=c|0x00
sendData(c)
def oled_putString(String):
for i in range(len(String)):
oled_putChar(String[i])
if __name__=="__main__":
oled_init()
oled_setNormalDisplay()
oled_setTextXY(0,0)
oled_putString("Hello")
time.sleep(10)
#Oled.write8(Command_Mode,0xFD)
#sendCommand(0xFD)
print 'hello world'
Step3: Save the file by clicking the disk icon with with the .py extension.
Step4: Connect Grove - OLED to Grove I2C socket on BBG.
Step5: Run the code. We’ll find that the Grove - OLED outputs “Hello World”.
Resources
- [Eagle] Grove-OLED128x64
- [PDF] Grove-OLED128x64 Schematic
- [PDF] Grove-OLED128x64 PCB
- [Library] GitHub Library for OLED
- [Datasheet] Resources of SSD1308_1.0.pdf
- [Datasheet] Resources of LY190-128064.pdf
- [Wiki] Beaglebone Green Wiki
Arduino | Wio | BeagleBone | Raspberry Pi | LinkIt ONE |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
Caution
The platforms mentioned above as supported is/are an indication of the module's hardware or theoritical compatibility. We only provide software library or code examples for Arduino platform in most cases. It is not possible to provide software library / demo code for all possible MCU platforms. Hence, users have to write their own software library.
Help us make it better
Welcome to the new documentation system of Seeed Studio. We have made a lot of progress comparing to the old wiki system and will continue to improve it to make it more user friendly and helpful. The improvement can't be done without your kindly feedback. If you have any suggestions or findings, you are most welcome to submit the amended version as our contributor via Github or give us suggestions in the survey below, it would be more appreciated if you could leave your email so that we can reply to you. Happy Hacking!