displaylib_1bit_PICO 2.0.0
1-bit colour graphic display library, Rpi PICO RP2040 library
|
Public Types | |
enum | LCD_rotate_cmd_e : uint8_t { ROTATION_FLIP_THREE = 0x00 , ROTATION_FLIP_ONE = 0x02 , ROTATION_NORMAL = 0x04 , ROTATION_FLIP_TWO = 0x06 } |
![]() | |
enum | PixelColor : uint8_t { BG_COLOR = 0 , FG_COLOR = 1 , INVERSE = 2 } |
Display Pixel colours definition. More... | |
enum | display_rotate_e : uint8_t { rDegrees_0 = 0 , rDegrees_90 = 1 , rDegrees_180 = 2 , rDegrees_270 = 3 } |
![]() | |
enum | BaseNum : uint8_t { DEC = 10 , HEX = 16 , OCT = 8 , BIN = 2 } |
Public Member Functions | |
ERM19264 (int16_t width, int16_t height) | |
init the LCD class object | |
virtual void | drawPixel (int16_t x, int16_t y, uint8_t colour) override |
Draws a Pixel to the screen , overrides the graphics library. | |
DisplayRet::Ret_Codes_e | LCDupdate (void) |
updates the LCD i.e. writes the shared buffer to the active screen pointed to by ActiveBuffer | |
DisplayRet::Ret_Codes_e | LCDSetBufferPtr (uint8_t width, uint8_t height, std::span< uint8_t > buffer) |
sets the buffer pointer to the users screen data buffer | |
DisplayRet::Ret_Codes_e | LCDclearBuffer (void) |
clears the buffer of the active screen pointed to by ActiveBuffer | |
void | LCDBuffer (int16_t x, int16_t y, uint8_t w, uint8_t h, std::span< uint8_t > data) |
Draw an array to the screen. | |
void | LCDBitmap (int16_t x, int16_t y, uint8_t w, uint8_t h, std::span< const uint8_t > data) |
Draw a bitmap in direct to screen to the screen. | |
void | LCDSPISetup (spi_inst_t *spi, uint32_t spiBaudRate, int8_t cd, int8_t rst, int8_t cs, int8_t sclk, int8_t din) |
initialise LCD pinmodes and SPI setup | |
void | LCDinit (uint8_t VbiasPot=UC1609_DEFAULT_GN_PM, uint8_t AddressSet=UC1609_ADDRESS_SET) |
begin Method initialise LCD | |
void | LCDEnable (uint8_t on) |
Turns On Display. | |
void | LCDFillScreen (uint8_t pixel, uint8_t mircodelay) |
Fill the screen NOT the buffer with a datapattern. | |
void | LCDFillPage (uint8_t pixels) |
Fill the chosen page at cursor with a datapattern. | |
void | LCDsetRotateCmd (LCD_rotate_cmd_e rotatevalue) |
Rotates the display using LCD built-in rotate commands. | |
void | LCDInvertDisplay (uint8_t on) |
invert the display | |
void | LCDAllpixelsOn (uint8_t bits) |
turns on all Pixels | |
void | LCDGotoXY (uint8_t column, uint8_t page) |
Goes to X Y position. | |
void | LCDscroll (uint8_t bits) |
Scroll the displayed image up by SL rows. | |
void | LCDReset (void) |
Resets LCD in a four wire setup called at start and should also be called in a controlled power down setting. | |
void | LCDPowerDown (void) |
Powerdown procedure for LCD see datasheet P40. | |
void | LCDSPIoff (void) |
End SPI operations. | |
![]() | |
displaylib_graphics (int16_t w, int16_t h) | |
init the OLED Graphics class object constructor | |
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). | |
void | drawFastVLine (int16_t x, int16_t y, int16_t h, uint8_t color) |
Draws a vertical line starting at (x,y) with height h. | |
void | 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 | 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 with center coordinates (centerX, centerY) and a given 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 | 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 defined by the 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 | setCursor (int16_t x, int16_t y) |
set the cursor position | |
virtual size_t | write (uint8_t) |
write method used in the print class when user calls print | |
DisplayRet::Ret_Codes_e | writeChar (int16_t x, int16_t y, char value) |
Write 1 character on OLED. | |
DisplayRet::Ret_Codes_e | writeCharString (int16_t x, int16_t y, char *text) |
Write Text character array on OLED. | |
void | setTextWrap (bool w) |
turn on or off screen _textwrap of the text (fonts 1-6) | |
void | setDrawBitmapAddr (bool mode) |
sets the data addressing mode in drawBitmap function. | |
DisplayRet::Ret_Codes_e | drawBitmap (int16_t x, int16_t y, std::span< const uint8_t > bitmap, int16_t w, int16_t h, uint8_t color, uint8_t bg) |
Draw a 1-bit color bitmap. | |
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) | |
display_rotate_e | getRotation (void) |
Gets the _rotation of the display. | |
void | setRotation (display_rotate_e r) |
Sets the _rotation of the display. | |
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 | 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) |
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. | |
DisplayRet::Ret_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. | |
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. | |
DisplayRet::Ret_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. | |
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. | |
![]() | |
displaylib_fonts () | |
init the OLED font class object constructor | |
DisplayRet::Ret_Codes_e | setFont (std::span< const uint8_t > font) |
SSD1306_SetFont. | |
void | setInvertFont (bool invertStatus) |
setInvertFont | |
bool | getInvertFont (void) |
getInvertFont | |
![]() | |
int | getWriteError () |
gets the error flag status, zero no error | |
void | clearWriteError () |
clears the errof flag by setting it to zero | |
size_t | write (const char *str) |
virtual size_t | write (const uint8_t *buffer, size_t size) |
size_t | write (const char *buffer, size_t size) |
virtual int | availableForWrite () |
size_t | print (const char[]) |
size_t | print (char) |
size_t | print (int, int=DEC) |
size_t | print (unsigned int, int=DEC) |
size_t | print (long, int=DEC) |
size_t | print (unsigned long, int=DEC) |
size_t | print (double, int=2) |
size_t | print (const std::string &) |
size_t | println (const char[]) |
size_t | println (char) |
size_t | println (int, int=DEC) |
size_t | println (unsigned int, int=DEC) |
size_t | println (long, int=DEC) |
size_t | println (unsigned long, int=DEC) |
size_t | println (double, int=2) |
size_t | println (void) |
size_t | println (const std::string &s) |
Private Member Functions | |
void | SendData (uint8_t data) |
Send data byte with SPI to UC1609. | |
void | SendCommand (uint8_t command, uint8_t value) |
Sends a command to the display. | |
Private Attributes | |
int8_t | _display_CS |
int8_t | _display_CD |
int8_t | _display_RST |
int8_t | _display_SCLK |
int8_t | _display_DIN |
spi_inst_t * | _spiInterface |
int16_t | _LCD_WIDTH = 192 |
int16_t | _LCD_HEIGHT = 64 |
int8_t | _LCD_PAGE_NUM = (_LCD_HEIGHT / 8) |
std::span< uint8_t > | _LCDbuffer |
uint8_t | _VbiasPOT |
uint8_t | _AddressCtrl |
Static Private Attributes | |
static constexpr uint8_t | UC1609_SYSTEM_RESET = 0xE2 |
static constexpr uint8_t | UC1609_POWER_CONTROL = 0x28 |
static constexpr uint8_t | UC1609_PC_SET = 0x06 |
static constexpr uint8_t | UC1609_ADDRESS_CONTROL = 0x88 |
static constexpr uint8_t | UC1609_ADDRESS_SET = 0x02 |
static constexpr uint8_t | UC1609_SET_PAGEADD = 0xB0 |
static constexpr uint8_t | UC1609_SET_COLADD_LSB = 0x00 |
static constexpr uint8_t | UC1609_SET_COLADD_MSB = 0x10 |
static constexpr uint8_t | UC1609_TEMP_COMP_REG = 0x27 |
static constexpr uint8_t | UC1609_TEMP_COMP_SET = 0x00 |
static constexpr uint8_t | UC1609_FRAMERATE_REG = 0xA0 |
static constexpr uint8_t | UC1609_FRAMERATE_SET = 0x01 |
static constexpr uint8_t | UC1609_BIAS_RATIO = 0xE8 |
static constexpr uint8_t | UC1609_BIAS_RATIO_SET = 0x03 |
static constexpr uint8_t | UC1609_GN_PM = 0x81 |
static constexpr uint8_t | UC1609_DEFAULT_GN_PM = 0x49 |
static constexpr uint8_t | UC1609_LCD_CONTROL = 0xC0 |
static constexpr uint8_t | UC1609_DISPLAY_ON = 0xAE |
static constexpr uint8_t | UC1609_ALL_PIXEL_ON = 0xA4 |
static constexpr uint8_t | UC1609_INVERSE_DISPLAY = 0xA6 |
static constexpr uint8_t | UC1609_SCROLL = 0x40 |
static constexpr uint8_t | UC1609_RESET_DELAY = 3 |
static constexpr uint8_t | UC1609_RESET_DELAY2 = 0 |
static constexpr uint8_t | UC1609_INIT_DELAY = 100 |
static constexpr uint8_t | UC1609_INIT_DELAY2 = 3 |
Additional Inherited Members | |
![]() | |
float | sineFromDegrees (float angle) |
Computes the sine of an angle given in degrees. This function converts the input angle from degrees to radians and then calculates the sine of that angle using the standard C++ sin function. | |
float | cosineFromDegrees (float angle) |
Computes the cosine of an angle given in degrees. This function converts the input angle from degrees to radians and then calculates the cosine of that angle using the standard C++ cos function. | |
void | ellipseHelper (uint16_t cx, uint16_t cy, uint16_t x, uint16_t y, uint8_t color) |
void | drawArcHelper (uint16_t cx, uint16_t cy, uint16_t radius, uint16_t thickness, float start, float end, uint8_t color) |
void | drawCircleHelper (int16_t x0, int16_t y0, int16_t r, uint8_t cornername, uint8_t color) |
void | fillCircleHelper (int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint8_t color) |
![]() | |
void | setWriteError (int err=1) |
![]() | |
const int16_t | WIDTH |
const int16_t | HEIGHT |
display_rotate_e | _display_rotate = rDegrees_0 |
int16_t | _width |
int16_t | _height |
int16_t | _cursor_x = 0 |
int16_t | _cursor_y = 0 |
bool | _drawBitmapAddr |
bool | _textwrap = true |
float | _arcAngleMax = 360.0f |
int | _arcAngleOffset = 0 |
![]() | |
std::span< const uint8_t > | _FontSelect = pFontDefault |
uint8_t | _Font_X_Size = 0x06 |
uint8_t | _Font_Y_Size = 0x08 |
uint8_t | _FontOffset = 0x00 |
uint8_t | _FontNumChars = 0xFE |
ERM19264::ERM19264 | ( | int16_t | lcdwidth, |
int16_t | lcdheight | ||
) |
init the LCD class object
lcdwidth | width of LCD in pixels |
lcdheight | height of LCD in pixels |
|
overridevirtual |
Draws a Pixel to the screen , overrides the graphics library.
x | x co-ord of pixel |
y | y co-ord of pixel |
colour | colour of pixel |
Implements displaylib_graphics.
void ERM19264::LCDAllpixelsOn | ( | uint8_t | bits | ) |
turns on all Pixels
bits | Set DC[1] to force all SEG drivers to output ON signals 1 all on , 0 all off |
void ERM19264::LCDBitmap | ( | int16_t | x, |
int16_t | y, | ||
uint8_t | w, | ||
uint8_t | h, | ||
std::span< const uint8_t > | data | ||
) |
Draw a bitmap in direct to screen to the screen.
x | offset 0-192 |
y | offset 0-64 |
w | width 0-192 |
h | height 0-64 |
data | span to the bitmap data |
void ERM19264::LCDBuffer | ( | int16_t | x, |
int16_t | y, | ||
uint8_t | w, | ||
uint8_t | h, | ||
std::span< uint8_t > | data | ||
) |
Draw an array to the screen.
x | offset 0-192 |
y | offset 0-64 |
w | width 0-192 |
h | height 0-64 |
data | span to the buffer array |
DisplayRet::Ret_Codes_e ERM19264::LCDclearBuffer | ( | void | ) |
clears the buffer of the active screen pointed to by ActiveBuffer
void ERM19264::LCDEnable | ( | uint8_t | bits | ) |
Turns On Display.
bits | 1 display on , 0 display off |
void ERM19264::LCDFillPage | ( | uint8_t | dataPattern = 0 | ) |
Fill the chosen page at cursor with a datapattern.
dataPattern | can be set to 0 to FF (not buffer) |
void ERM19264::LCDFillScreen | ( | uint8_t | dataPattern = 0 , |
uint8_t | delay = 0 |
||
) |
Fill the screen NOT the buffer with a datapattern.
dataPattern | can be set to zero to clear screen (not buffer) range 0x00 to 0ff |
delay | optional delay in microseconds can be set to zero normally. |
void ERM19264::LCDGotoXY | ( | uint8_t | column, |
uint8_t | page | ||
) |
Goes to X Y position.
column | Column 0-192 |
page | 0-7 |
void ERM19264::LCDinit | ( | uint8_t | VbiasPOT = UC1609_DEFAULT_GN_PM , |
uint8_t | AddressSet = UC1609_ADDRESS_SET |
||
) |
begin Method initialise LCD
VbiasPOT | contrast default = 0x49 , range 0x00 to 0xFE |
AddressSet | AC [2:0] registers for RAM addr ctrl. default=2 range 0-7 |
void ERM19264::LCDInvertDisplay | ( | uint8_t | bits | ) |
invert the display
bits | 1 invert , 0 normal |
void ERM19264::LCDscroll | ( | uint8_t | bits | ) |
Scroll the displayed image up by SL rows.
The valid SL value is between 0 (for no scrolling) and (64). Setting SL outside of this range causes undefined effect on the displayed image.
bits | 0-64 line number y-axis |
DisplayRet::Ret_Codes_e ERM19264::LCDSetBufferPtr | ( | uint8_t | width, |
uint8_t | height, | ||
std::span< uint8_t > | buffer | ||
) |
sets the buffer pointer to the users screen data buffer
width | width of buffer in pixels |
height | height of buffer in pixels |
buffer | the buffer array which decays to pointer |
void ERM19264::LCDsetRotateCmd | ( | LCD_rotate_cmd_e | rotatevalue | ) |
Rotates the display using LCD built-in rotate commands.
Set LC[2:1] for COM (row) mirror (MY), SEG (column) mirror (MX).
rotatevalue | enum 4 possible values 000 010 100 110 (defined) |
void ERM19264::LCDSPISetup | ( | spi_inst_t * | spiType, |
uint32_t | spiSpeedKhz, | ||
int8_t | cd, | ||
int8_t | rst, | ||
int8_t | cs, | ||
int8_t | sclk, | ||
int8_t | din | ||
) |
initialise LCD pinmodes and SPI setup
spiType | SPi instance to initialize |
spiSpeedKhz | SPI baud rate in Khz |
cd | GPIO data or command |
rst | GPIO reset |
cs | GPIO Chip select |
sclk | GPIO SPI Clock |
din | GPIO MOSI |
DisplayRet::Ret_Codes_e ERM19264::LCDupdate | ( | void | ) |
updates the LCD i.e. writes the shared buffer to the active screen pointed to by ActiveBuffer
|
private |
Sends a command to the display.
command | Command to send |
value | the values to change |
|
private |
Send data byte with SPI to UC1609.
data | the data byte to send |
|
private |
Set AC [2:0] Program registers for RAM address control. 0x00 to 0x07
|
private |
GPIO Data or command line
|
private |
GPIO Chip select line
|
private |
GPIO MOSI Line , Tied to SPI interface
|
private |
GPIO Reset line
|
private |
GPIO Clock Line , Tied to SPI interface
|
private |
Height of LCD Screen in pixels
|
private |
Number of byte size pages LCD screen is divided into
|
private |
Width of LCD Screen in pixels
|
private |
Buffer to hold screen data
|
private |
SPI instance spi0 or spi1
|
private |
Contrast default 0x49 datasheet 00-FE, lower works better on Blue
|
staticconstexprprivate |
Set RAM address control
|
staticconstexprprivate |
Set AC [2:0] Program registers for RAM address control.
|
staticconstexprprivate |
Sets all Pixels on
|
staticconstexprprivate |
Bias Ratio. The ratio between V-LCD and V-D.
|
staticconstexprprivate |
Set BR[1:0] = 11 (set to 9 default)
|
staticconstexprprivate |
Default only used if user does not specify Vbias
|
staticconstexprprivate |
Enables display
|
staticconstexprprivate |
Frame rate
|
staticconstexprprivate |
Set Frame Rate LC [4:3] 01b: 95 fps
|
staticconstexprprivate |
Set V BIAS Potentiometer to fine-tune V-D and V-LCD (double-byte command)
|
staticconstexprprivate |
mS delay ,after init
|
staticconstexprprivate |
mS delay, before reset called datasheet <3mS
|
staticconstexprprivate |
Inverts display
|
staticconstexprprivate |
Rotate map control
|
staticconstexprprivate |
PC[2:0] 110, Internal V LCD (7x charge pump) + 10b: 1.4mA
|
staticconstexprprivate |
Power control Address 0
|
staticconstexprprivate |
ms Delay ,datasheet >3uS
|
staticconstexprprivate |
mS delay datasheet says > 5mS, does not work?
|
staticconstexprprivate |
Scrolls, Set the scroll line number. 0-64
|
staticconstexprprivate |
Column Address Set CA [3:0]
|
staticconstexprprivate |
Column Address Set CA [7:4]
|
staticconstexprprivate |
Page address Set PA[3:0]
|
staticconstexprprivate |
System SW Reset
|
staticconstexprprivate |
Temperature Compensation Register
|
staticconstexprprivate |
TC[1:0] = 00b= -0.00%/ C