Skip to main content

Crate embassy_st7789v_plot

Crate embassy_st7789v_plot 

Source
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§

AxisConfig
Définit un axe avec graduation statique fixe.
Graphics
LineChart
Gestionnaire du graphique avec axes statiques configurables.
PlotConfig
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.