Display_Lib_RPI 2.3.0
A C++ Library to connect electronic displays to Linux single board computers.
Loading...
Searching...
No Matches
Classes | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
ERMCH1115 Class Reference

class to drive the ERMCh1115 OLED More...

#include <ERM1_CH1115_OLED_RDL.hpp>

Inheritance diagram for ERMCH1115:
Inheritance graph
[legend]

Classes

struct  ERMCH1115_Delays_t
 Struct to hold delay values used in driver. More...
 

Public Member Functions

 ERMCH1115 (int16_t oledwidth, int16_t oledheight, int8_t rst, int8_t dc, int8_t cs, int8_t sclk, int8_t din)
 init the OLED class object
 
 ERMCH1115 (int16_t oledwidth, int16_t oledheight, int8_t rst, int8_t dc)
 init the OLED class object
 
virtual void drawPixel (int16_t x, int16_t y, uint8_t colour) override
 Draws a Pixel to the screen , overides the graphics library.
 
rdlib::Return_Codes_e OLEDSetBufferPtr (uint8_t width, uint8_t height, std::span< uint8_t > buffer)
 sets the buffer pointer to the users screen data buffer
 
rdlib::Return_Codes_e OLEDupdate (void)
 updates the OLED i.e. writes buffer to the screen
 
rdlib::Return_Codes_e OLEDclearBuffer (void)
 clears the buffer memory i.e. does NOT write to the screen
 
void OLEDBufferScreen (int16_t x, int16_t y, uint8_t w, uint8_t h, std::span< uint8_t > data)
 Draw a bitmap to the screen.
 
void OLEDFillScreen (uint8_t pixel)
 Fill the screen NOT the buffer with a datapattern.
 
void OLEDFillPage (uint8_t page_num, uint8_t pixels)
 Fill the chosen page(0-7) with a datapattern.
 
void OLEDBitmap (int16_t x, int16_t y, uint8_t w, uint8_t h, const std::span< const uint8_t > data)
 Draw a bitmap to the screen.
 
rdlib::Return_Codes_e OLEDbegin (uint8_t contrast, int gpioDev)
 begin Method initialise OLED for software SPI
 
rdlib::Return_Codes_e OLEDbegin (uint8_t contrast, int device, int channel, int speed, int flags, int gpioDev)
 begin Method initialise OLED for Hardware SPI
 
void OLEDinit (void)
 Called from OLEDbegin carries out Power on sequence and register init.
 
void OLEDReset (void)
 Resets OLED in a four wire setup called at start.
 
void OLEDEnable (uint8_t on)
 Turns On Display.
 
void OLEDInvert (uint8_t on)
 invert the display
 
void OLEDFlip (uint8_t on)
 Rotates the display vertically, A 180 degree 'flip'.
 
void OLEDContrast (uint8_t contrast=ERMCH1115_CONTRAST_DATA_DEFAULT)
 Adjusts contrast.
 
void OLEDscroll (uint8_t bits)
 Turns on Horizontal scroll.
 
void OLEDscrollSetup (uint8_t Timeinterval=ERMCH1115_TIME_SET, uint8_t Direction=ERMCH1115_SCROLL_SETUP, uint8_t mode=ERMCH1115_SET_SCROLL_MODE)
 Sets up Horizontal Scroll.
 
void OLEDfadeEffect (uint8_t bits=ERMCH1115_BREATHEFFECT_DATA)
 Turns on fade effect.
 
bool OLEDIsSleeping (void)
 getting for _sleep member . is OLED in sleep mode
 
rdlib::Return_Codes_e OLEDSPIoff (void)
 stops HW spi operations
 
void OLEDPowerDown (void)
 Power down function.
 
uint16_t OLEDHighFreqDelayGet (void)
 Freq delay used in SW SPI getter, uS delay used in SW SPI method.
 
void OLEDHighFreqDelaySet (uint16_t)
 Freq delay used in SW SPI setter, uS delay used in SW SPI method.
 
- Public Member Functions inherited from bicolor_graphics
 bicolor_graphics (int16_t w, int16_t h)
 init the Display Graphics class object
 
rdlib::Return_Codes_e drawDotGrid (int16_t x, int16_t y, int16_t w, int16_t h, uint8_t DotGridGap, uint8_t color)
 Draws a grid of dots on the screen starting from the given coordinates. This function draws a grid of pixels with a specified gap between them. It checks that the provided coordinates and dimensions are within the screen bounds and adjusts them if necessary. It also validates The grid of dots gap value and defaults it to 2 if invalid.
 
void drawLine (int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint8_t color)
 draws a line from (x0,y0) to (x1,y1).
 
rdlib::Return_Codes_e drawFastVLine (int16_t x, int16_t y, int16_t h, uint8_t color)
 Draws a vertical line starting at (x,y) with height h.
 
rdlib::Return_Codes_e drawFastHLine (int16_t x, int16_t y, int16_t w, uint8_t color)
 Draws a horizontal line starting at (x,y) with width w.
 
void drawLineAngle (int16_t x, int16_t y, int angle, uint8_t start, uint8_t length, int offset, uint8_t color)
 Draws a line using an angle and length as parameters. This function draws a line starting from (x, y), extending in the direction specified by angle, with a given length. The function also allows applying an offset to the angle before computing the line’s end coordinates.
 
