|
Display_Lib_RPI 2.7.0
A C++ Library to connect electronic displays to Linux single board computers.
|
Class to control ST7735 TFT basic functionality. More...
#include <ST7735_TFT_LCD_RDL.hpp>

Public Types | |
| enum | TFT_modes_e : uint8_t { TFT_Normal_mode = 0 , TFT_Partial_mode , TFT_Idle_mode , TFT_Sleep_mode , TFT_Invert_mode , TFT_Display_on_mode , TFT_Display_off_mode } |
| enum | TFT_PCBtype_e : uint8_t { TFT_ST7735R_Red = 0 , TFT_ST7735R_Green , TFT_ST7735S_Black , TFT_ST7735B , TFT_ST7735S_80160 } |
Public Types inherited from color16_graphics | |
| enum class | AdvancedScreenBuffer_e : uint8_t { Off = 0 , On = 1 } |
| enum to define buffer mode: on or off Default is off, commented OUT , tested in file examples/st7735/advanced_screen_buffer_mode More... | |
| enum | pixel_color565_e : uint16_t { RDLC_BLACK = 0x0000 , RDLC_BLUE = 0x001F , RDLC_RED = 0xF800 , RDLC_GREEN = 0x07E0 , RDLC_CYAN = 0x07FF , RDLC_MAGENTA = 0xF81F , RDLC_YELLOW = 0xFFE0 , RDLC_WHITE = 0xFFFF , RDLC_TAN = 0xED01 , RDLC_GREY = 0x9CD1 , RDLC_BROWN = 0x6201 , RDLC_DGREEN = 0x01C0 , RDLC_ORANGE = 0xFC00 , RDLC_NAVY = 0x000F , RDLC_DCYAN = 0x03EF , RDLC_MAROON = 0x7800 , RDLC_PURPLE = 0x780F , RDLC_OLIVE = 0x7BE0 , RDLC_LGREY = 0xC618 , RDLC_DGREY = 0x7BEF , RDLC_GYELLOW = 0xAFE5 , RDLC_PINK = 0xFC18 , RDLC_LBLUE = 0x7E5F , RDLC_BEIGE = 0xB5D2 } |
| 16-bit color definitions (RGB565 format). More... | |
| enum | display_rotate_e : uint8_t { Degrees_0 = 0 , Degrees_90 , Degrees_180 , Degrees_270 } |
Public Types inherited from Print | |
| enum | BaseNum : uint8_t { RDL_DEC = 10 , RDL_HEX = 16 , RDL_OCT = 8 , RDL_BIN = 2 } |
Public Member Functions | |
| ST7735_TFT () | |
| Constructor for class ST7735_TFT. | |
| virtual void | setAddrWindow (uint16_t, uint16_t, uint16_t, uint16_t) override |
| SPI displays set an address window rectangle for blitting pixels. | |
| void | TFTSetupGPIO (int8_t, int8_t, int8_t, int8_t, int8_t) |
| sets up TFT GPIO for software SPI | |
| void | TFTSetupGPIO (int8_t, int8_t) |
| sets up TFT GPIO for Hardware SPi | |
| void | TFTInitScreenSize (uint8_t xOffset, uint8_t yOffset, uint16_t w, uint16_t h) |
| initialise the variables that define the size of the screen | |
| rdlib::Return_Codes_e | TFTInitPCBType (TFT_PCBtype_e pcbType, uint16_t CommDelay, int gpioDev) |
| intialise PCBtype and SPI, Software SPI | |
| rdlib::Return_Codes_e | TFTInitPCBType (TFT_PCBtype_e pcbType, int device, int channel, int speed, int flags, int gpioDev) |
| intialise PCBtype and SPI, Hardware SPI | |
| uint16_t | HighFreqDelayGet (void) |
| Freq delay used in SW SPI getter, uS delay used in SW SPI method. | |
| void | HighFreqDelaySet (uint16_t) |
| Freq delay used in SW SPI setter, uS delay used in SW SPI method. | |
| rdlib::Return_Codes_e | TFTPowerDown (void) |
| Call when powering down TFT. | |
| rdlib::Return_Codes_e | TFTResetPin (void) |
| Method for Hardware Reset pin control. | |
| void | TFTsetRotation (display_rotate_e r) |
| : change rotation of display. | |
| void | TFTchangeInvertMode (bool invertModeOn) |
| Toggle the invert mode. | |
| void | TFTchangeMode (TFT_modes_e m) |
| This changes the mode of the display as: | |
| void | TFTsetScrollDefinition (uint8_t th, uint8_t tb, bool sd) |
| This method defines the Vertical Scrolling Area of the display where: | |
| void | TFTVerticalScroll (uint8_t vsp) |
| : This method is used together with the TFTsetScrollDefinition. | |
Public Member Functions inherited from color16_graphics | |
| color16_graphics () | |
| Construct a new graphics class object. | |
| rdlib::Return_Codes_e | setBuffer (void) |
| Allocates memory for the screen buffer based on display resolution. The buffer size is calculated as width × height × 2 bytes (RGB565 format). If allocation fails, it returns a memory allocation error. In debug mode, it prints the allocated buffer size. | |
| rdlib::Return_Codes_e | clearBuffer (uint16_t color=RDLC_BLACK) |
| Clears the screen buffer by filling it with a given color. The buffer is filled in RGB565 format. This function assumes the buffer has already been allocated via setBuffer(). | |
| rdlib::Return_Codes_e | writeBuffer (void) |
| Writes the contents of the screen buffer to the display. This function assumes the buffer has already been allocated and filled. It sets the address window for the entire screen and writes the buffer data. | |
| rdlib::Return_Codes_e | destroyBuffer (void) |
| Destroys the screen buffer by resizing it to zero. This function checks if the buffer has been successfully destroyed and prints debug information. | |
| void | fillScreen (uint16_t color) |
| Fills the whole screen with a given color. | |
| void | setCursor (int16_t x, int16_t y) |
| Set the Cursor Position on screen. | |
| void | setAdvancedScreenBuffer_e (AdvancedScreenBuffer_e mode) |
| setter for Advanced Screen Buffer mode | |
| AdvancedScreenBuffer_e | getAdvancedScreenBuffer_e () const |
| getter for Advanced Screen Buffer mode | |
| void | drawPixel (uint16_t, uint16_t, uint16_t) |
| Draw a pixel to screen. | |
| rdlib::Return_Codes_e | drawDotGrid (int16_t x, int16_t y, int16_t w, int16_t h, uint8_t DotGridGap, uint16_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, uint16_t color) |
| draws a line from (x0,y0) to (x1,y1). | |
| rdlib::Return_Codes_e | drawFastVLine (uint16_t x, uint16_t y, uint16_t h, uint16_t color) |
| Draws a vertical line starting at (x,y) with height h. | |
| rdlib::Return_Codes_e | drawFastHLine (uint16_t x, uint16_t y, uint16_t w, uint16_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, uint16_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 | drawRectWH (uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color) |
| draws rectangle at (x,y) where h is height and w is width of the rectangle. | |
| rdlib::Return_Codes_e | fillRectangle (uint16_t, uint16_t, uint16_t, uint16_t, uint16_t) |
| fills a rectangle starting from coordinates (x,y) with width of w and height of h. | |
| void | fillRect (uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color) |
| fills a rectangle at (x,y) where h is height and w is width of the rectangle. | |
| void | drawRoundRect (uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t r, uint16_t color) |
| draws a rectangle with rounded edges | |
| void | fillRoundRect (uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t r, uint16_t color) |
| Fills a rectangle with rounded edges. | |
| void | drawCircle (int16_t x0, int16_t y0, int16_t r, uint16_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, uint16_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, uint16_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, uint16_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, uint16_t color) |
| Fills a triangle of coordinates (x0,y0), (x1,y1) and (x2,y2). | |
| 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, uint16_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, uint16_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. | |
| rdlib::Return_Codes_e | drawPolygon (int16_t x, int16_t y, uint8_t sides, int16_t diameter, float rotation, bool fill, uint16_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 | drawSimpleArc (int16_t cx, int16_t cy, int16_t radius, float startAngle, float endAngle, uint16_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 | drawArc (uint16_t cx, uint16_t cy, uint16_t radius, uint16_t thickness, float startAngle, float endAngle, uint16_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. | |
| 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. | |
| 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, const char *text) |
| Write Text character array on display. | |
| void | setTextWrap (bool w) |
| turn on or off screen wrap of the text (fonts 1-6) | |
| void | setTextColor (uint16_t c, uint16_t bg) |
| Set text color foreground and background. | |
| void | setTextColor (uint16_t c) |
| Set text color foreground. | |
| void | setTextCharPixelOrBuffer (bool mode) |
| Set the text rendering mode to either buffered or pixel-by-pixel. | |
| bool | getTextCharPixelOrBuffer () const |
| Get the current text rendering mode. | |
| rdlib::Return_Codes_e | drawIcon (uint16_t x, uint16_t y, uint16_t w, uint16_t color, uint16_t bgcolor, const std::span< const uint8_t > data) |
| Draws an custom Icon of X by 8 size to screen , where X = 0 to 127. | |
| rdlib::Return_Codes_e | drawBitmap (uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color, uint16_t bgcolor, const std::span< const uint8_t > data) |
| : Draws an bi-color bitmap to screen | |
| rdlib::Return_Codes_e | drawBitmap24 (uint16_t x, uint16_t y, const std::span< const uint8_t > data, uint16_t w, uint16_t h) |
| Draws an 24 bit color bitmap to screen from a data array. | |
| rdlib::Return_Codes_e | drawBitmap16 (uint16_t x, uint16_t y, const std::span< const uint8_t > data, uint16_t w, uint16_t h) |
| : Draws an 16 bit color bitmap to screen from a data array | |
| rdlib::Return_Codes_e | drawSprite (uint16_t x, uint16_t y, const std::span< const uint8_t > data, uint16_t w, uint16_t h, uint16_t backgroundColor, bool printBg=false) |
| : Draws an 16 bit color sprite bitmap to screen with transparent background | |
| uint16_t | Color565 (int16_t, int16_t, int16_t) |
| Convert: 24-bit color to 565 16-bit color. | |
| int | getDisplaySPIBlockSize () const |
| Gets the maximum SPI transaction block size. | |
| void | setDisplaySPIBlockSize (int size) |
| Sets the maximum SPI transaction block size. | |
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. | |
Public Attributes | |
| TFT_modes_e | TFT_mode = TFT_Normal_mode |
| display_rotate_e | displayRotate = Degrees_0 |
| TFT_PCBtype_e | TFT_PCBtype = TFT_ST7735S_Black |
Private Member Functions | |
| rdlib::Return_Codes_e | TFTST7735BInitialize (void) |
| init routine for ST7735B controller | |
| rdlib::Return_Codes_e | TFTST7735S_80160Initialize (void) |
| Init routine for ST7735S 80x160 display (BOE / HSD panel variant). | |
| rdlib::Return_Codes_e | TFTGreenTabInitialize (void) |
| init sub-routine ST7735R Green Tab | |
| rdlib::Return_Codes_e | TFTBlackTabInitialize (void) |
| Init Routine ST7735R Black Tab (ST7735S) | |
| rdlib::Return_Codes_e | TFTRedTabInitialize (void) |
| ST7735R Red Tab Init Red PCB version. | |
| rdlib::Return_Codes_e | TFTSPIInit (void) |
| init the SPI | |
| rdlib::Return_Codes_e | TFTDataCommandPin (void) |
| Method for Data or Command pin setup. | |
| rdlib::Return_Codes_e | TFTClock_Data_ChipSelect_Pins (void) |
| Method for Clock, data and chip select pin setup routine for software SPI. | |
| void | Rcmd1 (void) |
| init sub-routine | |
| void | Rcmd2red (void) |
| init sub-routine | |
| void | Rcmd3 (void) |
| init sub-routine | |
| void | Bcmd (void) |
| init sub-routine for ST7735B controller | |
| void | Rcmd2green (void) |
| init sub-routine ST7735R Green Tab | |
| void | Scmd (void) |
| Init sub-routine for ST7735S 80x160 (BOE / HSD panel). | |
Private Attributes | |
| uint8_t | _colstart = 0 |
| uint8_t | _rowstart = 0 |
| uint16_t | _widthStartTFT = 128 |
| uint16_t | _heightStartTFT = 128 |
| int | _spiDev = 0 |
| int | _spiChan = 0 |
| int | _spiBaud = 50000 |
| int | _spiFlags = 0 |
Class to control ST7735 TFT basic functionality.
TFT display modes
Freq delay used in SW SPI getter, uS delay used in SW SPI method.
Freq delay used in SW SPI setter, uS delay used in SW SPI method.
| CommDelay | The GPIO communications delay in uS |
Init sub-routine for ST7735S 80x160 (BOE / HSD panel).
Translates the buydisplay.com reference sequence for the ST7735S_S5P_80160 panel. Frame rate registers use 0x3C (61 Hz) for all modes. MADCTL 0xC8 = MY | MX | BGR.
|
overridevirtual |
SPI displays set an address window rectangle for blitting pixels.
| x0 | Top left corner x coordinate |
| y0 | Top left corner y coordinate |
| x1 | Width of window |
| y1 | Height of window |
Implements color16_graphics.
|
private |
Init Routine ST7735R Black Tab (ST7735S)
Toggle the invert mode.
| invertModeOn | true invert on false invert off |
| void ST7735_TFT::TFTchangeMode | ( | TFT_modes_e | mode | ) |
This changes the mode of the display as:
| mode | enum TFT_mode value
|
|
private |
Method for Clock, data and chip select pin setup routine for software SPI.
|
private |
Method for Data or Command pin setup.
|
private |
init sub-routine ST7735R Green Tab
| rdlib::Return_Codes_e ST7735_TFT::TFTInitPCBType | ( | TFT_PCBtype_e | pcbType, |
| int | device, | ||
| int | channel, | ||
| int | speed, | ||
| int | flags, | ||
| int | gpioDev | ||
| ) |
intialise PCBtype and SPI, Hardware SPI
| pcbType | 5 choices |
| device | A SPI device, >= 0. |
| channel | A SPI channel, >= 0. |
| speed | The speed of serial communication in bits per second. |
| flags | The flags may be used to modify the default behaviour. Set to 0(mode 0) for this device. |
| gpioDev | The device number of a gpiochip. |
| rdlib::Return_Codes_e ST7735_TFT::TFTInitPCBType | ( | TFT_PCBtype_e | pcbType, |
| uint16_t | CommDelay, | ||
| int | gpioDev | ||
| ) |
intialise PCBtype and SPI, Software SPI
| pcbType | 5 choices 0-3 |
| CommDelay | uS GPIO delay used in software SPI |
| gpioDev | The device number of a gpiochip. |
| void ST7735_TFT::TFTInitScreenSize | ( | uint8_t | colOffset, |
| uint8_t | rowOffset, | ||
| uint16_t | width_TFT, | ||
| uint16_t | height_TFT | ||
| ) |
initialise the variables that define the size of the screen
| colOffset | Column offset |
| rowOffset | row offset |
| width_TFT | width in pixels |
| height_TFT | height in pixels |
| rdlib::Return_Codes_e ST7735_TFT::TFTPowerDown | ( | void | ) |
Call when powering down TFT.
|
private |
ST7735R Red Tab Init Red PCB version.
| rdlib::Return_Codes_e ST7735_TFT::TFTResetPin | ( | void | ) |
| void ST7735_TFT::TFTsetRotation | ( | display_rotate_e | mode | ) |
: change rotation of display.
| mode | TFT_rotate_e enum 0 = Normal 1= 90 rotate 2 = 180 rotate 3 = 270 rotate |
| void ST7735_TFT::TFTsetScrollDefinition | ( | uint8_t | top_fix_heightTFT, |
| uint8_t | bottom_fix_heightTFT, | ||
| bool | _scroll_direction | ||
| ) |
This method defines the Vertical Scrolling Area of the display where:
| top_fix_heightTFT | describes the Top Fixed Area, |
| bottom_fix_heightTFT | describes the Bottom Fixed Area and |
| _scroll_direction | is scroll direction (0 for top to bottom and 1 for bottom to top). |
sets up TFT GPIO for Hardware SPi
| rst | reset GPIO |
| dc | data or command GPIO. |
sets up TFT GPIO for software SPI
| rst | reset GPIO |
| dc | data or command GPIO. |
| cs | chip select GPIO |
| sclk | Data clock GPIO |
| din | Data to TFT GPIO |
|
private |
init the SPI
|
private |
init routine for ST7735B controller
|
private |
Init routine for ST7735S 80x160 display (BOE / HSD panel variant).
Sourced from buydisplay.com reference init (ST7735S_S5P_80160). MADCTL = 0xC8 (MY | MX | BGR). No software reset; starts at SLPOUT. Rotation uses BGR order, same as Red/Green tab.
: This method is used together with the TFTsetScrollDefinition.
| vsp | scrolling mode |
|
private |
Used to offset column in the event of defect at edge of screen
|
private |
never change after first init
|
private |
Used to offset row in the event of defect at edge of screen
|
private |
The speed of serial communication in bits per second.
|
private |
A SPI channel, >= 0.
|
private |
A SPI device, >= 0.
|
private |
The flags 2 LSB defines SPI mode
|
private |
never change after first init
| display_rotate_e ST7735_TFT::displayRotate = Degrees_0 |
Enum to hold rotation
Negative Gamma Correction Setting
Positive Gamma Correction Setting
Horizontal Refresh Order
Power_Control VRH: Set the GVDD voltage
Power_Control BT: set VGH/ VGL voltage
Power_Control APA: adjust op amp & DCA: boost Voltage
Power_Control APB: adjust op amp & DCB: boost Voltage
Power_Control APC: adjust op amp & DCC: boost Voltage
Power_Control In partial mode + Idle
| TFT_modes_e ST7735_TFT::TFT_mode = TFT_Normal_mode |
Enum to hold display mode
| TFT_PCBtype_e ST7735_TFT::TFT_PCBtype = TFT_ST7735S_Black |
Enum to hold TFT type