Create README.md
This commit is contained in:
124
README.md
Normal file
124
README.md
Normal 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` — обновление только изменённых символов
|
||||
- Управление яркостью (1–4)
|
||||
- Бегущая строка (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-дашборд
|
||||
- уведомления умного дома
|
||||
- статус сервиса / сборки
|
||||
- ретро-индикатор
|
||||
Reference in New Issue
Block a user