void drawRect (int16_t x, int16_t y, int16_t w, int16_t h, uint8_t color)
 draws rectangle at (x,y) where h is height and w is width of the rectangle.
 
void fillRect (int16_t x, int16_t y, int16_t w, int16_t h, uint8_t color)
 fills a rectangle starting from coordinates (x,y) with width of w and height of h.
 
void fillScreen (uint8_t color)
 Fills the whole screen with a given color.
 
void drawCircle (int16_t x0, int16_t y0, int16_t r, uint8_t color)
 draws a circle where (x0,y0) are center coordinates an r is circle radius.
 
void fillCircle (int16_t x0, int16_t y0, int16_t r, uint8_t color)
 fills a circle where (x0,y0) are center coordinates an r is circle radius.
 
void drawEllipse (int16_t cx, int16_t cy, int16_t semiMajorAxis, int16_t semiMinorAxis, bool fill, uint8_t color)
 Draw an ellipse on the display. This function uses the midpoint ellipse algorithm to efficiently draw an ellipse centered at (cx, cy) with the given semi-major (horizontal) and semi-minor (vertical) axes.
 
void drawTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint8_t color)
 draws a triangle of coordinates (x0,y0), (x1,y1) and (x2,y2).
 
void fillTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint8_t color)
 Fills a triangle of coordinates (x0,y0), (x1,y1) and (x2,y2).
 
void drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint8_t color)
 draws a rectangle with rounded edges
 
void fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint8_t color)
 Fills a rectangle with rounded edges.
 
void drawQuadrilateral (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3, uint8_t color)
 Draws a quadrilateral (four-sided polygon) by connecting four points with lines. This function draws a quadrilateral by drawing four lines between the given vertices. The lines are drawn in the order: (x0, y0) to (x1, y1), (x1, y1) to (x2, y2), (x2, y2) to (x3, y3), and finally (x3, y3) back to (x0, y0).
 
void fillQuadrilateral (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3, uint8_t color, bool useTriangleSplit=true)
 Fills a quadrilateral with the specified color using triangles. This function fills a quadrilateral by dividing it into triangles and filling them individually. The quadrilateral is filled by calling the fillTriangle function three times with appropriate vertex coordinates. The useTriangleSplit parameter determines whether the quadrilateral is divided into two triangles or if only one triangle is used.
 
rdlib::Return_Codes_e drawPolygon (int16_t x, int16_t y, uint8_t sides, int16_t diameter, float rotation, bool fill, uint8_t color)
 Draws a polygon with a specified number of sides, diameter, rotation, and color. This function draws a regular polygon by connecting points equally spaced around a circle, with each point having a distance defined by the diameter. The polygon is rotated by the given angle (in degrees) before being drawn. The number of sides is enforced to be at least 3.
 
void drawArc (uint16_t cx, uint16_t cy, uint16_t radius, uint16_t thickness, float startAngle, float endAngle, uint8_t color)
 Draw an arc on the TFT display. This function draws an arc between two angles (start and end) on a circle with a given radius.
 
void drawSimpleArc (int16_t cx, int16_t cy, int16_t radius, float startAngle, float endAngle, uint8_t color)
 Draw a simple arc of one pixel on the display( no offsets , thickness or maximum arc calculations) This function draws an arc between two angles (start and end) on a circle with a given radius.
 
float getArcAngleMax () const
 Get the current maximum angle of the arc.
 
void setArcAngleMax (float arcAngleMax)
 Set a new maximum angle for the arc.
 
int getArcAngleOffset () const
 Get the current angle offset.
 
void setArcAngleOffset (int arcAngleOffset)
 Set a new angle offset.
 
void setCursor (int16_t x, int16_t y)
 set the cursor position
 
void setRotation (displayBC_rotate_e m)
 Sets the _rotation of the display.
 
displayBC_rotate_e getRotation ()
 Gets the _rotation of the display.
 
int16_t height (void) const
 Gets the height of the display (per current _rotation)
 
int16_t width (void) const
 Gets the width of the display (per current _rotation)
 
virtual size_t write (uint8_t) override
 write method used in the print class when user calls print
 
rdlib::Return_Codes_e writeChar (int16_t x, int16_t y, char value)
 Write 1 character on display.
 
rdlib::Return_Codes_e writeCharString (int16_t x, int16_t y, char *text)
 Write Text character array on Display.
 
void setTextWrap (bool w)
 turn on or off screen wrap of the text
 
void setDrawBitmapAddr (bool mode)
 sets the data addressing mode in drawBitmap function.
 
rdlib::Return_Codes_e drawBitmap (int16_t x, int16_t y, const std::span< const uint8_t > bitmap, int16_t w, int16_t h, uint8_t color, uint8_t bg)
 Draw a 1-bit color bitmap.
 
- Public Member Functions inherited from display_Fonts
 display_Fonts ()
 init the OLED font class object constructor
 
rdlib::Return_Codes_e setFont (display_Font_name_e)
 SetFont.
 
void setInvertFont (bool invertStatus)
 setInvertFont
 
bool getInvertFont (void)
 getInvertFont
 
- Public Member Functions inherited from Print
int getWriteError ()
 gets the error flag status, zero no error
 
void clearWriteError ()
 clears the error flag by setting it to zero
 
virtual size_t write (const uint8_t *buffer, size_t size)
 define in the sub class
 
size_t write (const char *str)
 Writes a string to the output.
 
