Giter VIP home page Giter VIP logo

hub75-rs's Introduction

HUB75

Example image Example 64x64 image

Library for controlling the cheap RGB matrix displays with the interface colloquially known as hub75 with embedded-graphics & embedded-hal impls in rust.

Main support for panels with a resolution of 64x32 (tested on panel "P3-(2121)64*32-16S-D10").

64x64 support when using features = ["size-64x64"] (tested on panel P3-(2121)64*64)

See rpi-rgb-led-matrix for hookup instructions.

Pinout:

Hub 75 interface

Problem Solving

  • It flickers

    Reduce the bits for the color output, call the output method more often or use a faster micro

  • Some colors aren't displayed correctly/not at all

    If one of the rgb components after gamma correction has less than the provided bits, it isn't shown at all. For example, when using 3 color bits, having a value less than 124 leads to nothing being shown (as it's then gamma corrected to 31, which is less than 1<<5).

Improving performance

There are many ways to further improve performance, even being able to achieve 8 bit color depth, unfortunately it doesn't seem possible with the current embedded-hal abstractions:

  • Use binary code modulation and adjust oe time with a one-shot timer

    See LED dimming using Binary Code Modulation for further explanations on how binary code modulation works.

  • Prerender the data, so shifting the data out is faster

    The idea is that the gpio state is precomputed and then just copied to the gpio output register. To do this, r1, r2, g1, g2, b1, b2 all need to be connected to the same port. Combined with binary code modulation, this will take more ram, but be much faster. The output loop can then be replaced with the dma, which will lead to greatly reduced cpu usage and very high refresh rates.

You might want to take a look at an mcu specific implementation that uses most of these things for inspiration.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

hub75-rs's People

Contributors

david-sawatzke avatar jamwaffles avatar camrbuss avatar dflemstr avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.