diff --git a/CHANGELOG.md b/CHANGELOG.md index 77997edbd..3fd0bcf56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Added - 10-bit addressing mode for I2C traits. +- Added `blocking::dac::SingleChannelDac` trait for digitial-to-analog-converters. - `try_set_state` method for `OutputPin` using an input `PinState` value. ### Changed diff --git a/src/blocking/dac.rs b/src/blocking/dac.rs new file mode 100644 index 000000000..14b85c2f8 --- /dev/null +++ b/src/blocking/dac.rs @@ -0,0 +1,10 @@ +//! Digital-to-analog conversion traits + +/// Trait representing a single-channel digital-to-analog converter (DAC). +pub trait SingleChannelDac { + /// Error type returned by DAC methods + type Error; + + /// Output a constant signal, given a bit word. + fn try_set_value(&mut self, value: Word) -> Result<(), Self::Error>; +} diff --git a/src/blocking/mod.rs b/src/blocking/mod.rs index 3a050f6d2..3255216c9 100644 --- a/src/blocking/mod.rs +++ b/src/blocking/mod.rs @@ -4,6 +4,7 @@ //! traits. To save boilerplate when that's the case a `Default` marker trait may be provided. //! Implementing that marker trait will opt in your type into a blanket implementation. +pub mod dac; pub mod delay; pub mod i2c; pub mod rng; diff --git a/src/prelude.rs b/src/prelude.rs index 315acd9c7..a60228494 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -5,6 +5,7 @@ pub use crate::adc::Channel as _embedded_hal_adc_Channel; pub use crate::adc::OneShot as _embedded_hal_adc_OneShot; +pub use crate::blocking::dac::SingleChannelDac as _embedded_hal_blocking_dac_SingleChannelDac; pub use crate::blocking::delay::DelayMs as _embedded_hal_blocking_delay_DelayMs; pub use crate::blocking::delay::DelayUs as _embedded_hal_blocking_delay_DelayUs; pub use crate::blocking::i2c::{