{"id":26241307,"url":"https://github.com/icmddev/charpi","last_synced_at":"2026-04-24T11:07:27.084Z","repository":{"id":58439678,"uuid":"427758363","full_name":"iCMDdev/CharPi","owner":"iCMDdev","description":"Python character display (Hitachi HD44780) driver for Raspberry Pi. Includes support for custom characters, I2C backpacks and custom wirings.","archived":false,"fork":false,"pushed_at":"2024-08-08T21:20:04.000Z","size":5345,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-01T09:10:38.892Z","etag":null,"topics":["character-display","hd44780","python","raspberry-pi","raspberrypi"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iCMDdev.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-11-13T19:47:36.000Z","updated_at":"2024-08-04T13:17:30.000Z","dependencies_parsed_at":"2023-01-17T19:46:30.363Z","dependency_job_id":null,"html_url":"https://github.com/iCMDdev/CharPi","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/iCMDdev/CharPi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCMDdev%2FCharPi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCMDdev%2FCharPi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCMDdev%2FCharPi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCMDdev%2FCharPi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iCMDdev","download_url":"https://codeload.github.com/iCMDdev/CharPi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCMDdev%2FCharPi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32220328,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T10:26:35.452Z","status":"ssl_error","status_checked_at":"2026-04-24T10:25:27.643Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["character-display","hd44780","python","raspberry-pi","raspberrypi"],"created_at":"2025-03-13T08:20:10.249Z","updated_at":"2026-04-24T11:07:27.037Z","avatar_url":"https://github.com/iCMDdev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CharPi - Python HD44780 display driver for Raspberry Pi\n\n\u003cimg src=\"/hello-CharPi.png\" alt=\"Image of a display using CharPi\"\u003ePython character display (Hitachi HD44780) driver for Raspberry Pi with special features such as Custom Output Handling (makes it easy to use intermediary chips such as Shift Registers). Includes support for I2C backpacks.\n\nCharPi includes support for most character displays based on the Hitachi HD44780 display (including I2C backpacks). By default, it has support for displays with up to 4 rows, but this can be easily changed by modifying the Python list containing each row's starting DDRAM address.\n\n## Special feature: Custom Output Handling\nCustom Output Handling makes it easy to use intermediary chips such as Shift Registers, or any other type of complex setups, by providing your own callback function that handles the output signals. Your function will be called by CharPi every time a display command needs to be sent. Note that a display command is not necessarily equivalent to a CharPi function (meaning that if you call a function such as writeString(), your function will be called more than once). Your function will have a binary number as an argument. This argument will store the pin values that will need to be sent to the display, in the following format:\n\n```\n   | Digit 1 | Digit 2 | Digit 3 | Digit 4 |  Digit 5  | Digit 6 | Digit 7 | Digit 8 |\n--------------------------------------------------------------------------------------\n0b |  PIN 1  |  PIN 2  |  PIN 3  |  PIN 4  | BACKLIGHT |  none   |   RW    |   RS    |\n```\n\nThe custom ouput handling object (HD44780CustomDriver()) uses the display in 4-bit mode.\n\nHere is how your callback function should look like:\n```\ndef functionName(binaryData):\n    # send received data to the display\n```\n\n## Dependencies\n\nCharPi relies on [RPi.GPIO](https://pypi.org/project/RPi.GPIO/) (for GPIO) or [smbus](https://pypi.org/project/smbus/) (for I2C) Python modules to communicate with the display. Depending on how you're wiring the display, you may need to install one of these 2 modules. RPi.GPIO comes with the latest Raspberry Pi OS by default. SMBus isn't preinstalled on the Lite version, but you can install it with `pip3`. \n\nPython minimum tested version: 3.7.\nTested on Raspberry Pi OS Buster \u0026 Bullseye. It might work fine on other operating systems too (if the dependencies are installed and the required changes are made).\n\n\n## Installation guide\n\nTo install CharPi, you can use PyPi:\n\n```\npip3 install CharPi\n```\n\n\n## Usage\n\nCheck out the [examples](https://github.com/iCMDgithub/CharPi/tree/main/Examples).\n\n## Display initialization\n\nA display usually needs be initialized with its number of rows and columns.\nHowever, in some cases, displays without an auxiliary chip might require a different initialization.\nFor example, an original HD44780 16x1 display might need to be initialized as an 8x2 display.\n\n# Legal\nRaspberry Pi is a trademark of Raspberry Pi Ltd.\nThis Python library is not affiliated with Raspberry Pi Ltd. in any way.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficmddev%2Fcharpi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficmddev%2Fcharpi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficmddev%2Fcharpi/lists"}