# Pwm

Summary:[Methods](https://developer.android.com/reference/com/google/android/things/pio/Pwm#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/com/google/android/things/pio/Pwm#inhmethods)\|[\[Expand All\]](https://developer.android.com/reference/com/google/android/things/pio/Pwm#)  

# Pwm

`
public


interface
Pwm
`  
`


implements

`[Closeable](https://developer.android.com/reference/java/io/Closeable)`


`

|-----------------------------------|
| com.google.android.things.pio.Pwm |

|---|---|
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/com/google/android/things/pio/Pwm#)Known Indirect Subclasses [PwmDriver](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver) |---------------------------------------------------------------------------------------------------------|------------------| | [PwmDriver](https://developer.android.com/reference/com/google/android/things/userdriver/pio/PwmDriver) | PWM user driver. | ||

<br />

*** ** * ** ***

Controls a PWM pin.

Opening a PWM pin takes ownership of it for the whole system, preventing anyone else from opening/accessing the PWM until you call[close()](https://developer.android.com/reference/com/google/android/things/pio/Pwm#close()). Forgetting to call[close()](https://developer.android.com/reference/com/google/android/things/pio/Pwm#close())will prevent anyone (including the same process/app) from using the PWM.

## Summary

|                                                                                                                       ### Public methods                                                                                                                        ||
|-------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` abstract void`                                                              | ` `[close](https://developer.android.com/reference/com/google/android/things/pio/Pwm#close())`() ` Releases the PWM pin.                                                         |
| ` default `[String](https://developer.android.com/reference/java/lang/String) | ` `[getName](https://developer.android.com/reference/com/google/android/things/pio/Pwm#getName())`() ` Returns the I/O name.                                                     |
| ` abstract void`                                                              | ` `[setEnabled](https://developer.android.com/reference/com/google/android/things/pio/Pwm#setEnabled(boolean))`(boolean enabled) ` Enables the PWM pin.                          |
| ` abstract void`                                                              | ` `[setPwmDutyCycle](https://developer.android.com/reference/com/google/android/things/pio/Pwm#setPwmDutyCycle(double))`(double duty_cycle) ` Sets the duty cycle.               |
| ` abstract void`                                                              | ` `[setPwmFrequencyHz](https://developer.android.com/reference/com/google/android/things/pio/Pwm#setPwmFrequencyHz(double))`(double freq_hz) ` Sets the frequency of the signal. |

| ### Inherited methods |
|-----------------------|---|
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/com/google/android/things/pio/Pwm#)From interface` `[java.io.Closeable](https://developer.android.com/reference/java/io/Closeable)` ` |------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void` | ` `[close](https://developer.android.com/reference/java/io/Closeable#close())`() ` Closes this stream and releases any system resources associated with it. | ||
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/com/google/android/things/pio/Pwm#)From interface` `[java.lang.AutoCloseable](https://developer.android.com/reference/java/lang/AutoCloseable)` ` |------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void` | ` `[close](https://developer.android.com/reference/java/lang/AutoCloseable#close())`() ` Closes this resource, relinquishing any underlying resources. | ||

## Public methods

### close

```
void close ()
```

Releases the PWM pin.

This must be called in order for the PWM pin to be released and be available to other users. Closing a PWM does not change its state, for example if it is closed while enabled, it will continue to output the same PWM signal until another user opens it and changes its state.

<br />

|                                                  Throws                                                   ||
|----------------------------------------------------------------------------|-------------------------------|
| [IOException](https://developer.android.com/reference/java/io/IOException) | if the PWM is already closed. |

### getName

```
String getName ()
```

Returns the I/O name.

<br />

|                                  Returns                                   ||
|--------------------------------------------------------------------|--------|
| [String](https://developer.android.com/reference/java/lang/String) | <br /> |

### setEnabled

```
void setEnabled (boolean enabled)
```

Enables the PWM pin.

Frequency must be set via[setPwmFrequencyHz(double)](https://developer.android.com/reference/com/google/android/things/pio/Pwm#setPwmFrequencyHz(double))before enabling the pin, but frequency and duty cycle settings can be set in both enabled and disabled state and will be remembered if the PWM is disabled and then re-enabled.

<br />

|                               Parameters                               ||
|-----------|-------------------------------------------------------------|
| `enabled` | `boolean`: True to enable the PWM, false to disable. <br /> |

|                                    Throws                                     ||
|----------------------------------------------------------------------------|---|
| [IOException](https://developer.android.com/reference/java/io/IOException) |   |

### setPwmDutyCycle

```
void setPwmDutyCycle (double duty_cycle)
```

Sets the duty cycle.

<br />

|                               Parameters                               ||
|--------------|----------------------------------------------------------|
| `duty_cycle` | `double`: A double between 0 and 100 (inclusive). <br /> |

|                                                       Throws                                                        ||
|--------------------------------------------------------------------------------------------------------|-------------|
|                                                                                                        | IOException |
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) |             |
| [IOException](https://developer.android.com/reference/java/io/IOException)                             |             |

### setPwmFrequencyHz

```
void setPwmFrequencyHz (double freq_hz)
```

Sets the frequency of the signal.

<br />

|                                       Parameters                                        ||
|-----------|------------------------------------------------------------------------------|
| `freq_hz` | `double`: Frequency in Hertz to use for the signal. Must be positive. <br /> |

|                                                       Throws                                                        ||
|--------------------------------------------------------------------------------------------------------|-------------|
|                                                                                                        | IOException |
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) |             |
| [IOException](https://developer.android.com/reference/java/io/IOException)                             |             |

-

  ## Interfaces

  - [Gpio](https://developer.android.com/reference/com/google/android/things/pio/Gpio)
  - [GpioCallback](https://developer.android.com/reference/com/google/android/things/pio/GpioCallback)
  - [I2cDevice](https://developer.android.com/reference/com/google/android/things/pio/I2cDevice)
  - [Pwm](https://developer.android.com/reference/com/google/android/things/pio/Pwm)
  - [SpiDevice](https://developer.android.com/reference/com/google/android/things/pio/SpiDevice)
  - [UartDevice](https://developer.android.com/reference/com/google/android/things/pio/UartDevice)
  - [UartDeviceCallback](https://developer.android.com/reference/com/google/android/things/pio/UartDeviceCallback)
-

  ## Classes

  - [PeripheralManager](https://developer.android.com/reference/com/google/android/things/pio/PeripheralManager)