[][src]Trait embedded_hal::adc::OneShot

pub trait OneShot<ADC, Word, Pin: Channel<ADC>> {
    type Error;
    fn read(&mut self, pin: &mut Pin) -> Result<Word, Self::Error>;
}

ADCs that sample on single channels per request, and do so at the time of the request.

This trait is the interface to an ADC that is configured to read a specific channel at the time of the request (in contrast to continuous asynchronous sampling).

use embedded_hal::adc::{Channel, OneShot};

struct MyAdc; // 10-bit ADC, with 5 channels

impl<WORD, PIN> OneShot<MyAdc, WORD, PIN> for MyAdc
where
   WORD: From<u16>,
   PIN: Channel<MyAdc, ID=u8>,
{
   type Error = ();

   fn read(&mut self, _pin: &mut PIN) -> nb::Result<WORD, Self::Error> {
       let chan = 1 << PIN::channel();
       self.power_up();
       let result = self.do_conversion(chan);
       self.power_down();
       Ok(result.into())
   }
}

Associated Types

Error type returned by ADC methods

Required Methods

Request that the ADC begin a conversion on the specified pin

This method takes a Pin reference, as it is expected that the ADC will be able to sample whatever channel underlies the pin.

Implementors