| 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.
Detailed description
No detailed description exists yet for this component
Examples
No additional examples
Downloadable 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
|
| [[File:]] -
|
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.
|
| [[File:]] -
|
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
|
| [[File:]] -
|
Invert
|
| 0=Normal, 1=Inverted
|
- VOID
|
Return
|
|
DrawRectangle2D
|
| Draws a basic 2D rectangle onto the LEDs
|
- BYTE
|
X1
|
|
|
- BYTE
|
Y1
|
|
|
- BYTE
|
X2
|
|
|
- BYTE
|
Y2
|
|
|
- BYTE
|
DrawStyle
|
| Sets the draw style - 0=Soild, 1=Edge, 2=Corners
|
- BYTE
|
R
|
|
|
- BYTE
|
G
|
|
|
- BYTE
|
B
|
|
|
- VOID
|
Return
|
|
ShiftLEDs2D
|
| Shifts the contents of the display by the number of vertices specified ***Please Note that Wrap mode is currently unavailable***
|
| [[File:]] -
|
X
|
| Number of pixels to shift the display -1 to 1 / 0 = No Shift
|
| [[File:]] -
|
Y
|
| Number of pixels to shift the display -1 to 1 / 0 = No Shift
|
- BYTE
|
DataMode
|
| 0=ResetToZero, 1=WrapAroundDisplay, 2=Smear
|
- VOID
|
Return
|
|
GetLEDIndex3D
|
| Gets the index of a single LED in RAM as a 3D array.
|
- UINT
|
X
|
| LED Column to change the colour / Range: 0 to (LED Column - 1)
|
- UINT
|
Y
|
| LED Row to change the colour / Range: 0 to (LED Row - 1)
|
- UINT
|
Z
|
| LED Layer to change the colour / Range: 0 to (LED Layer - 1)
|
- UINT
|
Return
|
|
DrawCuboid3D
|
| Draws a basic 3D cuboid onto the LEDs
|
- BYTE
|
X1
|
| Start X pixel coordinate
|
- BYTE
|
Y1
|
| Start Y pixel coordinate
|
- BYTE
|
Z1
|
| Start Z pixel coordinate
|
- BYTE
|
X2
|
| End X pixel coordinate
|
- BYTE
|
Y2
|
| End Y pixel coordinate
|
- BYTE
|
Z2
|
| End Z pixel coordinate
|
- BYTE
|
DrawStyle
|
| Sets the draw style - 0=Soild, 1=Edge, 2=Corners
|
- BYTE
|
R
|
| Red Colour Channel
|
- BYTE
|
G
|
| Green Colour Channel
|
- BYTE
|
B
|
| White Colour Channel
|
- VOID
|
Return
|
|
Initialise
|
| Inisialises the RGB colour RAM to 0,0,0 = LED Off and clocks out the data to initialise all the LED ICs in the chain.
|
- VOID
|
Return
|
|
ShiftLEDs3D
|
| Shifts the contents of the display by the number of vertices specified ***Please Note that Wrap mode is currently unavailable***
|
| [[File:]] -
|
X
|
| Number of pixels to shift the display -1 to 1 / 0 = No Shift
|
| [[File:]] -
|
Y
|
| Number of pixels to shift the display -1 to 1 / 0 = No Shift
|
| [[File:]] -
|
Z
|
| Number of pixels to shift the display -1 to 1 / 0 = No Shift
|
- BYTE
|
DataMode
|
| 0=ResetToZero, 1=WrapAroundDisplay, 2=Smear
|
- VOID
|
Return
|
|
Initialise
|
| Sets up the data memory and draws the simulated LED cube on the panel.
|
- VOID
|
Return
|
|
Initialise
|
| Starts up the formula flowcode PWM for motor control and performs the wait for button press
|
- VOID
|
Return
|
|
Initialise
|
| The Init macro must be called once to initialise the Graphical LCD display before any other Graphical LCD component macros are called.
|
- VOID
|
Return
|
|
Initialise
|
| The Init macro must be called once to initialise the Graphical LCD display before any other Graphical LCD component macros are called.
|
- VOID
|
Return
|
|
Initialise
|
| The Init macro must be called once to initialise the Graphical LCD display before any other Graphical LCD component macros are called.
|
- VOID
|
Return
|
|
Initialise
|
| The Init macro must be called once to initialise the Graphical LCD display before any other Graphical LCD component macros are called.
|
- VOID
|
Return
|
|
Initialise
|
| Resets and initialises the Internet E-Block. It sets up the gateway address, subnet mask, device IP address and device MAC address as defined in the properties of the Flowcode component. This macro must be called before any other TCP_IP component macros
|
- VOID
|
Return
|
|
Initialise
|
| Resets and initialises the Internet E-Block. It sets up the gateway address, subnet mask, device IP address and device MAC address as defined in the properties of the Flowcode component. This macro must be called before any other TCP_IP component macros
|
- VOID
|
Return
|
|
Initialise
|
| Resets and initialises the Internet E-Block. It sets up the gateway address, subnet mask, device IP address and device MAC address as defined in the properties of the Flowcode component. This macro must be called before any other TCP_IP component macros
|
- VOID
|
Return
|
|
MODPMSHAPE
|
| Sets PM waveform shape to; 0 = SINE, 1 = SQUARE, 2 = RAMPUP, 3 = RAMPDN, 4 = TRIANG, 5 = NOISE, 6 = DC, 7 = SINC, 8 = EXPRISE, 9 = LOGRISE, 10 = ARB1, 11 = ARB2, 12 = ARB3, 13= ARB4.
|
- BYTE
|
Shape
|
| Sets PM waveform shape (1 = SINE, 2 = SQUARE, 3 = RAMPUP, 4 = RAMPDN, 5 = TRIANG, 6 = NOISE, 7 = DC, 8 = SINC, 9 = EXPRISE, 10 = LOGRISE, 11 = ARB1, 12 = ARB2, 13 = ARB3, 14= ARB4).
|
- VOID
|
Return
|
|
ARB4
|
| Loads the binary-data to an existing arbitrary waveform memory location ARB4.
|
- BYTE
|
Waveform
|
|
|
- VOID
|
Return
|
|
CLKSRRet
|
| Returns the clock source <INT> or <EXT>.
|
| [[File:]] -
|
Return
|
|
MODPMDEV
|
| Sets PM waveform deviation to <nrf> degrees. (Lower limit: -360° - Upper limit: 360°).
|
| [[File:]] -
|
Degrees
|
| Sets PM waveform deviation in degrees (-360 - 360).
|
- VOID
|
Return
|
|
MSTLOCK
|
| Sends signal to SLAVE generator to get synchronised
|
- VOID
|
Return
|
|
HILVL
|
| Sets the amplitude-high-level to <nrf> Volts. (Lower limit: -0.490 V - Upper limit: 5.000 V).
|
| [[File:]] -
|
HighLevel
|
| Sets the amplitude-high-level in Volts(V) (-0.490 V - 5.000 V).
|
- VOID
|
Return
|
|
ARB3
|
| Loads the binary-data to an existing arbitrary waveform memory location ARB3.
|
- UINT
|
Waveform
|
|
|
- VOID
|
Return
|
|
WAVE
|
| Sets the waveform type. 0 = SINE, 1 = SQUARE, 2 = RAMP, 3 = TRIANG, 4 = PULSE, 5 = NOISE, 6 = ARB
|
- BYTE
|
WaveType
|
| 0 = SINE, 1 = SQUARE, 2 = RAMP, 3 = TRIANG, 4 = PULSE, 5 = NOISE, 6 = ARB.
|
- VOID
|
Return
|
|
CALADJ
|
| Adjust the selected calibration value by <nrf> (Lower limit: -100 - Upper limit: 100).
|
| [[File:]] -
|
Calibrate
|
| Adjust the selected calibration value (-100 - 100).
|
- VOID
|
Return
|
|
STBRet
|
| Returns the value of the Status Byte Register in <nr1> numeric format.
|
- BYTE
|
Return
|
|
ARB2
|
| Loads the binary-data to an existing arbitrary waveform memory location ARB2.
|
- UINT
|
Waveform
|
|
|
- VOID
|
Return
|
|
EERRet
|
| Query and clear execution error number register.
|
- STRING
|
Return
|
|
MODFMSRC
|
| Sets FM waveform source to; 0 INT, 1 = EXT.
|
| [[File:]] -
|
Source
|
| Sets FM waveform source (0 = INT, 1 = EXT).
|
- VOID
|
Return
|
|
MODAMFREQ
|
| Sets AM waveform frequency to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 20kHz).
|
| [[File:]] -
|
Frequency
|
| Sets AM waveform frequency in Hertz(Hz) (1uHz - 20kHz).
|
- VOID
|
Return
|
|
ESE
|
| Sets the Standard Event Status Enable Register to the value of <nrf>.
|
- BYTE
|
Value
|
| Value of register 0-255
|
- VOID
|
Return
|
|
ARB1
|
| Loads the binary-data to an existing arbitrary waveform memory location ARB1.
|
- UINT
|
Waveform
|
| 16 Bit binary number for arbitrary waveform.
|
- VOID
|
Return
|
|
ARB4DEFRet
|
| Returns user specified waveform name, waveform pint interpolation state and waveform length of ARB4.
|
- STRING
|
Return
|
|
CLS
|
| Clears status byte register of the interface.
|
- VOID
|
Return
|
|
MSTRELOCK
|
| Resynchronises the two generators in MASTER-SLAVE mode.
|
- VOID
|
Return
|
|
NOISLVL
|
| Sets the output noise level to <nr1> %. (Lower limit: 0% - Upper limit: 50%)
|
- BYTE
|
Percent
|
| Sets the output noise level in percent. (0 - 50)
|
- VOID
|
Return
|
|
LOCKMODE
|
| Sets the synchronising mode to; 0 = MASTER, 1 = SLAVE, 2 = INDEP.
|
- BYTE
|
Mode
|
| Sets the synchronising mode (0 = MASTER, 1 = SLAVE, 2 = INDEP).
|
- VOID
|
Return
|
|
ADDRESSRet
|
| Returns the instruments address
|
| [[File:]] -
|
Return
|
|
MODPMSRC
|
| Sets PM waveform source to; 0 INT, 1 = EXT.
|
| [[File:]] -
|
Source
|
| Sets PM waveform source (0 = INT, 1 = EXT).
|
- VOID
|
Return
|
|
MODPWMSRC
|
| Sets PWM waveform source to; 0 = INT, 1 = EXT.
|
| [[File:]] -
|
Source
|
| Sets PWM waveform source (0 = INT, 1 = EXT).
|
- VOID
|
Return
|
|
MOD
|
| Sets modulation to; 0 = OFF, 1 = AM, 2 = FM, 3 = PM, 4 = FSK, 5 = PWM.
|
- BYTE
|
Modulation
|
| Sets modulation (0 = OFF, 1 = AM, 2 = FM, 3 = PM, 4 = FSK, 5 = PWM).
|
- VOID
|
Return
|
|
ISTRet
|
| Returns IST local message as defined by IEEE Std. 488.2. The syntax of the response is 0<rmt>, if the local message is false, or 1<rmt>, if the local message is true.
|
| [[File:]] -
|
Return
|
|
LRNRet
|
| Returns the complete setup of the instrument as a binary data block
|
| [[File:]] -
|
Return
|
|
OPCRet
|
| Query Operation Complete status. The response is always 1<rmt> and will be available immediately the command is executed because all commands are sequential.
|
| [[File:]] -
|
Return
|
|
SWPTYPE
|
| Sets the sweep type to; 0 = LINUP, 1 = LINDN, 2 = LINUPDN, 3 = LINDNUP, 4 = LOGUP, 5 = LOGDN, 6 = LOGUPDN, 7 = LOGDNUP.
|
- BYTE
|
Type
|
| Set the sweep type (0 = LINUP, 1 = LINDN, 2 = LINUPDN, 3 = LINDNUP, 4 = LOGUP, 5 = LOGDN, 6 = LOGUPDN, 7 = LOGDNUP).
|
- VOID
|
Return
|
|
PULSRANGE
|
| Sets PWM waveform source to <1>, <2> or <3>; 1 = 1, 2 = 2, 3 = 3.
|
- BYTE
|
Range
|
| Sets the pulse rise and fall range. (1, 2 or 3)
|
- VOID
|
Return
|
|
TSTRet
|
| The generator has no self test capability and the response is always 0 <rmt>.
|
| [[File:]] -
|
Return
|
|
BSTTRGPOL
|
| Sets the burst trigger slope to; 0 = POS, 1 = NEG.
|
| [[File:]] -
|
Slope
|
| Set the burst trigger slope (0 = POS, 1 = NEG).
|
- VOID
|
Return
|
|
ARB3Ret
|
| Returns the binary-data from an existing abbitrary wavefrom memory location.
|
- UINT
|
Return
|
|
BSTPHASE
|
| Sets the burst phase to <nrf> degrees. (Lower limit: -360 - Upper limit: 360)
|
| [[File:]] -
|
Degrees
|
| Sets the burst phase in degrees (-360 - 360)
|
- VOID
|
Return
|
|
IDNRet
|
| Returns the instrument identification. The IDN is saved to the variable passed from the function 'ReturnIDN'. The return parameter is TRUE when the IDN is successfully returned.
|
- STRING
|
ReturnIDN
|
|
|
- STRING
|
Return
|
|
SWPTRGPER
|
| Sets the sweep trigger period to <nrf> seconds
|
| [[File:]] -
|
Seconds
|
| Set the sweep trigger period in seconds.
|
- VOID
|
Return
|
|
PULSDLY
|
| Sets the waveform delay to <nrf> sec
|
| [[File:]] -
|
Sec
|
|
|
- VOID
|
Return
|
|
Initialise
|
| Opens the COM port ready for communications.
|
- 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
|
|
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.
|
|
Scope Traces
|
| Selects if the component pin connections are automatically generated on the data recorder window or not. Yes: Automatically add the component pins to a group on the data recorder which will reflect the sim data during simultion. No: Do not show the pin signals on the data recorder window.
|
|
Console Data
|
| Selects if the console data is automatically generated or not
|
|
API
|
| Specifies the API component on the panel to interact with to provide comms simulation.
|
|
Connections
|
|
Simulations
|
|
Simulate Comms
|
|
|