Jump to content

Component: PWM 16CH 12Bit (PCA9685) (General Output): Difference between revisions

From Flowcode Help
m Text replacement - "class="wikitable" style="width:60%; background-color:#FFFFFF;"" to "class="mtx-class-macrotable wikitable""
m Text replacement - "width="10%" align="center" style="background-color:#D8C9D8;" align="center"" to "width="10%" align="center" class="mtx-class-macrohead""
Line 94: Line 94:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetClockFrequency'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetClockFrequency'''
|-
|-
Line 108: Line 108:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
|-
|-
Line 122: Line 122:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Reset'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Reset'''
|-
|-
Line 136: Line 136:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetAddress'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetAddress'''
|-
|-
Line 155: Line 155:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetClockFrequency'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetClockFrequency'''
|-
|-
Line 174: Line 174:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetExternalClock'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetExternalClock'''
|-
|-
Line 193: Line 193:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetOutputMode'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetOutputMode'''
|-
|-
Line 212: Line 212:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetPWM'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetPWM'''
|-
|-
Line 241: Line 241:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetPWMFrequency'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetPWMFrequency'''
|-
|-
Line 260: Line 260:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetPin'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetPin'''
|-
|-
Line 289: Line 289:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Sleep'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Sleep'''
|-
|-
Line 303: Line 303:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''WakeUp'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''WakeUp'''
|-
|-
Line 317: Line 317:
{| class="mtx-class-macrotable wikitable"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''WriteMicroseconds'''
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''WriteMicroseconds'''
|-
|-

Revision as of 14:17, 13 July 2026

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

GetClockFrequency

GetClockFrequency
Returns the current clock frequency 
- ULONG Return


Initialise

Initialise
Sets up the I2C ready for communications to begin 
- VOID Return


Reset

Reset
Sends a reset command to the PCA9685 chip over I2C 
- VOID Return


SetAddress

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

SetClockFrequency
Sets the current clock frequency, used for things like calculating the PWM frequency and Microsecond duty. 
- ULONG Clock
 
- VOID Return


SetExternalClock

SetExternalClock
Sets EXTCLK pin to use the external clock 
- BYTE Prescale
External Clock Prescaler - Range: 3-255 
- VOID Return


SetOutputMode

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


SetPWM

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


SetPWMFrequency

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


SetPin

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


Sleep

Sleep
Puts the module into Sleep mode 
- VOID Return


WakeUp

WakeUp
Wakes the module from Sleep mode 
- VOID Return


WriteMicroseconds

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


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