5.8 KiB
LEDC Module
Since | Origin / Contributor | Maintainer | Source |
---|---|---|---|
2017-07-05 | Lars Stenberg | Lars Stenberg | ledc.c |
This module provides access to the LEDC PWM driver.
LEDC Overview
The LED control module is primarily designed to control the intensity of LEDs, although it can be used to generate PWM signals for other purposes as well. It has 16 channels which can generate independent waveforms that can be used to drive e.g. RGB LED devices. For maximum flexibility, the high-speed as well as the low-speed channels can be driven from one of four high-speed/low-speed timers. The PWM controller also has the ability to automatically increase or decrease the duty cycle gradually, allowing for fades without any processor interference.
ledc.newChannel()
Configures a PIN to be controlled by the LEDC system.
Syntax
myChannel = ledc.newChannel({
gpio=x,
bits=ledc.TIMER_10_BIT || ledc.TIMER_11_BIT || ledc.TIMER_12_BIT || ledc.TIMER_13_BIT || ledc.TIMER_14_BIT || ledc.TIMER_15_BIT,
mode=ledc.HIGH_SPEED || ledc.LOW_SPEED,
timer=ledc.TIMER_0 || ledc.TIMER_1 || ledc.TIMER_2 || ledc.TIMER_3,
channel=ledc.CHANNEL_0 || ledc.CHANNEL_1 || ledc.CHANNEL_2 || ledc.CHANNEL_3 || ledc.CHANNEL_4 || ledc.CHANNEL_5 || ledc.CHANNEL_6 || ledc.CHANNEL_7,
frequency=x,
invert=false,
duty=x
});
Parameters
List of configuration tables:
gpio
one or more (given as list) pins, see GPIO Overviewbits
Channel duty depth. Defaults to ledc.TIMER_13_BIT. Otherwise one ofledc.TIMER_10_BIT
- ...
ledc.TIMER_15_BIT
mode
High-speed mode or low-speed modeledc.HIGH_SPEED
ledc.LOW_SPEED
timer
The timer source of channelledc.TIMER_0
- ...
ledc.TIMER_3
channel
The timer source of channelledc.CHANNEL_0
- ...
ledc.CHANNEL_7
frequency
Timer frequency(Hz)invert
Inverts the output. False, with duty 0, is always low.duty
Channel duty, the duty range is [0, (2**bit_num) - 1]. Example: if ledc.TIMER_13_BIT is used maximum value is 4096 x 2 -1 = 8091
Returns
channel
ledc.channel
Example
myChannel = ledc.newChannel({
gpio=19,
bits=ledc.TIMER_13_BIT,
mode=ledc.HIGH_SPEED,
timer=ledc.TIMER_0,
channel=ledc.CHANNEL_0,
frequency=1000,
duty=4096
});
LEDC channel module
All interactions with the LEDC subsystem is done on the channel object created using the newChannel method.
ledc.channel:stop()
Disable LEDC output, and set idle level.
Syntax
channel:stop(idleLevel)
Parameters
idleLevel
Set output idle level after LEDC stops.ledc.IDLE_LOW
ledc.IDLE_HIGH
Returns
nil
Example
channel:stop(ledc.IDLE_LOW)
ledc.channel:setfreq()
Set channel frequency (Hz)
Syntax
channel:setfreq(frequency)
Parameters
frequency
What frequency should be set
Returns
nil
Example
channel:setfreq(2000)
ledc.channel:getfreq()
Get channel frequency (Hz)
Syntax
channel:getfreq()
Parameters
None
Returns
- 0 error
- Others current LEDC frequency
Example
channel:getfreq()
ledc.channel:setduty()
Set channel duty
Syntax
channel:setdutyduty)
Parameters
duty
What duty should be set
Returns
nil
Example
channel:setduty(4096)
ledc.channel:getduty()
Get channel duty
Syntax
channel:getduty()
Parameters
None
Returns
- (-1) parameter error
- Others current LEDC duty
Example
channel:getduty()
ledc.channel:reset()
Resets the timer
Syntax
channel:reset()
Parameters
None
Returns
nil
Example
channel:reset();
ledc.channel:pause()
Pauses the timer
Syntax
channel:pause()
Parameters
None
Returns
nil
Example
channel:pause();
ledc.channel:resume()
Resumes a paused timer
Syntax
channel:resume()
Parameters
None
Returns
nil
Example
channel:resume()
ledc.channel:fadewithtime()
Set LEDC fade function, with a limited time.
Syntax
channel:fadewithtime(targetDuty, maxFadeTime[, wait])
Parameters
targetDuty
Target duty of fading.maxFadeTime
The maximum time of the fading ( ms ).wait
Whether to block until fading done.ledc.FADE_NO_WAIT
(default)ledc.FADE_WAIT_DONE
Returns
nil
Example
channel:fadewithtime(4096, 1000);
ledc.channel:fadewithstep()
Set LEDC fade function, with step.
Syntax
channel:fadewithstep(targetDuty, scale, cycleNum[, wait])
Parameters
targetDuty
Target duty of fading.scale
Controls the increase or decrease step scale.cycleNum
Increase or decrease the duty every cycle_num cycleswait
Whether to block until fading done.ledc.FADE_NO_WAIT
(default)ledc.FADE_WAIT_DONE
Returns
nil
Example
channel:fadewithstep(1000, 10, 10);
ledc.channel:fade()
Set LEDC fade function.
Syntax
channel:fade(duty, direction, scale, cycleNum, stepNum [, wait])
Parameters
duty
Set the start of the gradient duty.direction
Set the direction of the gradient.ledc.FADE_DECREASE
ledc.FADE_INCREASE
scale
Set gradient change amplitude.cycleNum
Set how many LEDC tick each time the gradient lasts.stepNum
Set the number of the gradient.wait
Whether to block until fading done.ledc.FADE_NO_WAIT
(default)ledc.FADE_WAIT_DONE
Returns
nil
Example
channel:fade(0, ledc.FADE_INCREASE, 100, 100, 1000);