39 lines
1.2 KiB
Rust
39 lines
1.2 KiB
Rust
//! Демонстрирует четыре уровня яркости и обновление строки без полного мерцания.
|
|
|
|
mod common;
|
|
|
|
use anyhow::Result;
|
|
|
|
use m::worker::VfdWorker;
|
|
|
|
fn main() -> Result<()> {
|
|
// args:
|
|
// 1) port (default: /dev/cu.usbmodem101)
|
|
// 2) width (default: 20)
|
|
// 3) delay_ms (default: 800)
|
|
let mut args = common::ExampleArgs::from_env();
|
|
let delay_ms: u64 = args.parse_or(800);
|
|
let worker = VfdWorker::start(args.config)?;
|
|
let vfd = worker.handle();
|
|
|
|
vfd.clear();
|
|
|
|
// шапка один раз (не обязательно, но удобно)
|
|
let _ = vfd.print_line_diff(1, "Яркость");
|
|
|
|
loop {
|
|
for level in 1u8..=4u8 {
|
|
vfd.set_brightness(level);
|
|
|
|
// обновляем строку медленно, через print_line_diff
|
|
// можно сделать “индикатор” уровня (*****)
|
|
let bar = "*".repeat(level as usize);
|
|
let line2 = format!("Уровень: {} {}", level, bar);
|
|
|
|
let _ = vfd.print_line_diff(2, line2);
|
|
|
|
common::sleep_ms(delay_ms);
|
|
}
|
|
}
|
|
}
|