# PWM

## Code Example

    from periphery import PWM

    # Open PWM chip 0, channel 10
    pwm = PWM(0, 10)

    # Set frequency to 1 kHz
    pwm.frequency = 1e3
    # Set duty cycle to 75%
    pwm.duty_cycle = 0.75

    pwm.enable()

    # Change duty cycle to 50%
    pwm.duty_cycle = 0.50

    pwm.close()

## API

class periphery.PWM(chip, channel)

  Bases: `object`

  Instantiate a PWM object and open the sysfs PWM corresponding to the specified chip and channel.

  Parameters:

    - chip (int) – PWM chip number.

    - channel (int) – PWM channel number.

  Returns:

    PWM object.

  Return type:

    PWM

  Raises:

    - PWMError – if an I/O or OS error occurs.

    - TypeError – if chip or channel types are invalid.

    - LookupError – if PWM chip does not exist.

    - TimeoutError – if waiting for PWM export times out.

  close()

    Close the PWM.

  enable()

    Enable the PWM output.

  disable()

    Disable the PWM output.

  property devpath

    Get the device path of the underlying sysfs PWM device.

    Type:

      str

  property chip

    Get the PWM chip number.

    Type:

      int

  property channel

    Get the PWM channel number.

    Type:

      int

  property period_ns

    Get or set the PWM’s output period in nanoseconds.

    Raises:

      - PWMError – if an I/O or OS error occurs.

      - TypeError – if value type is not int.

    Type:

      int

  property duty_cycle_ns

    Get or set the PWM’s output duty cycle in nanoseconds.

    Raises:

      - PWMError – if an I/O or OS error occurs.

      - TypeError – if value type is not int.

    Type:

      int

  property period

    Get or set the PWM’s output period in seconds.

    Raises:

      - PWMError – if an I/O or OS error occurs.

      - TypeError – if value type is not int or float.

    Type:

      int, float

  property duty_cycle

    Get or set the PWM’s output duty cycle as a ratio from 0.0 to 1.0.

    Raises:

      - PWMError – if an I/O or OS error occurs.

      - TypeError – if value type is not int or float.

      - ValueError – if value is out of bounds of 0.0 to 1.0.

    Type:

      int, float

  property frequency

    Get or set the PWM’s output frequency in Hertz.

    Raises:

      - PWMError – if an I/O or OS error occurs.

      - TypeError – if value type is not int or float.

    Type:

      int, float

  property polarity

    Get or set the PWM’s output polarity. Can be “normal” or “inversed”.

    Raises:

      - PWMError – if an I/O or OS error occurs.

      - TypeError – if value type is not str.

      - ValueError – if value is invalid.

    Type:

      str

  property enabled

    Get or set the PWM’s output enabled state.

    Raises:

      - PWMError – if an I/O or OS error occurs.

      - TypeError – if value type is not bool.

    Type:

      bool

class periphery.PWMError

  Bases: `OSError`

  Base class for PWM errors.