Component: PWM 16CH 12Bit (PCA9685) (General Output): Difference between revisions
No edit summary |
No edit summary |
||
| Line 17: | Line 17: | ||
==Component Source Code== | ==Component Source Code== | ||
Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/ | Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_temp/PCA9685_16_Channel_PWM.fcfx FC_Comp_Source_temp/PCA9685_16_Channel_PWM.fcfx] | ||
Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/ | Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_temp/PCA9685_16_Channel_PWM.fcfx FC_Comp_Source_temp/PCA9685_16_Channel_PWM.fcfx] | ||
==Detailed description== | ==Detailed description== | ||
| Line 77: | Line 77: | ||
''<span style="color:red;">No additional examples</span>'' | ''<span style="color:red;">No additional examples</span>'' | ||
| Line 85: | Line 87: | ||
==Macro reference== | ==Macro reference== | ||
=== | ===GetClockFrequency=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetClockFrequency''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Returns the current clock frequency | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9- | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u32-icon.png]] - ULONG | ||
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
=== | ===Initialise=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise''' | ||
|- | |||
| colspan="2" | Sets up the I2C ready for communications to begin | |||
|- | |||
|- | |- | ||
| | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | |||
|} | |||
===Reset=== | |||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | |||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | |||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Reset''' | |||
|- | |- | ||
| | | colspan="2" | Sends a reset command to the PCA9685 chip over I2C | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
| Line 118: | Line 129: | ||
=== | ===SetAddress=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetAddress''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Allows a different I2C address to be specified allowing one component to control multiple PCA9685 modules. | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9- | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
| width="90%" | | | width="90%" | Address | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Range: 0x40 - 0x7F | ||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
| Line 137: | Line 148: | ||
=== | ===SetClockFrequency=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetClockFrequency''' | ||
|- | |||
| colspan="2" | Sets the current clock frequency, used for things like calculating the PWM frequency and Microsecond duty. | |||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u32-icon.png]] - ULONG | |||
| width="90%" | Clock | |||
|- | |||
| colspan="2" | | |||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
| Line 170: | Line 186: | ||
=== | ===SetOutputMode=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetOutputMode''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | 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. | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9- | | width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL | ||
| width="90%" | | | width="90%" | Mode | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | 0=OpenDrain, 1=Push/Pull | ||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
| Line 189: | Line 205: | ||
=== | ===SetPWM=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetPWM''' | ||
|- | |- | ||
| colspan="2" | Sets the | | colspan="2" | Sets the PWM output of one of the PCA9685 pins | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9- | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
| width="90%" | | | width="90%" | Output | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | One of the PWM output pins - Range: 0 to 15 | ||
|- | |- | ||
| width="10%" align="center | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT | ||
| width="90%" | | width="90%" | On | ||
|- | |- | ||
| | | colspan="2" | At what point in the 4096-part cycle to turn the PWM output ON | ||
|- | |- | ||
| | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT | ||
| width="90%" | Off | |||
|- | |- | ||
| colspan="2" | At what point in the 4096-part cycle to turn the PWM output OFF | |||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9- | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
=== | ===SetPWMFrequency=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetPWMFrequency''' | ||
|- | |- | ||
| colspan="2" | Sets the PWM | | colspan="2" | Sets the PWM frequency for the entire chip, up to approx 1.6 KHz | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9- | | width="10%" align="center" | [[File:Fc9-f32-icon.png]] - FLOAT | ||
| width="90%" | | | width="90%" | Frequency | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Floating point frequency that we will attempt to match | ||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
| Line 246: | Line 253: | ||
=== | ===SetPin=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetPin''' | ||
|- | |- | ||
| colspan="2" | Sets | | colspan="2" | 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. | ||
|- | |- | ||
|- | |- | ||
| Line 261: | Line 268: | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT | ||
| width="90%" | | | width="90%" | Duty | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | The number of ticks out of 4096 to be active | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9- | | width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL | ||
| width="90%" | | | width="90%" | Invert | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | 0=Normal, 1=Inverted | ||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
| Line 275: | Line 282: | ||
=== | ===Sleep=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Sleep''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Puts the module into Sleep mode | ||
|- | |- | ||
|- | |- | ||
| Line 303: | Line 310: | ||
=== | ===WriteMicroseconds=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | ''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''WriteMicroseconds''' | ||
|- | |- | ||
| colspan="2" | Sets | | colspan="2" | Sets the PWM output of one of the PCA9685 pins based on the input microseconds, output is not precise | ||
|- | |- | ||
|- | |- | ||
| Line 318: | Line 325: | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT | ||
| width="90%" | | | width="90%" | Microseconds | ||
|- | |- | ||
| colspan="2" | The number of | | colspan="2" | The number of Microseconds to turn the PWM output ON | ||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
Revision as of 12:02, 3 February 2023
| 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_temp/PCA9685_16_Channel_PWM.fcfx
Please click here to view the component source code (Beta): FC_Comp_Source_temp/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 | |
| Return | |
Initialise
| Initialise | |
| Sets up the I2C ready for communications to begin | |
| Return | |
Reset
| Reset | |
| Sends a reset command to the PCA9685 chip over I2C | |
| Return | |
SetAddress
| SetAddress | |
| Allows a different I2C address to be specified allowing one component to control multiple PCA9685 modules. | |
| Address | |
| Range: 0x40 - 0x7F | |
| Return | |
SetClockFrequency
| SetClockFrequency | |
| Sets the current clock frequency, used for things like calculating the PWM frequency and Microsecond duty. | |
| Clock | |
| Return | |
SetExternalClock
| SetExternalClock | |
| Sets EXTCLK pin to use the external clock | |
| Prescale | |
| External Clock Prescaler - Range: 3-255 | |
| Return | |
SetOutputMode
SetPWM
SetPWMFrequency
| SetPWMFrequency | |
| Sets the PWM frequency for the entire chip, up to approx 1.6 KHz | |
| Frequency | |
| Floating point frequency that we will attempt to match | |
| Return | |
SetPin
Sleep
| Sleep | |
| Puts the module into Sleep mode | |
| Return | |
WakeUp
| WakeUp | |
| Wakes the module from Sleep mode | |
| Return | |
WriteMicroseconds