Create README.md

This commit is contained in:
Кобелев Андрей Андреевич
2026-01-28 01:38:55 +05:00
parent c8917047cc
commit fc9531be56

124
README.md Normal file
View File

@@ -0,0 +1,124 @@
# 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-дашборд
- уведомления умного дома
- статус сервиса / сборки
- ретро-индикатор