size_t write (const char *buffer, size_t size)
 Writes a buffer of a specified size to the output.
 
virtual int availableForWrite ()
 define in the sub class
 
size_t print (const char[])
 print an array
 
size_t print (char)
 print an character
 
size_t print (int, int=RDL_DEC)
 print an integer of base number system
 
size_t print (unsigned int, int=RDL_DEC)
 print an unsigned integer of base number system
 
size_t print (long, int=RDL_DEC)
 print an long integer of base number system
 
size_t print (unsigned long, int=RDL_DEC)
 print an unsigned long integer of base number system
 
size_t print (double, int=2)
 print an double
 
size_t print (const std::string &)
 print an C++ string object
 
size_t println (const char[])
 Prints a character array followed by a newline.
 
size_t println (char)
 print an character followed by new line
 
size_t println (int, int=RDL_DEC)
 print an integer of base number system followed by new line
 
size_t println (unsigned int, int=RDL_DEC)
 print an unsigned integer of base number system followed by new line
 
size_t println (long, int=RDL_DEC)
 print an long integer of base number system followed by new line
 
size_t println (unsigned long, int=RDL_DEC)
 print an unsigned long integer of base number system followed by new line
 
size_t println (double, int=2)
 print an double
 
size_t println (void)
 Goto to new line.
 
size_t println (const std::string &s)
 print an C++ string object followed by new line
 
template<typename T >
size_t print (const std::vector< T > &v, int format=defaultFormat< T >())
 Print a vector of any type.
 
template<typename T >
size_t println (const std::vector< T > &vec, int format=defaultFormat< T >())
 Print a vector of elements followed by a newline.
 
template<typename T , size_t N>
size_t print (const std::array< T, N > &arr, int format=defaultFormat< T >())
 Print a std::array of any type.
 
template<typename T , size_t N>
size_t println (const std::array< T, N > &arr, int format=defaultFormat< T >())
 Print a std::array of elements followed by a newline.
 

Private Member Functions

void send_data (uint8_t data)
 Send data byte with SPI to ERMCH1115.
 
void send_command (uint8_t command, uint8_t value)
 Sends a command to the display.
 
int8_t GetCommMode (void)
 Checks if software SPI is on.
 
void SoftwareSPIShiftOut (uint8_t val)
 used in software SPI mode to shift out data
 

Private Attributes

int8_t _Display_CS
 
int8_t _Display_DC
 
int8_t _Display_RST
 
int8_t _Display_SCLK
 
int8_t _Display_SDATA
 
int _DeviceNumGpioChip = 0
 
int _GpioHandle = 0
 
int _spiHandle = 0
 
int _spiDev = 0
 
int _spiChan = 0
 
int _spiBaud = 50000
 
int _spiFlags = 0
 
uint16_t _OLEDHighFreqDelay = 0
 
int8_t _OLED_mode = 2
 
uint8_t _OLED_WIDTH = 128
 
uint8_t _OLED_HEIGHT = 64
 
uint8_t _OLED_PAGE_NUM = (_OLED_HEIGHT/8)
 
std::span< uint8_t_OLEDbuffer
 
bool _sleep = true
 
uint8_t _OLEDcontrast = ERMCH1115_CONTRAST_DATA_DEFAULT
 

Static Private Attributes

static constexpr uint8_t ERMCH1115_ENTIRE_DISPLAY_ON = 0xA4
 
static constexpr uint8_t ERMCH1115_ENTIRE_DISPLAY_OFF = 0xA5
 
static constexpr uint8_t ERMCH1115_DISPLAY_ON = 0xAF
 
static constexpr uint8_t ERMCH1115_DISPLAY_OFF = 0xAE
 
static constexpr uint8_t ERMCH1115_DISPLAY_NORMAL = 0xA6
 
static constexpr uint8_t ERMCH1115_DISPLAY_INVERT = 0xA7
 
static constexpr uint8_t ERMCH1115_CONTRAST_CONTROL = 0x81
 
static constexpr uint8_t ERMCH1115_CONTRAST_DATA_DEFAULT = 0x80
 
static constexpr uint8_t ERMCH1115_SET_PAGEADD = 0xB0
 
static constexpr uint8_t ERMCH1115_SET_COLADD_LSB = 0x00
 
static constexpr uint8_t ERMCH1115_SET_COLADD_MSB = 0x10
 
static constexpr uint8_t ERMCH1115_SET_DISPLAY_START_LINE = 0x40
 
static constexpr uint8_t ERMCH1115_SET_PUMP_REG = 0x30
 
static constexpr uint8_t ERMCH1115_SET_PUMP_SET = 0x01
 
static constexpr uint8_t ERMCH1115_IREF_REG = 0x82
 
static constexpr uint8_t ERMCH1115_IREF_SET = 0x00
 
static constexpr uint8_t ERMCH1115_SEG_SET_REMAP = 0xA0
 
static constexpr uint8_t ERMCH1115_SEG_SET_PADS = 0xA2
 
static constexpr uint8_t ERMCH1115_MULTIPLEX_MODE_SET = 0xA8
 
static constexpr uint8_t ERMCH1115_MULTIPLEX_DATA_SET = 0x3F
 
static constexpr uint8_t ERMCH1115_DC_MODE_SET = 0xAD
 
static constexpr uint8_t ERMCH1115_DC_ONOFF_SET = 0x8B
 
