3.2 KiB
3.2 KiB
VFD — библиотека управления VFD-дисплеями (Epson mode)
Небольшая Rust-библиотека для управления VFD-дисплеями Epson/ESC-совместимого режима (например PD-2600 / PD-2800 и похожие).
Подходит для:
- домашних IoT-проектов
- индикаторов состояния
- часов, дашбордов, уведомлений
- ретро-интерфейсов
Поддержка:
- печать текста по координатам
- обновление строк через diff (без мерцания)
- яркость дисплея
- программный marquee (бегущая строка)
- работа через serial (USB-UART)
Возможности
- Двухстрочный дисплей (ширина настраивается)
print_line_diff— обновление только изменённых символов- Управление яркостью (1–4)
- Бегущая строка (marquee) в отдельном воркере
- Потокобезопасный API (worker + handle)
Установка
Добавьте библиотеку в Cargo.toml:
[dependencies]
m = { path = "./path/to/vfd-lib" }
Быстрый старт
use m::vfd::VfdConfig;
use m::worker::VfdWorker;
let cfg = VfdConfig::new("/dev/cu.usbmodem101")
.with_width(20);
let worker = VfdWorker::start(cfg)?;
let vfd = worker.handle();
vfd.clear();
vfd.set_brightness(2);
vfd.print_line_diff(1, "Hello VFD!");
vfd.print_line_diff(2, "It works!");
Бегущая строка (marquee)
use std::time::Duration;
vfd.set_marquee_text(" Это пример бегущей строки ");
vfd.start_marquee(
2, // строка
8, // символов в секунду
Duration::from_millis(1500), // пауза в конце
);
Marquee работает в фоне и не мешает print_line_diff,
если не писать в ту же строку.
Управление яркостью
vfd.set_brightness(1); // диапазон 1..4
Яркость можно менять динамически (ночной режим, «дыхание» и т.п.).
Примеры
Запуск через cargo run --example или task:
cargo run --example clock -- /dev/cu.usbmodem101 20 8
cargo run --example marquee -- /dev/cu.usbmodem101 20 8 1500 2
cargo run --example brightness -- /dev/cu.usbmodem101 20 800
Примеры:
clock— часыmarquee— бегущая строкаbrightness— демонстрация яркости
Требования
- Дисплей в Epson-режиме (DIP-переключатели)
- Скорость: 9600 baud
- Кодировка: CP866 (кириллица)
Идеи для использования
- часы / дата / температура
- MQTT-дашборд
- уведомления умного дома
- статус сервиса / сборки
- ретро-индикатор