Expand description
§embassy-piezo
Driver asynchrone no_std pour capteur de vibration piézoélectrique (DO).
Portage esp-hal (ESP32 / ESP32-Cx / ESP32-Sx). La logique métier est
inchangée par rapport à la version embassy-rp : seul le type Input
provient désormais de esp_hal::gpio au lieu de embassy_rp::gpio.
§Caractéristiques
- Async natif via GPIO
esp-hal(traitembedded-hal-asyncWait) - Détection front montant sans polling (zéro CPU en attente)
- Comptage d’événements avec timeout configurable
- Debounce configurable pour filtrer les rebonds électriques
- Compatible signaux globaux inter-tâches
- Zéro allocation, zéro
unsafe
§Pré-requis (Cargo.toml)
[dependencies]
esp-hal = { version = "1", features = ["esp32"] } # adapter la cible
esp-hal-embassy = "0.99" # fournit l'executor + le time-driver embassy
embassy-executor = "0.7"
embassy-time = "0.4"embassy-time reste utilisé tel quel : esp-hal-embassy fournit
l’implémentation de l’horloge (embassy_time::Timer / with_timeout)
pour toutes les puces supportées par esp-hal, exactement comme
embassy-rp le fait pour le RP2040.
§Exemple minimal
ⓘ
use esp_hal::gpio::{Input, InputConfig, Pull};
let pin = Input::new(peripherals.GPIO15, InputConfig::default().with_pull(Pull::Down));
let mut piezo = PiezoVibration::new(pin);
piezo.wait_for_vibration().await;
let count = piezo.count();§Exemple avec debounce
ⓘ
use esp_hal::gpio::{Input, InputConfig, Pull};
// Chocs humains : ignorer les rebonds électriques sous 100 ms
let pin = Input::new(peripherals.GPIO15, InputConfig::default().with_pull(Pull::Down));
let mut piezo = PiezoVibration::new_with_debounce(pin, 100);
let event = piezo.wait_for_vibration().await;
defmt::info!("choc #{}", event.count);§Initialisation requise côté application
ⓘ
use esp_hal::timer::timg::TimerGroup;
let peripherals = esp_hal::init(esp_hal::Config::default());
let timg0 = TimerGroup::new(peripherals.TIMG0);
esp_hal_embassy::init(timg0.timer0); // requis avant tout Timer::after / with_timeoutRe-exports§
pub use error::PiezoError;
Modules§
- error
- Types d’erreur du driver Piezo.
- signals
- Signaux globaux asynchrones pour le partage d’événements piézo.
Structs§
- Piezo
Vibration - Driver pour capteur de vibration piézoélectrique (sortie numérique DO).
- Vibration
Event - Événement de vibration horodaté.
Enums§
- Level
- Digital input or output level.