Smart LEDs matrix
A DrawTarget
implementation to use (one, or more) smart LED matrixes as a graphics display driven by embedded-graphics Drawable
objects.
The integrated driver is from smart-leds crate.
Known issues (with my setup: stm32f401 + 8x8 ws2812 matrix):
- circles with the same parameters are not exactly drawn always to the same position, not sure if this is the same with bigger resolution displays or not
- write operation usually gets back with an overrun error, while the display is still updated for ~every second time (workaround: flush always twice)
Plan
- Add more display types (like 2x2 or 1x4 grids of 8x8 matrixes), though user can add those anytime by implementing another
layout
.
Usage
You may start by creating a driver for your LED and controller. Some examples can be found here.
Once you have it, you can plug it into the DrawTarget
implemented by this crate.
Example:
use ws2812_spi as ws2812;
use ;
use ;
! > new;
matrix.set_brightness;
matrix.clear;
// Drawable objects are calling draw_iter() function of the matrix.
// That is, only the internal frame buffer is updated, no real
// communication happens yet. That is useful when a frame is composed
// of multiple objects, text, etc.
new
.into_styled.draw?;
// Trigger the actual frame update on the matrix with gamma correction.
matrix.flush_with_gamma;
loop
}