Struct rppal::gpio::OutputPin

source ·
pub struct OutputPin { /* private fields */ }
Expand description

GPIO pin configured as output.

OutputPins are constructed by converting a Pin using Pin::into_output, Pin::into_output_low or Pin::into_output_high. The pin’s mode is automatically set to Mode::Output.

An OutputPin can be used to change a pin’s output state.

The embedded-hal digital::OutputPin and PwmPin trait implementations for OutputPin can be enabled by specifying the optional hal feature in the dependency declaration for the rppal crate.

The unproven embedded-hal digital::InputPin, digital::StatefulOutputPin, digital::ToggleableOutputPin and Pwm trait implementations for OutputPin can be enabled by specifying the optional hal-unproven feature in the dependency declaration for the rppal crate.

Implementations§

source§

impl OutputPin

source

pub fn pin(&self) -> u8

Returns the GPIO pin number.

Pins are addressed by their BCM numbers, rather than their physical location.

source

pub fn is_set_low(&self) -> bool

Returns true if the pin’s output state is set to Low.

source

pub fn is_set_high(&self) -> bool

Returns true if the pin’s output state is set to High.

source

pub fn write(&mut self, level: Level)

Sets the pin’s output state.

source

pub fn set_low(&mut self)

Sets the pin’s output state to Low.

source

pub fn set_high(&mut self)

Sets the pin’s output state to High.

source

pub fn toggle(&mut self)

Toggles the pin’s output state between Low and High.

source

pub fn set_pwm(&mut self, period: Duration, pulse_width: Duration) -> Result<()>

Configures a software-based PWM signal.

period indicates the time it takes to complete one cycle.

pulse_width indicates the amount of time the PWM signal is active during a single period.

Software-based PWM is inherently inaccurate on a multi-threaded OS due to scheduling/preemption. If an accurate or faster PWM signal is required, use the hardware Pwm peripheral instead. More information can be found here.

If set_pwm is called when a PWM thread is already active, the existing thread will be reconfigured at the end of the current cycle.

source

pub fn set_pwm_frequency( &mut self, frequency: f64, duty_cycle: f64 ) -> Result<()>

Configures a software-based PWM signal.

set_pwm_frequency is a convenience method that converts frequency to a period and duty_cycle to a pulse width, and then calls set_pwm.

frequency is specified in hertz (Hz).

duty_cycle is specified as a floating point value between 0.0 (0%) and 1.0 (100%).

source

pub fn clear_pwm(&mut self) -> Result<()>

Stops a previously configured software-based PWM signal.

The thread responsible for emulating the PWM signal is stopped at the end of the current cycle.

source

pub fn reset_on_drop(&self) -> bool

Returns the value of reset_on_drop.

source

pub fn set_reset_on_drop(&mut self, reset_on_drop: bool)

When enabled, resets the pin’s mode to its original state and disables the built-in pull-up/pull-down resistors when the pin goes out of scope. By default, this is set to true.

Note

Drop methods aren’t called when a process is abnormally terminated, for instance when a user presses Ctrl + C, and the SIGINT signal isn’t caught. You can catch those using crates such as simple_signal.

Trait Implementations§

source§

impl Debug for OutputPin

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Drop for OutputPin

source§

fn drop(&mut self)

Resets the pin’s mode and disables the built-in pull-up/pull-down resistors if reset_on_drop is set to true (default).

source§

impl<'a> PartialEq<&'a OutputPin> for OutputPin

source§

fn eq(&self, other: &&'a OutputPin) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a> PartialEq<OutputPin> for &'a OutputPin

source§

fn eq(&self, other: &OutputPin) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<OutputPin> for OutputPin

source§

fn eq(&self, other: &OutputPin) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for OutputPin

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.