{"id":28417509,"url":"https://github.com/liebman/esp-hub75","last_synced_at":"2025-09-03T21:41:12.091Z","repository":{"id":253326222,"uuid":"843157131","full_name":"liebman/esp-hub75","owner":"liebman","description":"A no-std Rust library for driving HUB75 LED matrix displays from ESP32 series microcontrollers.","archived":false,"fork":false,"pushed_at":"2025-08-14T20:25:33.000Z","size":170,"stargazers_count":10,"open_issues_count":1,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-14T22:15:09.953Z","etag":null,"topics":["esp32","esp32-c6","esp32-s3","hub75","hub75e"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/esp-hub75","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liebman.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","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":"2024-08-15T22:51:03.000Z","updated_at":"2025-08-14T20:25:37.000Z","dependencies_parsed_at":"2024-08-16T00:42:14.239Z","dependency_job_id":"90e4fd5a-bd65-400e-8ece-75c2d0aad1a6","html_url":"https://github.com/liebman/esp-hub75","commit_stats":null,"previous_names":["liebman/esp-hub75"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/liebman/esp-hub75","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liebman%2Fesp-hub75","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liebman%2Fesp-hub75/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liebman%2Fesp-hub75/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liebman%2Fesp-hub75/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liebman","download_url":"https://codeload.github.com/liebman/esp-hub75/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liebman%2Fesp-hub75/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273516380,"owners_count":25119763,"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-09-03T02:00:09.631Z","response_time":76,"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":["esp32","esp32-c6","esp32-s3","hub75","hub75e"],"created_at":"2025-06-04T06:10:01.621Z","updated_at":"2025-09-03T21:41:12.082Z","avatar_url":"https://github.com/liebman.png","language":"Rust","funding_links":[],"categories":["Projects"],"sub_categories":["`no_std`"],"readme":"# ESP-HUB75\n\n[![Crates.io](https://img.shields.io/crates/v/esp-hub75.svg)](https://crates.io/crates/esp-hub75)\n[![Documentation](https://docs.rs/esp-hub75/badge.svg)](https://docs.rs/esp-hub75)\n[![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg)](README.md)\n\nA `no-std` Rust driver for HUB75-style LED matrix panels on ESP32-series\nmicrocontrollers. HUB75 is a standard interface for driving large, bright,\nand colorful RGB LED displays, commonly used in digital signage and art\ninstallations.\n\nThis library provides a high-performance implementation that uses Direct\nMemory Access (DMA) to drive the display with minimal CPU overhead. It is\ndesigned to work with a variety of ESP32 models, using the most efficient\nperipheral available on each chip:\n\n- **ESP32-S3**: Uses the LCD_CAM peripheral\n- **ESP32-C6**: Uses the PARL_IO peripheral\n- **ESP32**: Uses the I2S peripheral in parallel mode\n\nThe driver is built on top of the `embedded-graphics` crate, allowing you to\neasily draw shapes, text, and images on the display. It also uses a zero-copy\nframebuffer for efficient memory usage.\n\n## Hardware Requirements\n\n- An ESP32-series microcontroller (ESP32, ESP32-S3, or ESP32-C6)\n- A HUB75 LED matrix panel\n- A 5V power supply capable of providing several amps of current\n- A 3.3V to 5V level shifter (e.g., 74HCT245) is highly recommended\n\n**Note**: The ESP32 operates at 3.3V, while HUB75 panels require 5V logic\nsignals. While it may sometimes work without one, using a level shifter\nensures reliable operation and prevents damage to your hardware.\n\n## Pin Configurations\n\nThis driver supports two types of HUB75 pin configurations, which you can\nselect based on your hardware setup:\n\n- **`Hub75Pins16` (Direct Drive)**: This is the standard configuration where\n  the row address lines are sent with every pixel. It requires more GPIO\n  pins but works with any standard HUB75 panel.\n\n- **`Hub75Pins8` (Latched)**: This configuration is for controller boards that\n  include an external 74HC574-style latch for the row address lines. This is\n  more memory-efficient and requires fewer GPIO pins. For more details on the\n  required circuit, see the [`hub75-framebuffer` crate's documentation](https://crates.io/crates/hub75-framebuffer)\n  or its [GitHub repository](https://github.com/liebman/hub75-framebuffer).\n\n## Examples\n\nThe following examples demonstrate how to use this crate with different ESP32\nvariants.\n\n### ESP32-S3 (LCD_CAM Interface)\n\n- [`examples/hello_lcd_cam`](examples/hello_lcd_cam.rs) - Displays \"Hello, World!\".\n- [`examples/lcd_cam.rs`](examples/lcd_cam.rs) - Shows a color gradient and stats.\n- [`examples/lcd_cam_tiled.rs`](examples/lcd_cam_tiled.rs) - uses 4 64x32 panels\n  in a 2x2 configuration to show a color gradient and stats\n\n### ESP32-C6 (PARL_IO Interface)\n\n- [`examples/hello_parl_io.rs`](examples/hello_parl_io.rs) - Displays \"Hello, World!\".\n- [`examples/parl_io.rs`](examples/parl_io.rs) - Shows a color gradient and stats.\n\n### ESP32 (I2S Parallel Interface)\n\n- [`examples/hello_i2s_parallel.rs`](examples/hello_i2s_parallel.rs) - Displays\n  \"Hello, World!\".\n- [`examples/i2s_parallel.rs`](examples/i2s_parallel.rs) - Shows a color gradient\n  and stats.\n- [`examples/i2s_parallel_latch.rs`](examples/i2s_parallel_latch.rs) - Shows a\n  color gradient and stats.\n- [`examples/i2s_parallel_dimming.rs`](examples/i2s_parallel_dimming.rs) - Shows\n  a color gradient and stats.\n\n## Crate Features\n\n- `esp32`: Enable support for the ESP32\n- `esp32s3`: Enable support for the ESP32-S3\n- `esp32c6`: Enable support for the ESP32-C6\n- `defmt`: Enable logging with `defmt`\n- `log`: Enable logging with the `log` crate\n- `invert-blank`: Invert the blank signal, required for some controller boards.\n- `skip-black-pixels`: Forwards to the `hub75-framebuffer` crate, enabling an\n  optimization that skips writing black pixels to the framebuffer.\n- `iram`: Place the driver’s hot-path (render / DMA wait functions) in\n  Instruction RAM (IRAM) to avoid flash-cache stalls (for example during\n  Wi-Fi, PSRAM, or SPI-flash activity) that can cause visible flicker.\n  Enabling this feature consumes roughly 5–10 KiB of IRAM.\n\n## License\n\nThis project is dual-licensed under either of the following:\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or\n  \u003chttp://www.apache.org/licenses/LICENSE-2.0\u003e)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or \u003chttp://opensource.org/licenses/MIT\u003e)\n\n## Contributing\n\nWe welcome contributions! Please feel free to submit a Pull Request.\n\nBy contributing, you agree that your submissions will be licensed under both\nthe Apache-2.0 and MIT licenses.\n\n## Support\n\nIf you need help, please open an issue on our GitHub repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliebman%2Fesp-hub75","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliebman%2Fesp-hub75","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliebman%2Fesp-hub75/lists"}