static constexpr uint8_t ERMCH1115_COMMON_SCAN_DIR = 0xC0
 
static constexpr uint8_t ERMCH1115_OFFSET_MODE_SET = 0xD3
 
static constexpr uint8_t ERMCH1115_OFFSET_DATA_SET = 0x00
 
static constexpr uint8_t ERMCH1115_BREATHEFFECT_SET = 0x23
 
static constexpr uint8_t ERMCH1115_BREATHEFFECT_DATA = 0x81
 
static constexpr uint8_t ERMCH1115_OSC_FREQ_MODE_SET = 0xD5
 
static constexpr uint8_t ERMCH1115_OSC_FREQ_DATA_SET = 0xA0
 
static constexpr uint8_t ERMCH1115_PRECHARGE_MODE_SET = 0xD9
 
static constexpr uint8_t ERMCH1115_PRECHARGE_DATA_SET = 0x22
 
static constexpr uint8_t ERMCH1115_COM_LEVEL_MODE_SET = 0xDB
 
static constexpr uint8_t ERMCH1115_COM_LEVEL_DATA_SET = 0x40
 
static constexpr uint8_t ERMCH1115_HORIZONTAL_A_SCROLL_SETUP = 0x24
 
static constexpr uint8_t ERMCH1115_HORIZONTAL_A_SCROLL_SET_SCOL = 0x00
 
static constexpr uint8_t ERMCH1115_HORIZONTAL_A_SCROLL_SET_ECOL = 0x7F
 
static constexpr uint8_t ERMCH1115_SCROLL_SETUP = 0x26
 
static constexpr uint8_t ERMCH1115_SPAGE_ADR_SET = 0x00
 
static constexpr uint8_t ERMCH1115_TIME_SET = 0x00
 
static constexpr uint8_t ERMCH1115_EPAGE_ADR_SET = 0x07
 
static constexpr uint8_t ERMCH1115_SET_SCROLL_MODE = 0x28
 
static constexpr uint8_t ERMCH1115_DEACTIVATE_SCROLL = 0x2E
 
static constexpr uint8_t ERMCH1115_ACTIVATE_SCROLL = 0x2F
 

Additional Inherited Members

- Public Types inherited from bicolor_graphics
enum  displayBC_rotate_e : uint8_t { BC_Degrees_0 = 0 , BC_Degrees_90 = 1 , BC_Degrees_180 = 2 , BC_Degrees_270 = 3 }
 
enum  pixel_color_e : uint8_t { WHITE = 0 , BLACK = 1 , INVERSE = 2 }
 
- Public Types inherited from Print
enum  BaseNum : uint8_t { RDL_DEC = 10 , RDL_HEX = 16 , RDL_OCT = 8 , RDL_BIN = 2 }
 
- Protected Member Functions inherited from Print
void setWriteError (int err=0)
 
- Protected Attributes inherited from bicolor_graphics
displayBC_rotate_e _display_rotate = BC_Degrees_0
 
const int16_t WIDTH
 
const int16_t HEIGHT
 
int16_t _width
 
int16_t _height
 
int16_t _cursor_x
 
int16_t _cursor_y
 
float _arcAngleMax = 360.0f
 
int _arcAngleOffset = 0
 
bool _textwrap = true
 
- Protected Attributes inherited from display_Fonts
std::span< const uint8_t > _FontSelect = pFontDefault
 
uint8_t _Font_X_Size = 0x08
 
uint8_t _Font_Y_Size = 0x08
 
uint8_t _FontOffset = 0x20
 
uint8_t _FontNumChars = 0x5F
 

Detailed Description

class to drive the ERMCh1115 OLED

Constructor & Destructor Documentation

◆ ERMCH1115() [1/2]

ERMCH1115::ERMCH1115 ( int16_t  oledwidth,
int16_t  oledheight,
int8_t  rst,
int8_t  dc,
int8_t  cs,
int8_t  sclk,
int8_t  din 
)

init the OLED class object

Parameters
oledwidthwidth of oled in pixels
oledheightheight of oled in pixels
rstGPIO reset
dcGPIO data or command
csGPIO Chip select
sclkGPIO SPI Clock
dinGPIO MOSI
Note
software SPI version, mode 3

◆ ERMCH1115() [2/2]

ERMCH1115::ERMCH1115 ( int16_t  oledwidth,
int16_t  oledheight,
int8_t  rst,
int8_t  dc 
)

init the OLED class object

Parameters
oledwidthwidth of oled in pixels
oledheightheight of oled in pixels
rstGPIO reset
dcGPIO data or command
Note
Hardware SPI version, mode 2

Member Function Documentation

◆ drawPixel()

void ERMCH1115::drawPixel ( int16_t  x,
int16_t  y,
uint8_t  colour 
)
overridevirtual

Draws a Pixel to the screen , overides the graphics library.

Parameters
xx co-ord of pixel
yy co-ord of pixel
colourcolour of pixel
Note
virtual function overides the graphics library

Implements bicolor_graphics.

◆ GetCommMode()

int8_t ERMCH1115::GetCommMode ( void  )
private

Checks if software SPI is on.

Returns
_OLED_mode 2 if hardware SPi on , 3 for software spi

◆ OLEDbegin() [1/2]

rdlib::Return_Codes_e ERMCH1115::OLEDbegin ( uint8_t  OLEDcontrast,
int  device,
int  channel,
int  speed,
int  flags,
int  gpioDev 
)

