The Raspberry Pi Sense HAT has an 8×8 RGB LED matrix that provides its own driver for the Linux framebuffer.
This library provides a thread-safe, strong-typed, high-level API for the LED matrix, treating it as you would any other screen on a Linux box.
To use this crate with the default features, add this to your Cargo.toml
:
cargo
[dependencies]
sensehat-screen = "0.1"
or, to manually specify the features::
cargo
[dependencies]
sensehat-screen = { version = "0.1", default-features = false, features = ["fonts"] }
Then you can use it with your crate:
```rust extern crate sensehat_screen
use sensehat_screen::{FontCollection, FrameLine, PixelColor, Screen}; ```
You can find the documentation for the latest release at: https://docs.rs/sensehat-screen.
It contains a general description of the types contained in the library, it is a good to place to get familiar with the methods available.
You can find working examples in the source code.
The following program shows how to:
screen
)red_pixel
)all_64_pixels
)```rust extern crate sensehat_screen;
use sensehat_screen::{PixelFrame, PixelColor, Screen};
fn main() { let mut screen = Screen::new("/dev/fb1") .expect("Could not open the framebuffer for the screen");
let red_pixel = PixelColor::new(255, 0, 0); // The pixel color's RGB components are each in the range of 0 <= c < 256.
let all_64_pixels = &[red_pixel; 64]; // A single vector of 8 x 8 = 64 pixel colors (rows are grouped by chunks of 8)
let all_red_screen = PixelFrame::from_pixels(&all_64_pixels); // a screen frame
screen.write_frame(&all_red_screen.frame_line()); // show the frame on the LED matrix
} ```
default
By default, the linux-framebuffer
, fonts
, offset
, rotate
, clip
, and serde-support
features are included.
linux-framebuffer
In default
. Use the Linux framebuffer to write to the LED matrix.
fonts
In default
. A collection of legacy 8x8 fonts, renderable on the LED matrix.
See this for more information.
offset
In default
. Support for offsetting the PixelFrame
left/right/top/bottom. Requires clip
.
rotate
In default
. Support for rotating PixelFrame
s by 90-degree steps.
clip
In default
. Support for combining, and clipping two PixelFrame
s onto a single frame.
serde-support
In default
. Enables support for serialization/deserialization with serde
.
big-endian
Uses big-endian format, suitable for non-AMD64/x86-64 processors. This is used when encoding/decoding 16-bit RGB565 to/from 24-bit RGB.
linux-framebuffer
- In default
. Use the Linux framebuffer to write to the LED matrix.fonts
- In default
. A collection of legacy 8x8 fonts, renderable on the LED matrix.offset
- In default
. Support for offsetting the PixelFrame
left/right/up/down.rotate
- In default
. Support for rotating PixelFrame
s by 90-degree steps.clip
- In default
. Support for combining, and clipping two PixelFrame
s onto a single frame.serde-support
- In default
. Enables support for serialization/deserialization with serde
.big-endian
- Uses big-endian format, suitable for non-AMD64/x86-64 processors.