SSD1306 OLED display driver  1.4.10
This library is developed to control SSD1306/SSD1331 RGB i2c/spi OLED displays and spi PCD8544 LED display
Macros | Functions | Variables
LCD communication interface functions

Macros

#define SSD1306_SA   0x3C
 
#define SSD1306_SCL   3
 SCL, Pin 3 on SSD1306 Board.
 
#define SSD1306_SDA   4
 SDA, Pin 4 on SSD1306 Board.
 

Functions

void ssd1306_i2cInit (void)
 
void ssd1306_i2cInitEx (int8_t scl, int8_t sda, int8_t sa)
 
void ssd1306_i2cCommandStart (void)
 
void ssd1306_i2cDataStart (void)
 
void ssd1306_i2cInit_Embedded (int8_t scl, int8_t sda, uint8_t sa)
 
void ssd1306_i2cConfigure_Wire (int8_t scl, int8_t sda)
 
void ssd1306_i2cInit_Wire (uint8_t sa)
 
void ssd1306_sendCommand (uint8_t command)
 
void ssd1306_sendData (uint8_t data)
 
void ssd1306_spiInit (int8_t cesPin, int8_t dcPin)
 
void ssd1306_spiCommandStart (void)
 
void ssd1306_spiDataStart (void)
 

Variables

void(* ssd1306_startTransmission )(void)
 
void(* ssd1306_endTransmission )(void)
 
void(* ssd1306_sendByte )(uint8_t data)
 
void(* ssd1306_closeInterface )(void)
 deinitializes internal resources, allocated for interface. More...
 
void(* ssd1306_sendPixels )(uint8_t data)
 
void(* ssd1306_commandStart )(void)
 
void(* ssd1306_dataStart )(void)
 
void(* ssd1306_setRamBlock )(uint8_t x, uint8_t y, uint8_t w)
 
void(* ssd1306_nextRamPage )(void)
 
int8_t s_ssd1306_cs
 
int8_t s_ssd1306_dc
 

Detailed Description

Macro Definition Documentation

◆ SSD1306_SA

#define SSD1306_SA   0x3C

SSD1306_SA defines default i2c address of LCD display. Please, check your device. If you LCD device has different address, you can set different one via ssd1306_i2cInit_Wire() or ssd1306_i2cInit_Embedded() functions. Write command will be SSD1306_SA<<1 and read will be SSD1306_SA<<1 | 1

Definition at line 50 of file ssd1306_i2c_conf.h.

Function Documentation

◆ ssd1306_i2cCommandStart()

void ssd1306_i2cCommandStart ( void  )

Switches i2c chip to command transmission mode.

Definition at line 32 of file ssd1306_i2c_common.c.

◆ ssd1306_i2cConfigure_Wire()

void ssd1306_i2cConfigure_Wire ( int8_t  scl,
int8_t  sda 
)

Configures speed for standard Wire library (via Wire.begin()). This function is called by ssd1306_i2cInit().

Parameters
scl- i2c clock pin. Use -1 if you don't need to change default pin number
sda- i2c data pin. Use -1 if you don't need to change default pin number
Note
scl and sda parameters depend on used hardware. For many hardware boards these parameters do not have any effect. ESP8266 allows to specify these parameters

Definition at line 48 of file ssd1306_i2c_wire.cpp.

◆ ssd1306_i2cDataStart()

void ssd1306_i2cDataStart ( void  )

Switches i2c chip to data transmission mode.

Definition at line 38 of file ssd1306_i2c_common.c.

◆ ssd1306_i2cInit()

void ssd1306_i2cInit ( void  )

Inits display interface to use i2c bus. The function automatically selects available type of i2c implementation

  1. Wire library
  2. sw i2c implementation In case of using Wire library this function calls Wire.begin() and sets speed to fast i2c (400kHz). If you prefer to use your own Wire settings or avoid reinitializing of Wire library, please use ssd1306_i2cInit_Wire(). If you want to use embedded i2c (if it is supported), use ssd1306_i2cInit_Embedded().
Note
: after call to this function you need to initialize lcd display.

Definition at line 59 of file ssd1306_i2c_common.c.

◆ ssd1306_i2cInit_Embedded()

void ssd1306_i2cInit_Embedded ( int8_t  scl,
int8_t  sda,
uint8_t  sa 
)

Initializes software implementation of i2c. If you do not know i2c parameters, try ssd1306_i2cInit_Embedded(0,0,0).

Warning
the function disables interrupts.
Parameters
scl- i2c clock pin. Use -1 if you don't need to change default pin number
sda- i2c data pin. Use -1 if you don't need to change default pin number
sa- i2c address of lcd display. Use 0 to leave default
Note
: after call to this function you need to initialize lcd display.

Definition at line 165 of file ssd1306_i2c_embedded.c.

◆ ssd1306_i2cInit_Wire()

void ssd1306_i2cInit_Wire ( uint8_t  sa)

Initializes ssd1306 library to use Wire lib for i2c. If you do not know i2c parameters, try ssd1306_i2cInit_Wire(0). SCL and SDA pins depend on platform and Wire library implementation.

Parameters
sa- i2c address of lcd display. Use 0 to leave default
Note
: after call to this function you need to initialize lcd display.

Definition at line 94 of file ssd1306_i2c_wire.cpp.

◆ ssd1306_i2cInitEx()