begin Method initialise OLED for Hardware SPI

Parameters
OLEDcontrastContrast of the OLED display default = 0x80 , range 0x00 to 0xFE
deviceA SPI device, >= 0.
channelA SPI channel, >= 0.
speedThe speed of serial communication in bits per second.
flagsThe flags may be used to modify the default behaviour. Set to 0(mode 0) for this device.
gpioDevThe device number of a gpiochip.
Returns
a rdlib::Return_Codes_e code
  1. rdlib::Success
  2. rdlib::WrongModeChosen
  3. rdlib::GpioChipDevice
  4. rdlib::GpioPinClaim
  5. rdlib::SPIOpenFailure

◆ OLEDbegin() [2/2]

rdlib::Return_Codes_e ERMCH1115::OLEDbegin ( uint8_t  OLEDcontrast,
int  gpioDev 
)

begin Method initialise OLED for software SPI

Parameters
OLEDcontrastContrast of the OLED display default = 0x80 , range 0x00 to 0xFE
gpioDevThe device number of a gpiochip.
Returns
a rdlib::Return_Codes_e code
  1. rdlib::Success
  2. rdlib::WrongModeChosen
  3. rdlib::GpioChipDevice
  4. rdlib::GpioPinClaim

◆ OLEDBitmap()

void ERMCH1115::OLEDBitmap ( int16_t  x,
int16_t  y,
uint8_t  w,
uint8_t  h,
const std::span< const uint8_t data 
)

Draw a bitmap to the screen.

Parameters
xoffset 0-128
yoffset 0-64
wwidth 0-128
hheight 0-64
dataspan to the bitmap data
Note
data is const. writes direct to screen , no buffer.

◆ OLEDBufferScreen()

void ERMCH1115::OLEDBufferScreen ( int16_t  x,
int16_t  y,
uint8_t  w,
uint8_t  h,
std::span< uint8_t data 
)

Draw a bitmap to the screen.

Parameters
xoffset
yoffset
wwidth
hheight
dataspan the bitmap data array
Note
Called by OLEDupdate, used internally mostly

◆ OLEDclearBuffer()

rdlib::Return_Codes_e ERMCH1115::OLEDclearBuffer ( void  )

clears the buffer memory i.e. does NOT write to the screen

Returns
  1. Success
  2. BufferEmpty is buffer empty object

◆ OLEDContrast()

void ERMCH1115::OLEDContrast ( uint8_t  contrast = ERMCH1115_CONTRAST_DATA_DEFAULT)

Adjusts contrast.

Parameters
contrast0x00 to 0xFF , default 0x80

◆ OLEDEnable()

void ERMCH1115::OLEDEnable ( uint8_t  bits)

Turns On Display.

Parameters
bits1 display on , 0 display off

◆ OLEDfadeEffect()

void ERMCH1115::OLEDfadeEffect ( uint8_t  bits = ERMCH1115_BREATHEFFECT_DATA)

Turns on fade effect.

Parameters
bits0x00 to stop
Note
bits values: (see datasheet breatheffect P25 for more details)
  1. ON/OFF * * A4 A3 A2 A1 A0
  2. When ON/OFF =”H”, Breathing Light ON.
  3. Breathing Display Effect Maximum Brightness Adjust Set: (A4 – A3)
  4. Breathing Display Effect Time Interval Set: (A2 – A0)
  5. Default on is 0x81

◆ OLEDFillPage()

void ERMCH1115::OLEDFillPage ( uint8_t  pageNum,
uint8_t  dataPattern 
)

Fill the chosen page(0-7) with a datapattern.

Parameters
pageNumpage 0-7 divides 64 pixel screen into 8 pages or blocks 64/8
dataPatterncan be set to 0 to FF (not buffer)

◆ OLEDFillScreen()

void ERMCH1115::OLEDFillScreen ( uint8_t  dataPattern)

Fill the screen NOT the buffer with a datapattern.

Parameters
dataPatterncan be set to zero to clear screen (not buffer) range 0x00 to 0ff

◆ OLEDFlip()

void ERMCH1115::OLEDFlip ( uint8_t  bits)

Rotates the display vertically, A 180 degree 'flip'.

Parameters
bits1 on , 0 off

◆ OLEDHighFreqDelayGet()

uint16_t ERMCH1115::OLEDHighFreqDelayGet ( void  )

Freq delay used in SW SPI getter, uS delay used in SW SPI method.

Returns
The GPIO communications delay in uS

◆ OLEDHighFreqDelaySet()

void ERMCH1115::OLEDHighFreqDelaySet ( uint16_t  CommDelay)

Freq delay used in SW SPI setter, uS delay used in SW SPI method.

Parameters
CommDelayThe GPIO communications delay in uS

◆ OLEDInvert()

void ERMCH1115::OLEDInvert ( uint8_t  bits)

invert the display

Parameters
bits1 invert , 0 normal

◆ OLEDIsSleeping()

bool ERMCH1115::OLEDIsSleeping ( void  )

getting for _sleep member . is OLED in sleep mode

Returns
value of _sleep if true OLED is off and in sleep mode, 500uA.

◆ OLEDPowerDown()

void ERMCH1115::OLEDPowerDown ( void  )

Power down function.

Disables screen and sets all independent GPIO low. call when powering down before end of operations

◆ OLEDscroll()

