{"id":22415578,"url":"https://github.com/extremq/lcd1602_i2c","last_synced_at":"2025-06-28T01:05:26.282Z","repository":{"id":165243834,"uuid":"554482649","full_name":"extremq/lcd1602_i2c","owner":"extremq","description":"A simple, I2C-based implementation of the 1602 LCD with I2C interface in C using the Raspberry Pi Pico SDK. ","archived":false,"fork":false,"pushed_at":"2023-12-31T10:30:28.000Z","size":29,"stargazers_count":14,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-27T13:07:30.395Z","etag":null,"topics":["c","pico","pico-sdk"],"latest_commit_sha":null,"homepage":"","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/extremq.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}},"created_at":"2022-10-19T22:19:13.000Z","updated_at":"2025-03-17T22:23:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"7f4c8fc1-2749-43aa-b081-64337b3a8f59","html_url":"https://github.com/extremq/lcd1602_i2c","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/extremq/lcd1602_i2c","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extremq%2Flcd1602_i2c","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extremq%2Flcd1602_i2c/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extremq%2Flcd1602_i2c/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extremq%2Flcd1602_i2c/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/extremq","download_url":"https://codeload.github.com/extremq/lcd1602_i2c/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extremq%2Flcd1602_i2c/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262357552,"owners_count":23298463,"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","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":["c","pico","pico-sdk"],"created_at":"2024-12-05T15:12:47.061Z","updated_at":"2025-06-28T01:05:26.253Z","avatar_url":"https://github.com/extremq.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# lcd1602_i2c\nA simple, lightning-fast and scalable I2C-based implementation of the HD44780U 1602 LCD with I2C interface in C using the Raspberry Pi Pico SDK.\n\n![](https://i.imgur.com/s03eaDj.jpeg)\n\n# Features\n- Very efficient\n  - Used the datasheet to provide minimal sleep times. On average, the display needs to sleep 160 microseconds for each command\n  - Sends only the minimum amount of bytes necessary.\n- Can be used to control multiple HD44780U 1602 LCDs.\n  - Just create an LCD object and use its address for each call.\n  - For example `lcd_char(\u0026lcd_1, 'a'); lcd_char(\u0026lcd_2, 'b');`.\n- Heavily documented code.\n  - Made sure to reference pages in the original datasheet.\n  - Explained functions, variables and protocol. (Had to reverse engineer popular libraries, literally no documentation is provided for the I2C interface)\n\n\n# How to install the module (for beginners)\nThe minimal way of adding this module to your CMake project is by downloading the `lcd1602_i2c.c` and `lcd1602_i2c.h` files\nand placing them in the same folder as your main source.\n\nFrom there, you have to add the files inside `add_executable`. For example:\n```cmake\nadd_executable(my_project\n        main.c\n        lcd1602_i2c.c\n        lcd1602_i2c.h\n        )\n```\n\nDO NOT FORGET to include `hardware_i2c` in your `target_link_libraries`.\n```cmake\ntarget_link_libraries(my_project hardware_i2c pico_stdlib)\n```\n\n# Usage\nCheck example.c for a complete showcase. Minimal example here:\n```c\n#include \"lcd1602_i2c.h\"\n\nint main() {\n    /* Init my modules */\n    LCD my_lcd;\n    lcd_init(\u0026my_lcd, 0x27, 4, 5, i2c0); // Check the pins on your Pico\n    \n    char message[] = \"Thanks extremq\";\n    lcd_string(\u0026my_lcd, message); \n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fextremq%2Flcd1602_i2c","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fextremq%2Flcd1602_i2c","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fextremq%2Flcd1602_i2c/lists"}