# PWM Module | Since | Origin / Contributor | Maintainer | Source | | :----- | :-------------------- | :---------- | :------ | | 2014-12-22 | [Zeroday](https://github.com/funshine) | [Zeroday](https://github.com/funshine) | [pwm.c](../../app/modules/pwm.c)| ## pwm.close() Quit PWM mode for the specified GPIO pin. #### Syntax `pwm.close(pin)` #### Parameters `pin` 1~12, IO index #### Returns `nil` #### See also [pwm.start()](#pwmstart) ## pwm.getclock() Get selected PWM frequency of pin. #### Syntax `pwm.getclock(pin)` #### Parameters `pin` 1~12, IO index #### Returns `number` PWM frequency of pin #### See also [pwm.setclock()](#pwmsetclock) #### See also [pwm.getduty()](#pwmgetduty) ## pwm.getduty() Get selected duty cycle of pin. #### Syntax `pwm.getduty(pin)` #### Parameters `pin` 1~12, IO index #### Returns `number` duty cycle, max 1023 #### See also [pwm.setduty()](#pwmsetduty) ## pwm.setclock() Set PWM frequency. **Note:** Setup of the PWM frequency will synchronously change other setups as well if there are any. Only one PWM frequency can be allowed for the system. #### Syntax `pwm.setclock(pin, clock)` #### Parameters - `pin` 1~12, IO index - `clock` 1~1000, PWM frequency #### Returns `nil` #### See also [pwm.getclock()](#pwmgetclock) ## pwm.setduty() Set duty cycle for a pin. #### Syntax `pwm.setduty(pin, duty)` #### Parameters - `pin` 1~12, IO index - `duty` 0~1023, pwm duty cycle, max 1023 (10bit) #### Returns `nil` #### Example ```lua -- D1 is connected to green led -- D2 is connected to blue led -- D3 is connected to red led pwm.setup(1, 500, 512) pwm.setup(2, 500, 512) pwm.setup(3, 500, 512) pwm.start(1) pwm.start(2) pwm.start(3) function led(r, g, b) pwm.setduty(1, g) pwm.setduty(2, b) pwm.setduty(3, r) end led(512, 0, 0) -- set led to red led(0, 0, 512) -- set led to blue. ``` ## pwm.setup() Set pin to PWM mode. Only 6 pins can be set to PWM mode at the most. #### Syntax `pwm.setup(pin, clock, duty)` #### Parameters - `pin` 1~12, IO index - `clock` 1~1000, pwm frequency - `duty` 0~1023, pwm duty cycle, max 1023 (10bit) #### Returns `nil` #### Example ```lua -- set pin index 1 as pwm output, frequency is 100Hz, duty cycle is half. pwm.setup(1, 100, 512) ``` #### See also [pwm.start()](#pwmstart) ## pwm.start() PWM starts, the waveform is applied to the GPIO pin. #### Syntax `pwm.start(pin)` ####Parameters `pin` 1~12, IO index #### Returns `nil` #### See also [pwm.stop()](#pwmstop) ## pwm.stop() Pause the output of the PWM waveform. #### Syntax `pwm.stop(pin)` #### Parameters `pin` 1~12, IO index #### Returns `nil` #### See also [pwm.start()](#pwmstart)