void ERMCH1115::OLEDscroll ( uint8_t  bits)

Turns on Horizontal scroll.

Parameters
bits1 Horizontal scroll on , 0 Horizontal scroll off
Note
OLEDscrollSetup must be called before it

◆ OLEDscrollSetup()

void ERMCH1115::OLEDscrollSetup ( uint8_t  Timeinterval = ERMCH1115_TIME_SET,
uint8_t  Direction = ERMCH1115_SCROLL_SETUP,
uint8_t  mode = ERMCH1115_SET_SCROLL_MODE 
)

Sets up Horizontal Scroll.

Parameters
Timeinterval0x00 -> 0x07 , 0x00 = 6 frames
Direction0x26 right 0x27 left (A2 – A0)
modeSet Scroll Mode: (28H – 2BH) 0x28 = continuous

◆ OLEDSetBufferPtr()

rdlib::Return_Codes_e ERMCH1115::OLEDSetBufferPtr ( uint8_t  width,
uint8_t  height,
std::span< uint8_t buffer 
)

sets the buffer pointer to the users screen data buffer

Parameters
widthwidth of buffer in pixels
heightheight of buffer in pixels
bufferthe buffer span
Returns
Will return rdlib::Return_Codes_e enum
  1. Success rdlib::Success
  2. Error 1 rdlib::BufferSize
  3. Error 2 rdlib::BufferEmpty

◆ OLEDSPIoff()

rdlib::Return_Codes_e ERMCH1115::OLEDSPIoff ( void  )

stops HW spi operations

End SPI operations.

Returns
  1. rdlib::Success
  2. rdlib::GpioPinFree
  3. rdlib::SPICloseFailure
  4. rdlib::GpioChipDevice

◆ OLEDupdate()

rdlib::Return_Codes_e ERMCH1115::OLEDupdate ( void  )

updates the OLED i.e. writes buffer to the screen

Returns
  1. Success
  2. BufferEmpty if buffer is empty object

◆ send_command()

void ERMCH1115::send_command ( uint8_t  command,
uint8_t  value 
)
private

Sends a command to the display.

Parameters
commandCommand to send
valuethe values to change
Note
command and value will be combined with OR

◆ send_data()

void ERMCH1115::send_data ( uint8_t  dataByte)
private

Send data byte with SPI to ERMCH1115.

Parameters
dataBytebyte the data byte to send

◆ SoftwareSPIShiftOut()

void ERMCH1115::SoftwareSPIShiftOut ( uint8_t  value)
private

used in software SPI mode to shift out data

Parameters
valueByte to send in MSBFIRST

a GPIO uS delay is used here(_OLEDHighFreqDelay) user adjust for different CPU speeds possible

Member Data Documentation

◆ _DeviceNumGpioChip

int ERMCH1115::_DeviceNumGpioChip = 0
private

SWSPI The device number of a gpiochip ls /dev/gpio

◆ _Display_CS

int8_t ERMCH1115::_Display_CS
private

GPIO Chip select line, Software SPI only

◆ _Display_DC

int8_t ERMCH1115::_Display_DC
private

GPIO Data or command line

◆ _Display_RST

int8_t ERMCH1115::_Display_RST
private

GPIO Reset line

◆ _Display_SCLK

int8_t ERMCH1115::_Display_SCLK
private

GPIO Clock Line, Software SPI only

◆ _Display_SDATA

int8_t ERMCH1115::_Display_SDATA
private

GPIO MOSI Line, Software SPI only

◆ _GpioHandle

int ERMCH1115::_GpioHandle = 0
private

This holds a handle to a gpiochip device opened by lgGpiochipOpen

◆ _OLED_HEIGHT

uint8_t ERMCH1115::_OLED_HEIGHT = 64
private

Height in pixels of the OLED

◆ _OLED_mode

int8_t ERMCH1115::_OLED_mode = 2
private

Mode, hardware or software SPI , 2=HWSPI 3=SWSPI

◆ _OLED_PAGE_NUM

uint8_t ERMCH1115::_OLED_PAGE_NUM = (_OLED_HEIGHT/8)
private

Number of pages in OLED based on height, PageNum = (h/8)

◆ _OLED_WIDTH

uint8_t ERMCH1115::_OLED_WIDTH = 128
private

Width in pxiels of the OLED

◆ _OLEDbuffer

std::span<uint8_t> ERMCH1115::_OLEDbuffer
private

span to buffer which holds screen data

◆ _OLEDcontrast

uint8_t ERMCH1115::_OLEDcontrast = ERMCH1115_CONTRAST_DATA_DEFAULT
private

Contrast , default 0x80 ,datasheet 00-FF

◆ _OLEDHighFreqDelay

uint16_t ERMCH1115::_OLEDHighFreqDelay = 0
private

uS GPIO Communications delay, SW SPI ONLY

◆ _sleep

bool ERMCH1115::_sleep = true
private

False awake , true sleep

◆ _spiBaud

int ERMCH1115::_spiBaud = 50000
private

The speed of serial communication in bits per second.

◆ _spiChan

int ERMCH1115::_spiChan = 0
private

A SPI channel, >= 0.

◆ _spiDev

int ERMCH1115::_spiDev = 0
private

A SPI device, >= 0.

◆ _spiFlags

int ERMCH1115::_spiFlags = 0
private

The flags 2 LSB defines SPI mode