void ssd1306_i2cInitEx ( int8_t  scl,
int8_t  sda,
int8_t  sa 
)

Inits display interface to use i2c bus. The function automatically selects available type of i2c implementation

  1. Wire library
  2. sw i2c implementation In case of using Wire library this function calls Wire.begin() and sets speed to fast i2c (400kHz). If you prefer to use your own Wire settings or avoid reinitializing of Wire library, please use ssd1306_i2cInit_Wire(). If you want to use embedded i2c (if it is supported), use ssd1306_i2cInit_Embedded().
Parameters
scl- i2c clock pin. Use -1 if you don't need to change default pin number
sda- i2c data pin. Use -1 if you don't need to change default pin number
sa- i2c address of lcd display. Use 0 to leave default
Note
scl and sda parameters depend on used hardware. For many hardware boards these parameters do not have any effect. ESP8266 allows to specify these parameters
scl and sda for Linux systems should be the same, and should contain i2c bus id.
: after call to this function you need to initialize lcd display.

Definition at line 44 of file ssd1306_i2c_common.c.

◆ ssd1306_sendCommand()

void ssd1306_sendCommand ( uint8_t  command)

Sends command to SSD1306 device: includes initiating of transaction, sending data and completing transaction.

Parameters
command- command to send

Definition at line 42 of file ssd1306_interface.c.

◆ ssd1306_sendData()

void ssd1306_sendData ( uint8_t  data)

Sends byte data to SSD1306 controller memory. Performs 3 operations at once: ssd1306_dataStart(); ssd1306_sendPixels( data ); ssd1306_endTransmission();

Parameters
data- byte to send to the controller memory
Note
At present this function is used only in Arkanoid demo.

Definition at line 49 of file ssd1306_interface.c.

◆ ssd1306_spiCommandStart()

void ssd1306_spiCommandStart ( void  )

Switches spi chip to command transmission mode.

Definition at line 52 of file ssd1306_spi.c.

◆ ssd1306_spiDataStart()

void ssd1306_spiDataStart ( void  )

Switches spi chip to data transmission mode.

Definition at line 58 of file ssd1306_spi.c.

◆ ssd1306_spiInit()

void ssd1306_spiInit ( int8_t  cesPin,
int8_t  dcPin 
)

Inits lcd interface to use hardware spi for communication. The function automatically selects available type of spi implementation

  1. SPI library (ssd1306_spiInit_hw())
    Parameters
    cesPin- pin, controlling chip enable of LCD
    dcPin- pin, controlling data/command mode of LCD
    Note
    : after call to this function you need to initialize lcd display.

Definition at line 38 of file ssd1306_spi.c.

Variable Documentation

◆ s_ssd1306_cs

int8_t s_ssd1306_cs

chip enable pin to controll lcd display over spi

Definition at line 35 of file ssd1306_spi.c.

◆ s_ssd1306_dc

int8_t s_ssd1306_dc

data/command control pin for spi interface of lcd display

Definition at line 36 of file ssd1306_spi.c.

◆ ssd1306_closeInterface

void(* ssd1306_closeInterface) (void)

deinitializes internal resources, allocated for interface.

Deinitializes internal resources, allocated for interface. There is no need to use this function for microcontrollers. In general the function has meaning in Linux-like systems.

Definition at line 36 of file ssd1306_interface.c.

◆ ssd1306_commandStart

void(* ssd1306_commandStart) (void)

Starts transaction for sending commands.

Definition at line 34 of file ssd1306_interface.c.

◆ ssd1306_dataStart

void(* ssd1306_dataStart) (void)

Starts transaction for sending bitmap data.

Definition at line 35 of file ssd1306_interface.c.

◆ ssd1306_endTransmission

void(* ssd1306_endTransmission) (void)

Ends communication with SSD1306 display.

Definition at line 32 of file ssd1306_interface.c.

◆ ssd1306_nextRamPage

void(* ssd1306_nextRamPage) (void)

Switches to the start of next RAM page for the block, specified by ssd1306_setRamBlock(). For ssd1306 it does nothing, while for sh1106 the function moves cursor to next page.

Definition at line 39 of file ssd1306_interface.c.

◆ ssd1306_sendByte

void(* ssd1306_sendByte) (uint8_t data)

Sends byte to SSD1306 device

Parameters
data- byte to send

Definition at line 33 of file ssd1306_interface.c.

◆ ssd1306_sendPixels

void(* ssd1306_sendPixels) (uint8_t data)

Sends 8 monochrome vectical pixels to OLED driver.

Parameters
data- byte, representing 8 pixels.

Definition at line 40 of file ssd1306_interface.c.

◆ ssd1306_setRamBlock

void(* ssd1306_setRamBlock) (uint8_t x, uint8_t y, uint8_t w)

Sets block in RAM of lcd display controller to write data to. For ssd1306 it uses horizontal addressing mode, while for sh1106 the function uses page addressing mode. Width can be specified as 0, thus the library will set the right region of RAM block to the right column of the display.

Parameters
x- column (left region)
y- page (top page of the block)
w- width of the block in pixels to control

Definition at line 38 of file ssd1306_interface.c.

◆ ssd1306_startTransmission

void(* ssd1306_startTransmission) (void)

Starts communication with SSD1306 display.

Definition at line 31 of file ssd1306_interface.c.