This commit is contained in:
Кобелев Андрей Андреевич
2026-01-28 01:36:35 +05:00
commit 446a710e01
11 changed files with 1191 additions and 0 deletions

66
examples/marquee.rs Normal file
View File

@@ -0,0 +1,66 @@
use anyhow::Result;
use std::time::Duration;
use m::vfd::VfdConfig;
use m::worker::VfdWorker;
fn main() -> Result<()> {
// args:
// 1) port (default: /dev/cu.usbmodem101)
// 2) width (default: 20)
// 3) cps (chars per second, default: 8)
// 4) end_pause_ms (default: 1500)
// 5) brightness 1..4 (default: 2)
let port_name = std::env::args()
.nth(1)
.unwrap_or("/dev/cu.usbmodem101".into());
let width: usize = std::env::args()
.nth(2)
.as_deref()
.unwrap_or("20")
.parse()
.unwrap_or(20);
let cps: u32 = std::env::args()
.nth(3)
.as_deref()
.unwrap_or("8")
.parse()
.unwrap_or(8);
let end_pause_ms: u64 = std::env::args()
.nth(4)
.as_deref()
.unwrap_or("1500")
.parse()
.unwrap_or(1500);
let brightness: u8 = std::env::args()
.nth(5)
.as_deref()
.unwrap_or("2")
.parse()
.unwrap_or(2);
let cfg = VfdConfig::new(port_name).with_width(width);
let worker = VfdWorker::start(cfg)?;
let vfd = worker.handle();
vfd.clear();
vfd.set_brightness(brightness);
let text = String::from(
"Однозначно, базовые сценарии поведения пользователей призывают нас к новым свершениям, которые, в свою очередь, должны быть объявлены нарушающими общечеловеческие нормы этики и морали. С другой стороны, понимание сути ресурсосберегающих технологий не даёт нам иного выбора, кроме определения экономической целесообразности принимаемых решений. Задача организации, в особенности же укрепление и развитие внутренней структуры обеспечивает актуальность соответствующих условий активизации. Предварительные выводы неутешительны: укрепление и развитие внутренней структуры однозначно фиксирует необходимость укрепления моральных ценностей. Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: повышение уровня гражданского сознания представляет собой интересный эксперимент проверки поэтапного и последовательного развития общества.",
);
// “рыба” + бесконечный цикл
vfd.set_marquee_text(text);
vfd.start_marquee(2, cps, Duration::from_millis(end_pause_ms));
// можно подсветить вторую строку статикой
let _ = vfd.print_line_diff(1, "Бегущая строка");
loop {
std::thread::sleep(Duration::from_secs(3600));
}
}