156 lines
2.6 KiB
Markdown
156 lines
2.6 KiB
Markdown
# 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)
|