Files
vfd/README.md
Кобелев Андрей Андреевич fc9531be56 Create README.md
2026-01-28 01:38:55 +05:00

125 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# VFD — библиотека управления VFD-дисплеями (Epson mode)
Небольшая Rust-библиотека для управления **VFD-дисплеями Epson/ESC-совместимого режима**
(например PD-2600 / PD-2800 и похожие).
Подходит для:
- домашних IoT-проектов
- индикаторов состояния
- часов, дашбордов, уведомлений
- ретро-интерфейсов
Поддержка:
- печать текста по координатам
- обновление строк через diff (без мерцания)
- яркость дисплея
- программный marquee (бегущая строка)
- работа через serial (USB-UART)
---
## Возможности
- Двухстрочный дисплей (ширина настраивается)
- `print_line_diff` — обновление только изменённых символов
- Управление яркостью (14)
- Бегущая строка (marquee) в отдельном воркере
- Потокобезопасный API (worker + handle)
---
## Установка
Добавьте библиотеку в `Cargo.toml`:
```toml
[dependencies]
m = { path = "./path/to/vfd-lib" }
```
---
## Быстрый старт
```rust
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)
```rust
use std::time::Duration;
vfd.set_marquee_text(" Это пример бегущей строки ");
vfd.start_marquee(
2, // строка
8, // символов в секунду
Duration::from_millis(1500), // пауза в конце
);
```
Marquee работает в фоне и не мешает `print_line_diff`,
если не писать в ту же строку.
---
## Управление яркостью
```rust
vfd.set_brightness(1); // диапазон 1..4
```
Яркость можно менять динамически (ночной режим, «дыхание» и т.п.).
---
## Примеры
Запуск через `cargo run --example` или `task`:
```bash
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-дашборд
- уведомления умного дома
- статус сервиса / сборки
- ретро-индикатор