Expand description
§embassy-st7789v-plot
Moteur de tracé de graphiques cartésiens (X, Y) adaptatifs et configurables
pour écrans TFT LCD ST7789V, s’appuyant sur la structure Graphics.
§Caractéristiques principales
#![no_std]+#![forbid(unsafe_code)]: Sûr et optimisé pour le bare-metal.- Zéro allocation dynamique : Buffers statiques uniquement (ring buffer).
- API async : Basée sur Embassy pour des transferts SPI non bloquants.
- Rendu intelligent (Double Phase) : Le cadre, les étiquettes et les titres sont tracés une seule fois à l’initialisation. Seuls la grille interne et le signal sont rafraîchis dynamiquement.
- Axes configurables : Graduations statiques avec labels personnalisés et détection automatique / coloration du zéro.
- Historique circulaire : Jusqu’à 240 points (limité par la largeur physique de l’écran).
- Protection stricte des bordures : Clamping des primitives géométriques à l’espace interne utile pour éviter tout débordement sur les axes.
§Structures principales
Graphics: Contexte graphique pour les primitives de dessin.AxisConfig: Configuration d’un axe (min, max, pas de graduation, label).PlotConfig: Configuration complète du graphique (position, marges, couleurs).LineChart: Gestionnaire du graphique avec données historiques.
§Exemple d’utilisation
use embassy_st7789v_plot::{Graphics, AxisConfig, PlotConfig, LineChart};
// Créer les configurations d'axes
let x_axis = AxisConfig::new(0.0, 10.0, 2.0, b"Time (s)");
let y_axis = AxisConfig::new(-50.0, 50.0, 20.0, b"Volt (mV)");
// Créer la configuration complète du graphique
let config = PlotConfig {
x: 10,
y: 10,
width: 220,
height: 200,
margin_left: 30,
margin_right: 10,
margin_top: 10,
margin_bottom: 30,
x_axis,
y_axis,
bg_color: Color::BLACK,
line_color: Color::GREEN,
axis_color: Color::WHITE,
grid_color: Color::from_rgb(64, 64, 64),
text_color: Color::WHITE,
label_color: Color::CYAN,
};
// Créer le gestionnaire de graphique (N = 100 points max)
let mut chart: LineChart<100> = LineChart::new(config);
// Ajouter des données
chart.push(12.4);
chart.push(-5.2);
chart.push(22.1);
// Rendu asynchrone sur l'affichage (mise à jour incrémentale de la zone interne)
let mut gfx = Graphics::new_no_rst(display);
chart.render(&mut gfx).await;Structs§
- Axis
Config - Définit un axe avec graduation statique fixe.
- Graphics
- Line
Chart - Gestionnaire du graphique avec axes statiques configurables.
- Plot
Config - Configuration complète du tracé graphique.
Constants§
- PLOT_
HISTORY_ LIMIT - Taille maximale de l’historique des données du graphique.
Functions§
- line
- Trace une ligne entre deux points en utilisant l’algorithme de Bresenham.