displaylib_1bit_PICO 2.0.0
1-bit colour graphic display library, Rpi PICO RP2040 library
Loading...
Searching...
No Matches
ch1115.hpp
Go to the documentation of this file.
1
8#pragma once
9
10// ** INCLUDES **
11#include "hardware/spi.h"
13
14
15// ** CLASS SECTION **
16
19{
20private:
21 /* CH1115 Command Set*/
22 // Fundamental Commands
23 static constexpr uint8_t ERMCH1115_ENTIRE_DISPLAY_ON = 0xA4;
24 static constexpr uint8_t ERMCH1115_ENTIRE_DISPLAY_OFF = 0xA5;
25 static constexpr uint8_t ERMCH1115_DISPLAY_ON = 0xAF;
26 static constexpr uint8_t ERMCH1115_DISPLAY_OFF = 0xAE;
27 static constexpr uint8_t ERMCH1115_DISPLAY_NORMAL = 0xA6;
28 static constexpr uint8_t ERMCH1115_DISPLAY_INVERT = 0xA7;
29 static constexpr uint8_t ERMCH1115_CONTRAST_CONTROL = 0x81;
30 static constexpr uint8_t ERMCH1115_CONTRAST_DATA_DEFAULT = 0x80;
31 // Addressing Setting Commands
32 static constexpr uint8_t ERMCH1115_SET_PAGEADD = 0xB0;
33 static constexpr uint8_t ERMCH1115_SET_COLADD_LSB = 0x00;
34 static constexpr uint8_t ERMCH1115_SET_COLADD_MSB = 0x10;
35 static constexpr uint8_t ERMCH1115_SET_DISPLAY_START_LINE = 0x40;
36 // Hardware Configuration Commands
37 static constexpr uint8_t ERMCH1115_SET_PUMP_REG = 0x30;
38 static constexpr uint8_t ERMCH1115_SET_PUMP_SET = 0x01;
39 static constexpr uint8_t ERMCH1115_IREF_REG = 0x82;
40 static constexpr uint8_t ERMCH1115_IREF_SET = 0x00;
41 static constexpr uint8_t ERMCH1115_SEG_SET_REMAP = 0xA0;
42 static constexpr uint8_t ERMCH1115_SEG_SET_PADS = 0xA2;
43 static constexpr uint8_t ERMCH1115_MULTIPLEX_MODE_SET = 0xA8;
44 static constexpr uint8_t ERMCH1115_MULTIPLEX_DATA_SET = 0x3F;
45 static constexpr uint8_t ERMCH1115_DC_MODE_SET = 0xAD;
46 static constexpr uint8_t ERMCH1115_DC_ONOFF_SET = 0x8B;
47 static constexpr uint8_t ERMCH1115_COMMON_SCAN_DIR = 0xC0;
48 static constexpr uint8_t ERMCH1115_OFFSET_MODE_SET = 0xD3;
49 static constexpr uint8_t ERMCH1115_OFFSET_DATA_SET = 0x00;
50 static constexpr uint8_t ERMCH1115_BREATHEFFECT_SET = 0x23;
51 static constexpr uint8_t ERMCH1115_BREATHEFFECT_DATA = 0x81;
52 // Timing & Driving Scheme Setting Commands
53 static constexpr uint8_t ERMCH1115_OSC_FREQ_MODE_SET = 0xD5;
54 static constexpr uint8_t ERMCH1115_OSC_FREQ_DATA_SET = 0xA0;
55 static constexpr uint8_t ERMCH1115_PRECHARGE_MODE_SET = 0xD9;
56 static constexpr uint8_t ERMCH1115_PRECHARGE_DATA_SET = 0x22;
57 static constexpr uint8_t ERMCH1115_COM_LEVEL_MODE_SET = 0xDB;
58 static constexpr uint8_t ERMCH1115_COM_LEVEL_DATA_SET = 0x40;
59 // HORIZONTAL Scrolling Commands
60 static constexpr uint8_t ERMCH1115_HORIZONTAL_A_SCROLL_SETUP = 0x24;
61 static constexpr uint8_t ERMCH1115_HORIZONTAL_A_SCROLL_SET_SCOL = 0x00;
62 static constexpr uint8_t ERMCH1115_HORIZONTAL_A_SCROLL_SET_ECOL = 0x7F;
63 static constexpr uint8_t ERMCH1115_SCROLL_SETUP = 0x26;
64 static constexpr uint8_t ERMCH1115_SPAGE_ADR_SET = 0x00;
65 static constexpr uint8_t ERMCH1115_TIME_SET = 0x00;
66 static constexpr uint8_t ERMCH1115_EPAGE_ADR_SET = 0x07;
67 static constexpr uint8_t ERMCH1115_SET_SCROLL_MODE = 0x28;
68 static constexpr uint8_t ERMCH1115_DEACTIVATE_SCROLL = 0x2E;
69 static constexpr uint8_t ERMCH1115_ACTIVATE_SCROLL = 0x2F;
71 void send_data(uint8_t data);
72 void send_command(uint8_t command, uint8_t value);
73
74 int8_t _display_CS;
75 int8_t _display_CD;
76 int8_t _display_RST;
78 int8_t _display_DIN;
80 bool _sleep = true;
81 uint8_t _OLEDcontrast;
82 spi_inst_t *spiInterface;
84 int16_t _OLED_WIDTH = 128;
85 int16_t _OLED_HEIGHT = 64;
87 uint8_t *_OLEDbuffer = nullptr;
89public:
90 ERMCH1115(int16_t width, int16_t height);
91 ~ERMCH1115(){};
92
93 virtual void drawPixel(int16_t x, int16_t y, uint8_t colour) override;
94 void OLEDupdate(void);
95 void OLEDclearBuffer(void);
96 void OLEDBufferScreen(int16_t x, int16_t y, uint8_t w, uint8_t h, uint8_t *data);
97 uint8_t OLEDSetBufferPtr(uint8_t width, uint8_t height, uint8_t *pBuffer, uint16_t sizeOfBuffer);
98
99 void OLEDSPISetup(spi_inst_t *spi, uint32_t spiBaudRate, int8_t cd, int8_t rst, int8_t cs, int8_t sclk, int8_t din);
100 void OLEDinit(uint8_t OLEDcontrast);
101 void OLEDReset(void);
102
103 void OLEDFillScreen(uint8_t pixel, uint8_t mircodelay);
104 void OLEDFillPage(uint8_t page_num, uint8_t pixels, uint8_t delay);
105 void OLEDBitmap(int16_t x, int16_t y, uint8_t w, uint8_t h, const uint8_t *data);
106
107 void OLEDEnable(uint8_t on);
108 void OLEDInvert(uint8_t on);
109 void OLEDFlip(uint8_t on);
110 void OLEDContrast(uint8_t contrast);
111 void OLEDscroll(uint8_t bits);
112 void OLEDscrollSetup(uint8_t Timeinterval = ERMCH1115_TIME_SET, uint8_t Direction = ERMCH1115_SCROLL_SETUP, uint8_t mode = ERMCH1115_SET_SCROLL_MODE);
113 void OLEDfadeEffect(uint8_t bits = ERMCH1115_BREATHEFFECT_DATA);
114 bool OLEDIssleeping(void);
115 void OLEDPowerDown(void);
116};// end of class
class to drive the ERMCh1115 OLED
Definition ch1115.hpp:19
static constexpr uint8_t ERMCH1115_PRECHARGE_DATA_SET
Definition ch1115.hpp:56
static constexpr uint8_t ERMCH1115_ENTIRE_DISPLAY_OFF
Definition ch1115.hpp:24
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.
Definition ch1115.cpp:197
static constexpr uint8_t ERMCH1115_PRECHARGE_MODE_SET
Definition ch1115.hpp:55
void OLEDSPISetup(spi_inst_t *spi, uint32_t spiBaudRate, int8_t cd, int8_t rst, int8_t cs, int8_t sclk, int8_t din)
begin Method initialise OLED Sets pinmodes and SPI setup
Definition ch1115.cpp:34
static constexpr uint8_t ERMCH1115_ACTIVATE_SCROLL
Definition ch1115.hpp:69
static constexpr uint8_t ERMCH1115_DC_MODE_SET
Definition ch1115.hpp:45
bool OLEDIssleeping(void)
getting for _sleep member . is OLED in sleep mode
Definition ch1115.cpp:189
static constexpr uint8_t ERMCH1115_TIME_SET
Definition ch1115.hpp:65
bool _sleep
Definition ch1115.hpp:80
static constexpr uint8_t ERMCH1115_SEG_SET_REMAP
Definition ch1115.hpp:41
static constexpr uint8_t ERMCH1115_OSC_FREQ_DATA_SET
Definition ch1115.hpp:54
static constexpr uint8_t ERMCH1115_COM_LEVEL_MODE_SET
Definition ch1115.hpp:57
void OLEDBufferScreen(int16_t x, int16_t y, uint8_t w, uint8_t h, uint8_t *data)
Draw buffer data to the screen.
Definition ch1115.cpp:415
static constexpr uint8_t ERMCH1115_SET_DISPLAY_START_LINE
Definition ch1115.hpp:35
static constexpr uint8_t ERMCH1115_CONTRAST_CONTROL
Definition ch1115.hpp:29
static constexpr uint8_t ERMCH1115_IREF_REG
Definition ch1115.hpp:39
static constexpr uint8_t ERMCH1115_SET_COLADD_LSB
Definition ch1115.hpp:33
void OLEDFillPage(uint8_t page_num, uint8_t pixels, uint8_t delay)
Fill the chosen page(0-7) with a datapattern.
Definition ch1115.cpp:321
spi_inst_t * spiInterface
Definition ch1115.hpp:82
static constexpr uint8_t ERMCH1115_SPAGE_ADR_SET
Definition ch1115.hpp:64
static constexpr uint8_t ERMCH1115_SET_PAGEADD
Definition ch1115.hpp:32
int16_t _OLED_HEIGHT
Definition ch1115.hpp:85
uint8_t OLEDSetBufferPtr(uint8_t width, uint8_t height, uint8_t *pBuffer, uint16_t sizeOfBuffer)
sets the buffer pointer to the users screen data buffer
Definition ch1115.cpp:505
static constexpr uint8_t ERMCH1115_SET_COLADD_MSB
Definition ch1115.hpp:34
static constexpr uint8_t ERMCH1115_COM_LEVEL_DATA_SET
Definition ch1115.hpp:58
static constexpr uint8_t ERMCH1115_HORIZONTAL_A_SCROLL_SETUP
Definition ch1115.hpp:60
void OLEDfadeEffect(uint8_t bits=ERMCH1115_BREATHEFFECT_DATA)
Turns on fade effect.
Definition ch1115.cpp:265
static constexpr uint8_t ERMCH1115_DISPLAY_ON
Definition ch1115.hpp:25
int8_t _OLED_PAGE_NUM
Definition ch1115.hpp:86
static constexpr uint8_t ERMCH1115_OFFSET_DATA_SET
Definition ch1115.hpp:49
static constexpr uint8_t ERMCH1115_BREATHEFFECT_SET
Definition ch1115.hpp:50
void OLEDscroll(uint8_t bits)
Turns on Horizontal scroll.
Definition ch1115.cpp:221
static constexpr uint8_t ERMCH1115_OFFSET_MODE_SET
Definition ch1115.hpp:48
void OLEDBitmap(int16_t x, int16_t y, uint8_t w, uint8_t h, const uint8_t *data)
Draw a bitmap to the screen.
Definition ch1115.cpp:354
static constexpr uint8_t ERMCH1115_HORIZONTAL_A_SCROLL_SET_ECOL
Definition ch1115.hpp:62
void OLEDEnable(uint8_t on)
Turns On Display.
Definition ch1115.cpp:168
static constexpr uint8_t ERMCH1115_COMMON_SCAN_DIR
Definition ch1115.hpp:47
int8_t _display_SCLK
Definition ch1115.hpp:77
static constexpr uint8_t ERMCH1115_CONTRAST_DATA_DEFAULT
Definition ch1115.hpp:30
void OLEDinit(uint8_t OLEDcontrast)
Called from OLEDbegin carries out Power on sequence and register init.
Definition ch1115.cpp:72
static constexpr uint8_t ERMCH1115_DISPLAY_NORMAL
Definition ch1115.hpp:27
int16_t _OLED_WIDTH
Definition ch1115.hpp:84
static constexpr uint8_t ERMCH1115_HORIZONTAL_A_SCROLL_SET_SCOL
Definition ch1115.hpp:61
static constexpr uint8_t ERMCH1115_SET_SCROLL_MODE
Definition ch1115.hpp:67
static constexpr uint8_t ERMCH1115_SET_PUMP_REG
Definition ch1115.hpp:37
uint8_t _OLEDcontrast
Definition ch1115.hpp:81
static constexpr uint8_t ERMCH1115_DISPLAY_OFF
Definition ch1115.hpp:26
static constexpr uint8_t ERMCH1115_DC_ONOFF_SET
Definition ch1115.hpp:46
void OLEDclearBuffer(void)
clears the active shared buffer i.e. does NOT write to the screen
Definition ch1115.cpp:401
void OLEDReset(void)
Resets OLED in a four wire setup called at start.
Definition ch1115.cpp:151
static constexpr uint8_t ERMCH1115_DEACTIVATE_SCROLL
Definition ch1115.hpp:68
static constexpr uint8_t ERMCH1115_EPAGE_ADR_SET
Definition ch1115.hpp:66
static constexpr uint8_t ERMCH1115_SEG_SET_PADS
Definition ch1115.hpp:42
void send_data(uint8_t data)
Send data byte with SPI to ERMCH1115.
Definition ch1115.cpp:143
static constexpr uint8_t ERMCH1115_MULTIPLEX_DATA_SET
Definition ch1115.hpp:44
static constexpr uint8_t ERMCH1115_SET_PUMP_SET
Definition ch1115.hpp:38
int8_t _display_CD
Definition ch1115.hpp:75
void OLEDInvert(uint8_t on)
invert the display
Definition ch1115.cpp:294
void OLEDPowerDown(void)
Power down function.
Definition ch1115.cpp:279
int8_t _display_CS
Definition ch1115.hpp:74
virtual void drawPixel(int16_t x, int16_t y, uint8_t colour) override
Draws a Pixel to the screen, overides the graphics library.
Definition ch1115.cpp:455
void OLEDContrast(uint8_t contrast)
Adjusts contrast.
Definition ch1115.cpp:233
void OLEDupdate(void)
updates the OLED i.e. writes buffer to the screen
Definition ch1115.cpp:389
static constexpr uint8_t ERMCH1115_DISPLAY_INVERT
Definition ch1115.hpp:28
uint8_t * _OLEDbuffer
Definition ch1115.hpp:87
int8_t _display_RST
Definition ch1115.hpp:76
void OLEDFlip(uint8_t on)
Rotates the display vertically, A 180 degree 'flip'.
Definition ch1115.cpp:246
void send_command(uint8_t command, uint8_t value)
Sends a command to the display.
Definition ch1115.cpp:132
static constexpr uint8_t ERMCH1115_IREF_SET
Definition ch1115.hpp:40
static constexpr uint8_t ERMCH1115_MULTIPLEX_MODE_SET
Definition ch1115.hpp:43
static constexpr uint8_t ERMCH1115_OSC_FREQ_MODE_SET
Definition ch1115.hpp:53
static constexpr uint8_t ERMCH1115_BREATHEFFECT_DATA
Definition ch1115.hpp:51
void OLEDFillScreen(uint8_t pixel, uint8_t mircodelay)
Fill the screen NOT the buffer with a datapattern.
Definition ch1115.cpp:307
int8_t _display_DIN
Definition ch1115.hpp:78
static constexpr uint8_t ERMCH1115_SCROLL_SETUP
Definition ch1115.hpp:63
static constexpr uint8_t ERMCH1115_ENTIRE_DISPLAY_ON
Definition ch1115.hpp:23
Graphics class to hold graphic related functions.
Definition display_graphics.hpp:22
int16_t height(void) const
Gets the height of the display (per current _rotation)
Definition display_graphics.cpp:677
int16_t width(void) const
Gets the width of the display (per current _rotation)
Definition display_graphics.cpp:668
header file for the graphics based functions, 1-bit color displays.