3 个版本
0.1.2 | 2024年3月16日 |
---|---|
0.1.1 | 2024年2月27日 |
0.1.0 | 2024年2月26日 |
#349 in 嵌入式开发
9KB
107 行
Max 7219 Canvas
这是一个为 Rust 构建的库,简化了从坐标设置和获取像素的功能,同时还能处理在不同层上显示不同的层。与 max7219 库在 8x8 矩阵显示器上配合使用。
[!注意] 虽然这个包旨在支持多个显示器,但它从未使用多个显示器进行测试,请自行决定是否使用。
示例
#![no_std]
#![no_main]
use panic_halt as _;
use max7219::MAX7219;
use max7219_canvas::{ layer::CanvasLayer, DisplayCanvas };
#[arduino_hal::entry]
fn main() -> ! {
let dp = arduino_hal::Peripherals::take().unwrap();
let pins = arduino_hal::pins!(dp);
// Replace with your pin setup
let din = pins.d13.into_output();
let cs = pins.d12.into_output();
let clk = pins.d11.into_output();
// Setup the display
let mut display = MAX7219::from_pins(1 /* 1 display */, din, cs, clk).unwrap();
display.power_on().unwrap();
display.set_intensity(0, 0x0f).unwrap(); // Set intensity of the first display to maximum
// Create display canvas
let mut canvas: DisplayCanvas<2 /* 2 layers */, 1 /* 1 display */> = DisplayCanvas::new();
// Create a static layer that never changes
let mut static_layer = CanvasLayer::new();
// Smiley face
static_layer.set_pixel(1, 3, true);
static_layer.set_pixel(1, 2, true);
static_layer.set_pixel(2, 1, true);
static_layer.set_pixel(3, 1, true);
static_layer.set_pixel(4, 1, true);
static_layer.set_pixel(5, 1, true);
static_layer.set_pixel(6, 2, true);
static_layer.set_pixel(6, 3, true);
static_layer.set_pixel(1, 6, true);
static_layer.set_pixel(2, 6, true);
static_layer.set_pixel(1, 5, true);
static_layer.set_pixel(2, 5, true);
static_layer.set_pixel(6, 6, true);
static_layer.set_pixel(5, 6, true);
static_layer.set_pixel(6, 5, true);
static_layer.set_pixel(5, 5, true);
// Create an animated layer
let mut animated_layer = CanvasLayer::new();
let mut animation_position: usize = 0;
loop {
// Update the animated layer
animated_layer.clear();
animated_layer.set_pixel(animation_position, animation_position, true);
animation_position = (animation_position + 1) % 8;
// Update the display
canvas.update_layer(0, static_layer);
canvas.update_layer(1, animated_layer);
canvas.write_to_display(0, &mut display); // Display the canvas to the first display
arduino_hal::delay_ms(100);
}
}
依赖项
~96KB