◆ _spiHandle

int ERMCH1115::_spiHandle = 0
private

Hold a handle for the SPI device on the channel.

◆ ERMCH1115_ACTIVATE_SCROLL

constexpr uint8_t ERMCH1115::ERMCH1115_ACTIVATE_SCROLL = 0x2F
staticconstexprprivate

active Scroll mode

◆ ERMCH1115_BREATHEFFECT_DATA

constexpr uint8_t ERMCH1115::ERMCH1115_BREATHEFFECT_DATA = 0x81
staticconstexprprivate

Display Effect ON/OFF and Time Interval:

◆ ERMCH1115_BREATHEFFECT_SET

constexpr uint8_t ERMCH1115::ERMCH1115_BREATHEFFECT_SET = 0x23
staticconstexprprivate

Set Breathing Display Effect:

◆ ERMCH1115_COM_LEVEL_DATA_SET

constexpr uint8_t ERMCH1115::ERMCH1115_COM_LEVEL_DATA_SET = 0x40
staticconstexprprivate

VCOM Deselect Level Data Set: (00H - FFH)

◆ ERMCH1115_COM_LEVEL_MODE_SET

constexpr uint8_t ERMCH1115::ERMCH1115_COM_LEVEL_MODE_SET = 0xDB
staticconstexprprivate

COM Deselect Level Mode Set: (DBH)

◆ ERMCH1115_COMMON_SCAN_DIR

constexpr uint8_t ERMCH1115::ERMCH1115_COMMON_SCAN_DIR = 0xC0
staticconstexprprivate

Set Common Op Scan Dir:C0H - C8H Flip vertical

◆ ERMCH1115_CONTRAST_CONTROL

constexpr uint8_t ERMCH1115::ERMCH1115_CONTRAST_CONTROL = 0x81
staticconstexprprivate

Contrast Control Mode Set

◆ ERMCH1115_CONTRAST_DATA_DEFAULT

constexpr uint8_t ERMCH1115::ERMCH1115_CONTRAST_DATA_DEFAULT = 0x80
staticconstexprprivate

Contrast Data Reg Set = 0x00 to = 0xFF

◆ ERMCH1115_DC_MODE_SET

constexpr uint8_t ERMCH1115::ERMCH1115_DC_MODE_SET = 0xAD
staticconstexprprivate

DC-DC Control Mode Set

◆ ERMCH1115_DC_ONOFF_SET

constexpr uint8_t ERMCH1115::ERMCH1115_DC_ONOFF_SET = 0x8B
staticconstexprprivate

DC-DC ON/OFF Mode Set (8AH - 8BH) (a=off; b=on)

◆ ERMCH1115_DEACTIVATE_SCROLL

constexpr uint8_t ERMCH1115::ERMCH1115_DEACTIVATE_SCROLL = 0x2E
staticconstexprprivate

De-active Scroll mode

◆ ERMCH1115_DISPLAY_INVERT

constexpr uint8_t ERMCH1115::ERMCH1115_DISPLAY_INVERT = 0xA7
staticconstexprprivate

Display Inversion on

◆ ERMCH1115_DISPLAY_NORMAL

constexpr uint8_t ERMCH1115::ERMCH1115_DISPLAY_NORMAL = 0xA6
staticconstexprprivate

Display Inversion off

◆ ERMCH1115_DISPLAY_OFF

constexpr uint8_t ERMCH1115::ERMCH1115_DISPLAY_OFF = 0xAE
staticconstexprprivate

Turns off Display

◆ ERMCH1115_DISPLAY_ON

constexpr uint8_t ERMCH1115::ERMCH1115_DISPLAY_ON = 0xAF
staticconstexprprivate

Turns on Display

◆ ERMCH1115_ENTIRE_DISPLAY_OFF

constexpr uint8_t ERMCH1115::ERMCH1115_ENTIRE_DISPLAY_OFF = 0xA5
staticconstexprprivate

Forcibly turns the entire display on regardless of the contents of the display data RAM

◆ ERMCH1115_ENTIRE_DISPLAY_ON

constexpr uint8_t ERMCH1115::ERMCH1115_ENTIRE_DISPLAY_ON = 0xA4
staticconstexprprivate

Forcibly turns the entire display on regardless of the contents of the display data RAM

◆ ERMCH1115_EPAGE_ADR_SET

constexpr uint8_t ERMCH1115::ERMCH1115_EPAGE_ADR_SET = 0x07
staticconstexprprivate

End Page Address Set: (C2 – C0)

◆ ERMCH1115_HORIZONTAL_A_SCROLL_SET_ECOL

constexpr uint8_t ERMCH1115::ERMCH1115_HORIZONTAL_A_SCROLL_SET_ECOL = 0x7F
staticconstexprprivate

End Column Position Set: (B7 – B0)

◆ ERMCH1115_HORIZONTAL_A_SCROLL_SET_SCOL

constexpr uint8_t ERMCH1115::ERMCH1115_HORIZONTAL_A_SCROLL_SET_SCOL = 0x00
staticconstexprprivate

Start Column Position Set: (A7 – A0)

◆ ERMCH1115_HORIZONTAL_A_SCROLL_SETUP

constexpr uint8_t ERMCH1115::ERMCH1115_HORIZONTAL_A_SCROLL_SETUP = 0x24
staticconstexprprivate

Additional Horizontal Scroll Setup Mode Set: (24H)

