1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// Copyright (C) 2026 Jorge Andre Castro
// GPL-2.0-or-later
//! # embassy-max4466
//!
//! Driver async `no_std` pour le capteur micro MAX4466, basé sur Embassy.
//!
//! ## Features optionnelles
//!
//! | Feature | Description |
//! |------------------|------------------------------------------|
//! | `filter-ema` | Active le filtre EMA (moyenne exponentielle mobile) |
//! | `filter-median` | Active le filtre médian (fenêtre glissante de 5 samples) |
//!
//! Par défaut, aucun filtre n'est activé : `read_raw` retourne la valeur ADC brute.
//!
//! ## Exemple minimal
//!
//! ```rust,ignore
//! use embassy_max4466::Max4466;
//! use embassy_rp::adc::{Adc, Channel, Config};
//!
//! #[embassy_executor::task]
//! async fn micro_task(adc: Adc<'static, Async>, ch: Channel<'static>) {
//! let mut mic = Max4466::new(adc, ch);
//! mic.calibrate().await;
//!
//! loop {
//! let amplitude = mic.read_amplitude(50).await;
//! defmt::info!("Amplitude: {}", amplitude);
//! }
//! }
//! ```
//!
//! ## Exemple avec signal global
//!
//! ```rust,ignore
//! use embassy_max4466::signals::MIC_SIGNAL;
//!
//! #[embassy_executor::task]
//! async fn afficher_micro() {
//! loop {
//! let data = MIC_SIGNAL.wait().await;
//! defmt::info!("Amplitude: {} Raw: {}", data.amplitude, data.raw);
//! }
//! }
//! ```
pub use Max4466;
/// Données publiées sur [`signals::MIC_SIGNAL`].