pub struct Pwm { /* private fields */ }Expand description
Provides access to the Raspberry Pi’s PWM peripheral.
Before using Pwm, make sure the selected PWM channel has been configured
and activated. More information can be found here.
The embedded-hal PwmPin trait implementation for Pwm can be enabled
by specifying the optional hal feature in the dependency declaration for
the rppal crate.
The unproven embedded-hal Pwm trait implementation for Pwm can be enabled
by specifying the optional hal-unproven feature in the dependency declaration for
the rppal crate.
Implementations§
source§impl Pwm
 
impl Pwm
sourcepub fn new(channel: Channel) -> Result<Pwm>
 
pub fn new(channel: Channel) -> Result<Pwm>
Constructs a new Pwm.
new doesn’t change the channel’s period, pulse width or polarity. The channel
will remain disabled until enable is called.
sourcepub fn with_period(
    channel: Channel,
    period: Duration,
    pulse_width: Duration,
    polarity: Polarity,
    enabled: bool
) -> Result<Pwm>
 
pub fn with_period( channel: Channel, period: Duration, pulse_width: Duration, polarity: Polarity, enabled: bool ) -> Result<Pwm>
Constructs a new Pwm using the specified settings.
period indicates the time it takes for the PWM channel to complete one cycle.
pulse_width indicates the amount of time the PWM channel is active during a
single period.
polarity configures the active logic level as either high (Normal)
or low (Inverse).
enabled enables PWM on the selected channel. If enabled is set to false,
the channel will remain disabled until enable is called.
This method will fail if period is shorter than pulse_width.
sourcepub fn with_frequency(
    channel: Channel,
    frequency: f64,
    duty_cycle: f64,
    polarity: Polarity,
    enabled: bool
) -> Result<Pwm>
 
pub fn with_frequency( channel: Channel, frequency: f64, duty_cycle: f64, polarity: Polarity, enabled: bool ) -> Result<Pwm>
Constructs a new Pwm using the specified settings.
with_frequency is a convenience method that converts frequency to a period,
and calculates the duty cycle as a percentage of the frequency.
frequency is specified in hertz (Hz).
duty_cycle is specified as a floating point value between 0.0 (0%) and 1.0 (100%).
polarity configures the active logic level as either high (Normal)
or low (Inverse).
enabled enables PWM on the selected channel. If enabled is set to false,
the channel will remain disabled until enable is called.
sourcepub fn set_period(&self, period: Duration) -> Result<()>
 
pub fn set_period(&self, period: Duration) -> Result<()>
Sets the period.
period indicates the time it takes for the PWM channel to complete one cycle.
This method will fail if period is shorter than the current pulse width.
sourcepub fn pulse_width(&self) -> Result<Duration>
 
pub fn pulse_width(&self) -> Result<Duration>
Returns the pulse width.
sourcepub fn set_pulse_width(&self, pulse_width: Duration) -> Result<()>
 
pub fn set_pulse_width(&self, pulse_width: Duration) -> Result<()>
Sets the pulse width.
pulse_width indicates the amount of time the PWM channel is active during a
single period.
This method will fail if pulse_width is longer than the current period.
sourcepub fn frequency(&self) -> Result<f64>
 
pub fn frequency(&self) -> Result<f64>
Returns the frequency.
frequency is a convenience method that calculates the frequency in hertz (Hz)
based on the configured period.
sourcepub fn set_frequency(&self, frequency: f64, duty_cycle: f64) -> Result<()>
 
pub fn set_frequency(&self, frequency: f64, duty_cycle: f64) -> Result<()>
Sets the frequency and duty cycle.
set_frequency is a convenience method that converts frequency to a period,
and calculates the duty cycle as a percentage of the frequency.
frequency is specified in hertz (Hz).
duty_cycle is specified as a floating point value between 0.0 (0%) and 1.0 (100%).
sourcepub fn duty_cycle(&self) -> Result<f64>
 
pub fn duty_cycle(&self) -> Result<f64>
Returns the duty cycle.
duty_cycle is a convenience method that calculates the duty cycle as a
floating point value between 0.0 (0%) and 1.0 (100%) based on the configured
period and pulse width.
sourcepub fn set_duty_cycle(&self, duty_cycle: f64) -> Result<()>
 
pub fn set_duty_cycle(&self, duty_cycle: f64) -> Result<()>
Sets the duty cycle.
set_duty_cycle is a convenience method that converts duty_cycle to a
pulse width based on the configured period.
duty_cycle is specified as a floating point value between 0.0 (0%) and 1.0 (100%).
sourcepub fn set_polarity(&self, polarity: Polarity) -> Result<()>
 
pub fn set_polarity(&self, polarity: Polarity) -> Result<()>
sourcepub fn is_enabled(&self) -> Result<bool>
 
pub fn is_enabled(&self) -> Result<bool>
Returns true if the PWM channel is enabled.
sourcepub fn reset_on_drop(&self) -> bool
 
pub fn reset_on_drop(&self) -> bool
Returns the value of reset_on_drop.
sourcepub fn set_reset_on_drop(&mut self, reset_on_drop: bool)
 
pub fn set_reset_on_drop(&mut self, reset_on_drop: bool)
When enabled, disables the PWM channel when the Pwm instance
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.