Struct LD06

Source
pub struct LD06<R: Read<u8>> { /* private fields */ }
Expand description

An LD06 Peripheral.

This driver will not control the PWM of the LiDAR, if you are not using the included speed control board please use [into_pid] to add motor speed control. Due to a lack of a proper embedded_hal PWM interface, you will need to apply the PID value to the PWM line yourself.

Implementations§

Source§

impl<R: Read<u8>> LD06<R>

Source

pub fn new(reader: R) -> Self

Creates a new interface to an LD06. The serial port must be configured as follows:

  • baud 230400
  • 8 Data bits
  • 1 Stop bit
  • No Parity
  • No Flow Control
Source

pub fn read_next_byte( &mut self, ) -> Result<Option<PartialScan>, ParseError<R::Error>>

Reads the next byte from the serial buffer, appending it to the wip scan. If a scan was completed, it will be returned. If an error occurs, the current packet will be corrupted, but the system will recover on the start of the next packet.

This functions blocking behavior will be determined by the underlying serial read function.

Source

pub fn into_pid(self) -> LD06Pid<R>

Adds motor speed PID control output.

Auto Trait Implementations§

§

impl<R> Freeze for LD06<R>
where R: Freeze,

§

impl<R> RefUnwindSafe for LD06<R>
where R: RefUnwindSafe,

§

impl<R> Send for LD06<R>
where R: Send,

§

impl<R> Sync for LD06<R>
where R: Sync,

§

impl<R> Unpin for LD06<R>
where R: Unpin,

§

impl<R> UnwindSafe for LD06<R>
where R: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.