Author
|
Matrix TSL
|
Version
|
1.0
|
Category
|
General Output
|
PWM 16CH 12Bit (PCA9685) component
The PCA9685 is an I²C-bus controlled 16-channel LED controller optimized for Red/Green/Blue/Amber (RGBA) color backlighting or Servo motor applications. Each output has its own 12-bit resolution (4096 steps) fixed frequency individual PWM controller that operates at a programmable frequency from a typical of 24 Hz to 1526 Hz. All outputs are set to the same PWM frequency. Up to 64 devices can be chained together on a single I²C-bus to provide up to 1024 individual PWM outputs.
Component Source Code
Please click here to download the component source project: FC_Comp_Source_PCA9685_16_Channel_PWM.fcfx
Please click here to view the component source code (Beta): FC_Comp_Source_PCA9685_16_Channel_PWM.fcfx
Detailed description
No detailed description exists yet for this component
Examples
No additional examples
Macro reference
|
Reset
|
Sends a reset command to the PCA9685 chip over I2C
|
- VOID
|
Return
|
|
SetPWMFrequency
|
Sets the PWM frequency for the entire chip, up to approx 1.6 KHz
|
- FLOAT
|
Frequency
|
Floating point frequency that we will attempt to match
|
- VOID
|
Return
|
|
SetOutputMode
|
Sets the output mode of the PCA9685 to either open drain or push pull. Warning: LEDs with integrated zener diodes should only be driven in open drain mode.
|
- BOOL
|
Mode
|
0=OpenDrain, 1=Push/Pull
|
- VOID
|
Return
|
|
Sleep
|
Puts the module into Sleep mode
|
- VOID
|
Return
|
|
SetExternalClock
|
Sets EXTCLK pin to use the external clock
|
- BYTE
|
Prescale
|
External Clock Prescaler - Range: 3-255
|
- VOID
|
Return
|
|
SetAddress
|
Allows a different I2C address to be specified allowing one component to control multiple PCA9685 modules.
|
- BYTE
|
Address
|
Range: 0x40 - 0x7F
|
- VOID
|
Return
|
|
SetClockFrequency
|
Sets the current clock frequency, used for things like calculating the PWM frequency and Microsecond duty.
|
- ULONG
|
Clock
|
|
- VOID
|
Return
|
|
GetClockFrequency
|
Returns the current clock frequency
|
- ULONG
|
Return
|
|
WriteMicroseconds
|
Sets the PWM output of one of the PCA9685 pins based on the input microseconds, output is not precise
|
- BYTE
|
Output
|
One of the PWM output pins - Range: 0 to 15
|
- UINT
|
Microseconds
|
The number of Microseconds to turn the PWM output ON
|
- VOID
|
Return
|
|
SetPWM
|
Sets the PWM output of one of the PCA9685 pins
|
- BYTE
|
Output
|
One of the PWM output pins - Range: 0 to 15
|
- UINT
|
On
|
At what point in the 4096-part cycle to turn the PWM output ON
|
- UINT
|
Off
|
At what point in the 4096-part cycle to turn the PWM output OFF
|
- VOID
|
Return
|
|
Initialise
|
Sets up the I2C ready for communications to begin
|
- VOID
|
Return
|
|
WakeUp
|
Wakes the module from Sleep mode
|
- VOID
|
Return
|
|
SetPin
|
Sets pin without having to deal with on/off tick placement and properly handles a zero value as completely off and 4095 as completely on.
|
- BYTE
|
Output
|
One of the PWM output pins - Range: 0 to 15
|
- UINT
|
Duty
|
The number of ticks out of 4096 to be active
|
- BOOL
|
Invert
|
0=Normal, 1=Inverted
|
- VOID
|
Return
|
Property reference
|
Properties
|
|
Address
|
Module I2C Address. This setting can be overridden using the SetAddress component macro.
|
|
Output Mode
|
Sets the output mode of the PCA9685 to either open drain or push pull. Warning: LEDs with integrated zener diodes should only be driven in open drain mode. Can be overridden using the SetOutputMode component macro.
|
|
Clock Type
|
Configures the input clock source to the module.
|
|
Clock Frequency
|
Frequency of the module. Internal oscillator defaults to 250000000 or 25MHz but can actually be anywhere from 23 to 27MHz. External clock frequency can be specified here up to a max value of 50000000 or 50MHz. This setting can be overridden using the SetClockFrequency component macro.
|
|
Prescaler
|
External Clock Prescaler Range: 3 to 255
|
|
Target PWM Frequency
|
The ideal PWM frequency we would like to generate on the output pins. Servo motors require an output frequency around 50Hz. LEDs require a mugh higher output frequency to avoid visible flicker.
|
|
Actual PWM Frequency
|
The calculated actual PWM frequency available using the Clock Frequency and Prescaler
|
|
PWM Resolution
|
Number of microseconds the PWM output can resolve to
|
|
I2C Communications
|
|
Channel
|
Channel selection
|
|
Baud Select
|
Baud rate option selector
|
|
Baud Rate
|
Baud rate to be used
|
|
SDA
|
Pin used for SDA (data signal)
|
|
SCL
|
Pin used for SCL (clock signal)
|
|
Stop Delay
|
On older microcontroller devices there is a potential for the I2C hardware channel to lock up if there is not a 10ms delay between an I2C stop event and the next I2C start event. Most modern microcontrollers will not have a problem so this property can be disabled to speed up the I2C communications.
|
|
Simulation
|
|
Simulate Comms
|
|
==Macro reference==
|
Reset
|
Sends a reset command to the PCA9685 chip over I2C
|
- VOID
|
Return
|
|
SetPWMFrequency
|
Sets the PWM frequency for the entire chip, up to approx 1.6 KHz
|
- FLOAT
|
Frequency
|
Floating point frequency that we will attempt to match
|
- VOID
|
Return
|
|
SetOutputMode
|
Sets the output mode of the PCA9685 to either open drain or push pull. Warning: LEDs with integrated zener diodes should only be driven in open drain mode.
|
- BOOL
|
Mode
|
0=OpenDrain, 1=Push/Pull
|
- VOID
|
Return
|
|
Sleep
|
Puts the module into Sleep mode
|
- VOID
|
Return
|
|
SetExternalClock
|
Sets EXTCLK pin to use the external clock
|
- BYTE
|
Prescale
|
External Clock Prescaler - Range: 3-255
|
- VOID
|
Return
|
|
SetAddress
|
Allows a different I2C address to be specified allowing one component to control multiple PCA9685 modules.
|
- BYTE
|
Address
|
Range: 0x40 - 0x7F
|
- VOID
|
Return
|
|
SetClockFrequency
|
Sets the current clock frequency, used for things like calculating the PWM frequency and Microsecond duty.
|
- ULONG
|
Clock
|
|
- VOID
|
Return
|
|
GetClockFrequency
|
Returns the current clock frequency
|
- ULONG
|
Return
|
|
WriteMicroseconds
|
Sets the PWM output of one of the PCA9685 pins based on the input microseconds, output is not precise
|
- BYTE
|
Output
|
One of the PWM output pins - Range: 0 to 15
|
- UINT
|
Microseconds
|
The number of Microseconds to turn the PWM output ON
|
- VOID
|
Return
|
|
SetPWM
|
Sets the PWM output of one of the PCA9685 pins
|
- BYTE
|
Output
|
One of the PWM output pins - Range: 0 to 15
|
- UINT
|
On
|
At what point in the 4096-part cycle to turn the PWM output ON
|
- UINT
|
Off
|
At what point in the 4096-part cycle to turn the PWM output OFF
|
- VOID
|
Return
|
|
Initialise
|
Sets up the I2C ready for communications to begin
|
- VOID
|
Return
|
|
WakeUp
|
Wakes the module from Sleep mode
|
- VOID
|
Return
|
|
SetPin
|
Sets pin without having to deal with on/off tick placement and properly handles a zero value as completely off and 4095 as completely on.
|
- BYTE
|
Output
|
One of the PWM output pins - Range: 0 to 15
|
- UINT
|
Duty
|
The number of ticks out of 4096 to be active
|
- BOOL
|
Invert
|
0=Normal, 1=Inverted
|
- VOID
|
Return
|
Property reference
|
Properties
|
|
Address
|
Module I2C Address. This setting can be overridden using the SetAddress component macro.
|
|
Output Mode
|
Sets the output mode of the PCA9685 to either open drain or push pull. Warning: LEDs with integrated zener diodes should only be driven in open drain mode. Can be overridden using the SetOutputMode component macro.
|
|
Clock Type
|
Configures the input clock source to the module.
|
|
Clock Frequency
|
Frequency of the module. Internal oscillator defaults to 250000000 or 25MHz but can actually be anywhere from 23 to 27MHz. External clock frequency can be specified here up to a max value of 50000000 or 50MHz. This setting can be overridden using the SetClockFrequency component macro.
|
|
Prescaler
|
External Clock Prescaler Range: 3 to 255
|
|
Target PWM Frequency
|
The ideal PWM frequency we would like to generate on the output pins. Servo motors require an output frequency around 50Hz. LEDs require a mugh higher output frequency to avoid visible flicker.
|
|
Actual PWM Frequency
|
The calculated actual PWM frequency available using the Clock Frequency and Prescaler
|
|
PWM Resolution
|
Number of microseconds the PWM output can resolve to
|
|
I2C Communications
|
|
Channel
|
Channel selection
|
|
Baud Select
|
Baud rate option selector
|
|
Baud Rate
|
Baud rate to be used
|
|
SDA
|
Pin used for SDA (data signal)
|
|
SCL
|
Pin used for SCL (clock signal)
|
|
Stop Delay
|
On older microcontroller devices there is a potential for the I2C hardware channel to lock up if there is not a 10ms delay between an I2C stop event and the next I2C start event. Most modern microcontrollers will not have a problem so this property can be disabled to speed up the I2C communications.
|
|
Simulation
|
|
Simulate Comms
|
|
==Macro reference==
|
Reset
|
Sends a reset command to the PCA9685 chip over I2C
|
- VOID
|
Return
|
|
SetPWMFrequency
|
Sets the PWM frequency for the entire chip, up to approx 1.6 KHz
|
- FLOAT
|
Frequency
|
Floating point frequency that we will attempt to match
|
- VOID
|
Return
|
|
SetOutputMode
|
Sets the output mode of the PCA9685 to either open drain or push pull. Warning: LEDs with integrated zener diodes should only be driven in open drain mode.
|
- BOOL
|
Mode
|
0=OpenDrain, 1=Push/Pull
|
- VOID
|
Return
|
|
Sleep
|
Puts the module into Sleep mode
|
- VOID
|
Return
|
|
SetExternalClock
|
Sets EXTCLK pin to use the external clock
|
- BYTE
|
Prescale
|
External Clock Prescaler - Range: 3-255
|
- VOID
|
Return
|
|
SetAddress
|
Allows a different I2C address to be specified allowing one component to control multiple PCA9685 modules.
|
- BYTE
|
Address
|
Range: 0x40 - 0x7F
|
- VOID
|
Return
|
|
SetClockFrequency
|
Sets the current clock frequency, used for things like calculating the PWM frequency and Microsecond duty.
|
- ULONG
|
Clock
|
|
- VOID
|
Return
|
|
GetClockFrequency
|
Returns the current clock frequency
|
- ULONG
|
Return
|
|
WriteMicroseconds
|
Sets the PWM output of one of the PCA9685 pins based on the input microseconds, output is not precise
|
- BYTE
|
Output
|
One of the PWM output pins - Range: 0 to 15
|
- UINT
|
Microseconds
|
The number of Microseconds to turn the PWM output ON
|
- VOID
|
Return
|
|
SetPWM
|
Sets the PWM output of one of the PCA9685 pins
|
- BYTE
|
Output
|
One of the PWM output pins - Range: 0 to 15
|
- UINT
|
On
|
At what point in the 4096-part cycle to turn the PWM output ON
|
- UINT
|
Off
|
At what point in the 4096-part cycle to turn the PWM output OFF
|
- VOID
|
Return
|
|
Initialise
|
Sets up the I2C ready for communications to begin
|
- VOID
|
Return
|
|
WakeUp
|
Wakes the module from Sleep mode
|
- VOID
|
Return
|
|
SetPin
|
Sets pin without having to deal with on/off tick placement and properly handles a zero value as completely off and 4095 as completely on.
|
- BYTE
|
Output
|
One of the PWM output pins - Range: 0 to 15
|
- UINT
|
Duty
|
The number of ticks out of 4096 to be active
|
- BOOL
|
Invert
|
0=Normal, 1=Inverted
|
- VOID
|
Return
|
Property reference
|
Properties
|
|
Address
|
Module I2C Address. This setting can be overridden using the SetAddress component macro.
|
|
Output Mode
|
Sets the output mode of the PCA9685 to either open drain or push pull. Warning: LEDs with integrated zener diodes should only be driven in open drain mode. Can be overridden using the SetOutputMode component macro.
|
|
Clock Type
|
Configures the input clock source to the module.
|
|
Clock Frequency
|
Frequency of the module. Internal oscillator defaults to 250000000 or 25MHz but can actually be anywhere from 23 to 27MHz. External clock frequency can be specified here up to a max value of 50000000 or 50MHz. This setting can be overridden using the SetClockFrequency component macro.
|
|
Prescaler
|
External Clock Prescaler Range: 3 to 255
|
|
Target PWM Frequency
|
The ideal PWM frequency we would like to generate on the output pins. Servo motors require an output frequency around 50Hz. LEDs require a mugh higher output frequency to avoid visible flicker.
|
|
Actual PWM Frequency
|
The calculated actual PWM frequency available using the Clock Frequency and Prescaler
|
|
PWM Resolution
|
Number of microseconds the PWM output can resolve to
|
|
I2C Communications
|
|
Channel
|
Channel selection
|
|
Baud Select
|
Baud rate option selector
|
|
Baud Rate
|
Baud rate to be used
|
|
SDA
|
Pin used for SDA (data signal)
|
|
SCL
|
Pin used for SCL (clock signal)
|
|
Stop Delay
|
On older microcontroller devices there is a potential for the I2C hardware channel to lock up if there is not a 10ms delay between an I2C stop event and the next I2C start event. Most modern microcontrollers will not have a problem so this property can be disabled to speed up the I2C communications.
|
|
Simulation
|
|
Simulate Comms
|
|