Skip to main content

embassy_ssd1306_physics/
lib.rs

1// Copyright (C) 2026 Jorge Andre Castro
2// GPL-2.0-or-later
3
4#![no_std]
5#![forbid(unsafe_code)]
6#![warn(missing_docs)]
7
8//! # embassy-ssd1306-physics
9//!
10//! Dessins 2D `no_std` d'objets physiques pour écrans OLED SSD1306 (128×64),
11//! construite au-dessus de `[`embassy-ssd1306-graphics`]`.
12//!
13//! ## Objets disponibles
14//!
15//! | Module          | Struct         | Description                                  |
16//! |-----------------|----------------|----------------------------------------------|
17//! | [`robotic_arm`] | [`RoboticArm`] | Bras industriel 2D (socle + pince pneumatique)  |
18//! | [`pendulum`]    | [`Pendulum`]   | Pendule simple (encastrement + tige + masse) |
19//! | [`spring_mass`] | [`SpringMass`] | Système ressort-masse vertical               |
20//! | [`compass`]     | [`Compass`]    | Boussole (cadran + cardinaux + aiguille)     |
21//! | [`gear`]        | [`Gear`]       | Engrenage (dents + moyeu creux)              |
22//! | [`piston`]       | [`Piston`]      | Piston 2D mécanique (chambre + tige guidée)                    |
23//!
24//! ## Patron sin/cos injecté
25//!
26//! Chaque `draw()` accepte `cos_fn` et `sin_fn` de type `fn(f32) -> f32`.
27//! Passez votre crate trig `no_std` :
28//!
29//! ```rust,no_run
30//! use embedded_trig_f32 as trig;
31//! arm.draw(&mut gfx, 0.785, -0.524, true, trig::cos, trig::sin);
32//! ```
33//!
34//! ## Ajouter un nouvel objet
35//!
36//! 1. Créer `src/mon_objet.rs` : impl struct + `draw()` + `erase()`
37//! 2. Déclarer `pub mod mon_objet;` dans `src/lib.rs`
38//! 3. Ajouter `pub use mon_objet::MonObjet;` si re-export souhaité
39//!
40//! Aucun autre fichier à modifier.
41
42pub mod draw_utils;
43pub mod robotic_arm;
44pub mod pendulum;
45pub mod spring_mass;
46pub mod compass;
47pub mod gear;
48pub mod piston;
49
50
51pub use robotic_arm::RoboticArm;
52pub use pendulum::Pendulum;
53pub use spring_mass::SpringMass;
54pub use compass::Compass;
55pub use gear::Gear;
56pub use gear::GearPair;
57pub use gear::GearTrain;
58pub use piston::Piston;
59pub use robotic_arm::Facing;