{"id":19856577,"url":"https://github.com/gavinlyonsrepo/display_lib_rpi","last_synced_at":"2025-07-24T15:03:30.926Z","repository":{"id":98596912,"uuid":"364303088","full_name":"gavinlyonsrepo/Display_Lib_RPI","owner":"gavinlyonsrepo","description":"A  C++ Library for Linux based single board computers ( sbc ) to drive electronic displays. Developed and tested on Raspberry pi (5, 4 \u0026 3).","archived":false,"fork":false,"pushed_at":"2025-05-16T18:51:49.000Z","size":3213,"stargazers_count":31,"open_issues_count":1,"forks_count":4,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-05-16T19:45:34.970Z","etag":null,"topics":["erm19264","gc9a01a","hd44780","ht16k33","ili9341","library","linux","max7219","nokia5110","pcd8544","pcf8574","raspberry-pi","single-board-computer","ssd1306","ssd1331","st7735","st7789","tm1637","tm1638","xpt2046"],"latest_commit_sha":null,"homepage":"https://gavinlyonsrepo.github.io/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gavinlyonsrepo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-05-04T15:32:14.000Z","updated_at":"2025-05-16T18:51:52.000Z","dependencies_parsed_at":"2024-01-05T21:27:47.903Z","dependency_job_id":"bf5513a4-dec0-4b9d-8e86-6533d4775683","html_url":"https://github.com/gavinlyonsrepo/Display_Lib_RPI","commit_stats":null,"previous_names":["gavinlyonsrepo/display_lib_rpi"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/gavinlyonsrepo/Display_Lib_RPI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinlyonsrepo%2FDisplay_Lib_RPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinlyonsrepo%2FDisplay_Lib_RPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinlyonsrepo%2FDisplay_Lib_RPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinlyonsrepo%2FDisplay_Lib_RPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gavinlyonsrepo","download_url":"https://codeload.github.com/gavinlyonsrepo/Display_Lib_RPI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinlyonsrepo%2FDisplay_Lib_RPI/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266861502,"owners_count":23996627,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-24T02:00:09.469Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["erm19264","gc9a01a","hd44780","ht16k33","ili9341","library","linux","max7219","nokia5110","pcd8544","pcf8574","raspberry-pi","single-board-computer","ssd1306","ssd1331","st7735","st7789","tm1637","tm1638","xpt2046"],"created_at":"2024-11-12T14:16:01.570Z","updated_at":"2025-07-24T15:03:30.918Z","avatar_url":"https://github.com/gavinlyonsrepo.png","language":"C++","funding_links":["https://www.paypal.com/paypalme/whitelight976"],"categories":[],"sub_categories":[],"readme":"[![Website](https://img.shields.io/badge/Website-Link-blue.svg)](https://gavinlyonsrepo.github.io/)  [![Rss](https://img.shields.io/badge/Subscribe-RSS-yellow.svg)](https://gavinlyonsrepo.github.io//feed.xml)  [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/paypalme/whitelight976)\n\n# Display Library for Linux based Single Board Computers\n\n[![logo image](https://github.com/gavinlyonsrepo/Display_Lib_RPI/blob/main/extra/images/logo.png)](https://github.com/gavinlyonsrepo/Display_Lib_RPI/blob/main/extra/images/logo.png)\n\n## Table of contents\n\n  * [Overview](#overview)\n  * [Installation](#installation)\n  * [Test](#test)\n  * [Documentation](#documentation)\n    * [Supported devices](#supported-devices)\n    * [API documentation](#api-documentation)\n    * [Fonts](#fonts)\n  * [Software](#software)\n    * [File-system](#file-system)\n    * [Error Codes](#error-codes)\n    * [Tool chain](#tool-chain)\n    * [Configuration](#configuration)\n  * [Notes](#notes)\n    * [Older versions](#older-versions)\n\n\n## Overview\n\n* Project Name: Display_Lib_RPI\n* Author: Gavin Lyons.\n* Description:\n\n0. A C++ Library to connect electronic displays to linux based single board computers.\n1. Dynamic install-able Linux C++ library.\n2. 16 fonts included, new Fonts can easily be added by user\n3. Common graphics + print class included\n4. Dependency: [lgpio C Library](https://abyz.me.uk/lg/lgpio.html), Provides SPI,I2C, and GPIO control.\n5. Mutiple displays supported, see supported-devices, new components can be added.\n6. Tested and developed on Raspberry Pis see tool chain for more details.\n\n## Installation\n\n1. Download \u0026 Install the dependency lgpio C Library, if not installed.\n\t* lgpio is a C library for Linux Single Board Computers(SBC) which allows control of the General Purpose Input Output pins. \n\t* Install the lgpio, [Installation instructions here](https://abyz.me.uk/lg/download.html)\n\n```sh\ncd ~/Downloads\nwget http://abyz.me.uk/lg/lg.zip\nunzip lg.zip\ncd lg\nmake\nsudo make install\n```\n\n2. Download the Display_Lib_RPI library\n\t* Open a Terminal in a folder where you want to download,build \u0026 test library\n\t* Run following command to download latest release from github.\n\n```sh\ncurl -sL https://github.com/gavinlyonsrepo/Display_Lib_RPI/archive/2.4.1.tar.gz | tar xz\n```\n\n3. Install library : Run 'make' and 'sudo make install' to run the makefile to build and then install library. \n\t* It will be installed to usr/local/lib and usr/local/include by default. \n\n```sh\ncd Display_Lib_RPI-2.4.1\nmake\nsudo make install\n```\n\n\n## Test\n\n1. Next step is to test your display and installed library with the included test example files, connect up display.\n2. Enter the example folder.\n3. Edit the makefile in that folder to select the desired example file path for your Display.\n\t\tSimply edit \"SRC\" variable at top of the makefile. In the \"User SRC directory Option Section\" at top of file.\n\t\tPick an example \"SRC\" directory path and One ONLY.\n4. Run 'make' commmand. This builds the examples file using the just installed library,\n\t\tand creates a test executable file in \"Bin\".\n5. Run 'make run' to run that built executable file. \n6. User should now see the test routine in that file running on the display.\n\n```sh\ncd examples\n# Edit the makefile in examples folder by picking the \"SRC\" file path you want to run\nmake\nmake run\n```\n\n## Documentation\n\n### Supported devices\n\n| Component name | Type | Interface | Readme URL link |\n| -------- | ---------- | --------- | ---------- |\n| ILI9341 |16 bit Colour Graphic TFT LCD|SPI HW \u0026 SW| [Readme](extra/doc/ili9341/README.md)|\n| ST7789 |16 bit Colour Graphic TFT LCD|SPI HW \u0026 SW| [Readme](extra/doc/st7789/README.md)|\n| ST7735 |16 bit Colour Graphic TFT LCD|SPI HW \u0026 SW| [Readme](extra/doc/st7735/README.md)|\n| GC9A01A |16 bit Colour Graphic TFT LCD|SPI HW \u0026 SW| [Readme](extra/doc/gc9a01a/README.md)|\n| SSD1331 |16 bit Colour Graphic OLED|SPI HW \u0026 SW| [Readme](extra/doc/ssd1331/README.md)|\n| ERM19264 UC1609|Bi colour Graphic LCD|SPI HW \u0026 SW| [Readme](extra/doc/erm19264/README.md) |\n| PCD8544|Bi colour Graphic LCD|SPI HW \u0026 SW| [Readme](extra/doc/nokia5110/README.md) |\n| ERM1 CH1115 |Bi colour Graphic OLED |SPI HW \u0026 SW| [Readme](extra/doc/ch1115/README.md) |\n| SSD1306|Bi colour Graphic OLED| I2C | [Readme](extra/doc/ssd1306/README.md) |\n| SH1106 SH1107|Bi colour Graphic OLED | I2C | [Readme](extra/doc/sh110x/README.md) |\n| HD44780 PCF8574 |Character LCD| I2C | [Readme](extra/doc/hd44780/README.md) |\n| TM1638 |LED 7 segment display| GPIO| [Readme](extra/doc/tm1638/README.md) |\n| TM1637 |LED 7 segment display| GPIO | [Readme](extra/doc/tm1637/README.md) |\n| MAX7219 |LED 7 segment display| SPI HW \u0026 SW| [Readme](extra/doc/max7219/README.md) |\n| HT16K33 |LED segment display| I2C| [Readme](extra/doc/ht16k33/README.md) |\n\n### API Documentation\n\nThe application programming interface html [documentation is at link](https://gavinlyonsrepo.github.io/misc/software_docs/Display_Lib_RPI/index.html) \n hosted on github pages and generated by Doxygen. Detailed project overview images are available there.\n\n### Fonts\n\nThe font system readme for the graphic displays is in the 'doc' folder [at link.](extra/doc/fonts/README.md)\n\n## Software\n\n### File system\n\nThere are 2 makefiles.\n\n1. Root directory makefile, builds and installs library at a system level.\n2. Example directory makefile, builds a chosen example file using installed library to an executable.\nwhich can then be run.  A user editable list of file paths to examples can be found in makefile.\n\nRun 'make help' on these makefiles to see a menu of all options.(uninstall library for example)\n\nLibrary naming :\n\n1. library name = librpidisplaygl\n2. Linker flags for complier = -lrpidisplaygl (also needs -llgpio for lgpio library)\n3. Library File suffix  = RDL\n4. Project name = Display_Lib_RPI\n5. Installed size = ~500 KiB.\n6. Namespaces see API.documentation.\n\nProject Overview : \n\n[![pov img](https://github.com/gavinlyonsrepo/Display_Lib_RPI/blob/main/extra/images/project.jpg)](https://github.com/gavinlyonsrepo/Display_Lib_RPI/blob/main/extra/images/project.jpg)\n\n\n### Error Codes \n\nMost functions that return a value, return a enum 'rdlib::Return_Codes'. \nZero for success and a positive number for an error code. The error codes are listed in\nis in the 'doc' folder [at link.](extra/doc/error_codes/README.md)\n\n### Tool chain\n\n* Development Tool chain.\n\t1. Raspberry PI 5 \u0026 Raspberry PI 3 model b \n\t2. C++, g++ (Debian 12.2.0)\n\t3. Raspbian , Debian 12 bookworm OS, 64 bit.\n\t4. lgpio library Version Number :: 131584\n\n* Also tested on a raspberry pi 4 see issue number 2 on github.\n\n### Configuration\n\nA configuration file can be created which is read into program by running \"rdlib_config::loadConfig()\" at start of program\nIf the file is missing it will create it at \"/($HOME)/.config/rdlib_config/config.cfg\".\nIn this file logging and debug modes can be enabled they are OFF by default. A path to log file can also be \nset. Certain functions produce debug information to console if this setting is enabled.\nSome errors conditions trigger logging if it is enabled. \n\nConfig file :\n\n[![cfg file](https://github.com/gavinlyonsrepo/Display_Lib_RPI/blob/main/extra/images/config.png)](https://github.com/gavinlyonsrepo/Display_Lib_RPI/blob/main/extra/images/config.png)\n\nLog file example output :\n\n[![log file](https://github.com/gavinlyonsrepo/Display_Lib_RPI/blob/main/extra/images/logfile.png)](https://github.com/gavinlyonsrepo/Display_Lib_RPI/blob/main/extra/images/logfile.png)\n\n\n## Notes\n\n### Older versions\n\nA previous version of Display_lib_RPI (V1.3.0) which used the bcm2835 library as a low level interface \nis in releases and can still be downloaded and used. \nVersion 1.3.0 will NOT work on raspberry pi 5 and uses direct register access. \nIt will only work on raspberry pi \u003c 5.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgavinlyonsrepo%2Fdisplay_lib_rpi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgavinlyonsrepo%2Fdisplay_lib_rpi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgavinlyonsrepo%2Fdisplay_lib_rpi/lists"}