◆ ERMCH1115_IREF_REG

constexpr uint8_t ERMCH1115::ERMCH1115_IREF_REG = 0x82
staticconstexprprivate

I REF Resistor Set

◆ ERMCH1115_IREF_SET

constexpr uint8_t ERMCH1115::ERMCH1115_IREF_SET = 0x00
staticconstexprprivate

I REF Resistor adjust

◆ ERMCH1115_MULTIPLEX_DATA_SET

constexpr uint8_t ERMCH1115::ERMCH1115_MULTIPLEX_DATA_SET = 0x3F
staticconstexprprivate

Multiplex Ration Data Set: (00H - 3FH)

◆ ERMCH1115_MULTIPLEX_MODE_SET

constexpr uint8_t ERMCH1115::ERMCH1115_MULTIPLEX_MODE_SET = 0xA8
staticconstexprprivate

Multiplex Ration Mode Set

◆ ERMCH1115_OFFSET_DATA_SET

constexpr uint8_t ERMCH1115::ERMCH1115_OFFSET_DATA_SET = 0x00
staticconstexprprivate

Display Offset Data Set: (00H~3FH)

◆ ERMCH1115_OFFSET_MODE_SET

constexpr uint8_t ERMCH1115::ERMCH1115_OFFSET_MODE_SET = 0xD3
staticconstexprprivate

Display Offset Mode Set:

◆ ERMCH1115_OSC_FREQ_DATA_SET

constexpr uint8_t ERMCH1115::ERMCH1115_OSC_FREQ_DATA_SET = 0xA0
staticconstexprprivate

Divide Ratio/Oscillator Frequency Data Set:

◆ ERMCH1115_OSC_FREQ_MODE_SET

constexpr uint8_t ERMCH1115::ERMCH1115_OSC_FREQ_MODE_SET = 0xD5
staticconstexprprivate

Divide Ratio/Oscillator Frequency Mode Set: (D5H)

◆ ERMCH1115_PRECHARGE_DATA_SET

constexpr uint8_t ERMCH1115::ERMCH1115_PRECHARGE_DATA_SET = 0x22
staticconstexprprivate

Discharge/Pre-charge Period Data Set: (00H - FFH)

◆ ERMCH1115_PRECHARGE_MODE_SET

constexpr uint8_t ERMCH1115::ERMCH1115_PRECHARGE_MODE_SET = 0xD9
staticconstexprprivate

Pre-charge Period Mode Set:

◆ ERMCH1115_SCROLL_SETUP

constexpr uint8_t ERMCH1115::ERMCH1115_SCROLL_SETUP = 0x26
staticconstexprprivate

Horizontal Scroll Setup: 26 right 27 left (A2 – A0)

◆ ERMCH1115_SEG_SET_PADS

constexpr uint8_t ERMCH1115::ERMCH1115_SEG_SET_PADS = 0xA2
staticconstexprprivate

Set SEG pads hw config: (A2H – A3H)

◆ ERMCH1115_SEG_SET_REMAP

constexpr uint8_t ERMCH1115::ERMCH1115_SEG_SET_REMAP = 0xA0
staticconstexprprivate

Set Segment Re-map: (A0H - A1H)

◆ ERMCH1115_SET_COLADD_LSB

constexpr uint8_t ERMCH1115::ERMCH1115_SET_COLADD_LSB = 0x00
staticconstexprprivate

Set Lower Column Address: (00H - 0FH)

◆ ERMCH1115_SET_COLADD_MSB

constexpr uint8_t ERMCH1115::ERMCH1115_SET_COLADD_MSB = 0x10
staticconstexprprivate

Set Higher Column Address: (10H – 1FH)

◆ ERMCH1115_SET_DISPLAY_START_LINE

constexpr uint8_t ERMCH1115::ERMCH1115_SET_DISPLAY_START_LINE = 0x40
staticconstexprprivate

Determine the initial display line

◆ ERMCH1115_SET_PAGEADD

constexpr uint8_t ERMCH1115::ERMCH1115_SET_PAGEADD = 0xB0
staticconstexprprivate

Set Page Address: (B0H - B7H)

◆ ERMCH1115_SET_PUMP_REG

constexpr uint8_t ERMCH1115::ERMCH1115_SET_PUMP_REG = 0x30
staticconstexprprivate

Output voltage (V PP ) internal charger pump.

◆ ERMCH1115_SET_PUMP_SET

constexpr uint8_t ERMCH1115::ERMCH1115_SET_PUMP_SET = 0x01
staticconstexprprivate

A1:A0[] 01 = 7.4v

◆ ERMCH1115_SET_SCROLL_MODE

constexpr uint8_t ERMCH1115::ERMCH1115_SET_SCROLL_MODE = 0x28
staticconstexprprivate

Set Scroll Mode: (28H – 2BH) = 0x28 = continuous

◆ ERMCH1115_SPAGE_ADR_SET

constexpr uint8_t ERMCH1115::ERMCH1115_SPAGE_ADR_SET = 0x00
staticconstexprprivate

Start Page Address Set = 0x00 = page 0

◆ ERMCH1115_TIME_SET

constexpr uint8_t ERMCH1115::ERMCH1115_TIME_SET = 0x00
staticconstexprprivate

Time Interval Set: (B2 – B0) = 0x00 = 6 frames


The documentation for this class was generated from the following files: