| Crates.io | sensehat-screen |
| lib.rs | sensehat-screen |
| version | 0.2.6 |
| created_at | 2018-04-01 21:00:06.04816+00 |
| updated_at | 2021-01-26 04:27:25.796714+00 |
| description | A library for using the 8x8-LED matrix, with RGB565 coloring, on the Raspberry Pi Sense HAT device. |
| homepage | https://github.com/saibatizoku/sensehat-screen-rs |
| repository | https://github.com/saibatizoku/sensehat-screen-rs |
| max_upload_size | |
| id | 58536 |
| size | 181,315 |
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.
This crate supports Rust stable version v1.32.0 and higher, and is tested on nightly continuously.
For a detailed summary of how changes are incorporated into the code, we keep a CHANGELOG.
To use this crate with the default features, add this to your Cargo.toml:
[dependencies]
sensehat-screen = "0.2"
or, to manually specify the features::
[dependencies]
sensehat-screen = { version = "0.2", default-features = false, features = ["fonts"] }
Then you can use it with your crate:
extern crate sensehat_screen
use sensehat_screen::{FrameLine, PixelColor, Screen, FONT_COLLECTION};
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.
This example builds low-level FrameLines by hand, writes them
to the Screen at set intervals.
A letter from ゆにち (Yunichi) to Toño
This example makes use of the built-in 8x8 FontCollection. The collection is used to sanitize a user-provided &str, returning a FontString that includes only those characters provided by the FontCollection (basically, the full latin set, some greek, some hiragana, and legacy ascii box and ascii block sets).
Each font is given stroke color of 50% white, PixelColor::WHITE.dim(0.5), and then it is converted into a FrameLine, which is finally written to the Screen.
See the font8x8 crate for more details.
This example makes use of PixelFrame, an ergonomic wrapper for representing each pixel in the 8x8 LED Matrix: [PixelColor; 64].
Like the letter example, it makes use of the built-in FontCollection, to create two hand-made PixelFrames, made from the a yellow-colored Ñ, and a magenta-colored ó.
Each frame is then subject to counter-clockwise rotation in steps of 90°.
Starts with an empty screen, and two font-symbols. Each symbol is then made to slide-in from the left by setting an Offset progressively.
Once the symbol is fully displayed, it slides-out to the right, again by incrementing the offset, until the symbol disappears.
The same process is done with the top-bottom offset directions.
A Clip is a PixelFrame that is the result of merging two PixelFrame. They are useful for manually constructing sequences of frames. Generally, you will prefer to work with Scroll, and FrameSequence iterators.
The name says it all: it builds a scroll of frames, and displays it from top to bottom, one clipped-frame at a time.
Makes use of FontString, Scroll, and FrameSequence to work.
The name says it all: it builds a scroll of frames, and displays it from bottom to top, one clipped-frame at a time.
Makes use of FontString, Scroll, and FrameSequence to work.
The name says it all: it builds a scroll of frames, and displays it from left to right, one clipped-frame at a time.
Makes use of FontString, Scroll, and FrameSequence to work.
The name says it all: it builds a scroll of frames, and displays it from right to left, one clipped-frame at a time.
Makes use of FontString, Scroll, and FrameSequence to work.
The following program shows how to:
screen)red_pixel)all_64_pixels)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 featuresBy default, the basic, and linux-framebuffer features are included.
basic featuresA set of features that don't require the hardware. This is mostly code that you will want to use if you are writing a simulator/emulator/etc. It includes, the fonts, offset, rotate, clip, scroll, and serde-support features.
fontsIn default. A collection of legacy 8x8 fonts, renderable on the LED matrix.
offsetIn default. Support for offsetting the PixelFrame left/right/top/bottom. Requires clip.
rotateIn default. Support for rotating PixelFrames by 90-degree steps.
clipIn default. Support for combining, and clipping two PixelFrames onto a single frame.
scrollIn default. Support for joining a collection of PixelFrames into a single Scroll. Requires clip.
serde-supportIn default. Enables support for serialization/deserialization with serde.
linux-framebufferIn default. Use the Linux framebuffer to write to the LED matrix.
big-endianUses big-endian format, suitable for non-AMD64/x86-64 processors. This is used when encoding/decoding 16-bit RGB565 to/from 24-bit RGB. See this for more information.
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 PixelFrames by 90-degree steps.clip - In default. Support for combining, and clipping two PixelFrames onto a single frame.scroll - In default. Support for joining a collection of PixelFrames into a single Scroll. Requires clip.serde-support - In default. Enables support for serialization/deserialization with serde.big-endian - Uses big-endian format, suitable for non-AMD64/x86-64 processors.Please do contribute! Issues and pull requests are welcome.
Thank you for your help improving software one changelog at a time!