Component: API (RPI) (API Slave Devices): Difference between revisions
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 199: | Line 199: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ADCSample10''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ADCSample10''' | ||
|- | |- | ||
| Line 218: | Line 218: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ADCSample8''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ADCSample8''' | ||
|- | |- | ||
| Line 237: | Line 237: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CInitialise''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CInitialise''' | ||
|- | |- | ||
| Line 261: | Line 261: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CReceive''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CReceive''' | ||
|- | |- | ||
| Line 285: | Line 285: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CRestart''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CRestart''' | ||
|- | |- | ||
| Line 304: | Line 304: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CSend''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CSend''' | ||
|- | |- | ||
| Line 328: | Line 328: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CStart''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CStart''' | ||
|- | |- | ||
| Line 347: | Line 347: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CStop''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CStop''' | ||
|- | |- | ||
| Line 366: | Line 366: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CTransInit''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CTransInit''' | ||
|- | |- | ||
| Line 395: | Line 395: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CTransReceive''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CTransReceive''' | ||
|- | |- | ||
| Line 424: | Line 424: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CTransSend''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CTransSend''' | ||
|- | |- | ||
| Line 453: | Line 453: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''IOGetInputPin''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''IOGetInputPin''' | ||
|- | |- | ||
| Line 472: | Line 472: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''IOSetOutputPin''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''IOSetOutputPin''' | ||
|- | |- | ||
| Line 496: | Line 496: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | 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 510: | Line 510: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PWMDisable''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PWMDisable''' | ||
|- | |- | ||
| Line 529: | Line 529: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PWMEnable''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PWMEnable''' | ||
|- | |- | ||
| Line 548: | Line 548: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PWMSetDuty''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PWMSetDuty''' | ||
|- | |- | ||
| Line 572: | Line 572: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PWMSetPrescaler''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PWMSetPrescaler''' | ||
|- | |- | ||
| Line 601: | Line 601: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SPIInitialise''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SPIInitialise''' | ||
|- | |- | ||
| Line 620: | Line 620: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SPIPrescaler''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SPIPrescaler''' | ||
|- | |- | ||
| Line 644: | Line 644: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SPITransfer''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SPITransfer''' | ||
|- | |- | ||
| Line 668: | Line 668: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SPITransferTrans''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SPITransferTrans''' | ||
|- | |- | ||
| Line 702: | Line 702: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTBaud''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTBaud''' | ||
|- | |- | ||
| Line 726: | Line 726: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTCheckRX''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTCheckRX''' | ||
|- | |- | ||
| Line 745: | Line 745: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTInitialise''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTInitialise''' | ||
|- | |- | ||
| Line 764: | Line 764: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTReceive''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTReceive''' | ||
|- | |- | ||
| Line 783: | Line 783: | ||
{| class="mtx-class-macrotable wikitable" | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTSend''' | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTSend''' | ||
|- | |- | ||
Revision as of 14:17, 13 July 2026
| Author | Matrix TSL |
| Version | 2.0 |
| Category | API Slave Devices |
API (RPI) component
Connects to a Raspberry Pi running the API Firmware allowing the board to become a slave to the Flowcode Embedded simulation or Flowcode App Developer. Supports: Digital IO / I2C / SPI / PWM / UART See Flowcode Help Wiki for firmware.
Component Source Code
Please click here to download the component source project: FC_Comp_Source_RPI_API_Comp.fcfx
Please click here to view the component source code (Beta): FC_Comp_Source_RPI_API_Comp.fcfx
Detailed description
The App Developer (RaspberryPi) component allows an Raspberry Pi to be controlled from within the Flowcode simulation runtime.
To allow Flowcode to communicate and control the Raspberry Pi hardware the board must first be pre-programmed with dedicated firmware.
The firmware file and Flowcode source project can be downloaded from here.
More information about the workings of the firmware project can be found on the FiniteStateMachine page.
The IP Address to the Raspberry Pi hardware is selected via the SCADA_RPI component IP Address property.
When building the component into a App Developer project remember to expose the IP Address property to allow the end user to select the correct address for the hardware.
The console window can display data in two modes which is set via a component property.
- fixed statistics showing IO / ADC inputs / PWM
- scrolling log showing all commands and returns
Examples
Pin Mapping
Here is a table showing how the App Developer Slave digital pins are mapped on the device.
| App Developer Slave Digital Pin | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| Device Port Pin | G2 | G3 | G4 | G5 | G6 | G7 | G8 | G9 | G10 | G11 | G12 | G13 | G14 | G15 | G16 | G17 | G18 | G19 | G20 | G21 | G22 | G23 | G24 | G25 | G26 | G27 |
Here is a table showing how the App Developer Slave peripheral pins are mapped on the device.
| App Developer Slave Peripheral Pin | I2C SDA | I2C SCL | SPI MOSI | SPI MISO | SPI SCK | UART RX | UART TX | PWM 0 | PWM 1 |
| Device Port Pin | G2 | G3 | G10 | G9 | G11 | G15 | G14 | G12 | G13 |
Macro reference
ADCSample10
| ADCSample10 | |
| Reads the voltage present on an Alanog pin as an 10-bit value range 0-1023 | |
| ADCChannel | |
| Range: 0-12 | |
| Return | |
ADCSample8
| ADCSample8 | |
| Reads the voltage present on an Alanog pin as an 8-bit value range 0-255 | |
| ADCChannel | |
| Range: 0-12 | |
| Return | |
I2CInitialise
| I2CInitialise | |
| Initialsie the I2C module ready for communications | |
| Channel | |
| Channel Index: Range 0 - I2C Bus Count - 1 | |
| Baud | |
| 0=100KHz, 1=400KHz, 2=1MHz | |
| Return | |
I2CReceive
| I2CReceive | |
| Receive a byte using the I2C bus | |
| Channel | |
| Channel Index: Range 0 - I2C Bus Count - 1 | |
| Last | |
| Last byte to receive: Range 0-1 | |
| Return | |
I2CRestart
| I2CRestart | |
| Put the I2C Module into Restart mode | |
| Channel | |
| Channel Index: Range 0 - I2C Bus Count - 1 | |
| Return | |
I2CSend
| I2CSend | |
| Transmit a byte using the I2C bus | |
| Channel | |
| Channel Index: Range 0 - I2C Bus Count - 1 | |
| DataOut | |
| Return | |
I2CStart
| I2CStart | |
| Put the I2C Module into Start mode | |
| Channel | |
| Channel Index: Range 0 - I2C Bus Count - 1 | |
| Return | |
I2CStop
| I2CStop | |
| Put the I2C Module into Stop mode | |
| Channel | |
| Return | |
I2CTransInit
I2CTransReceive
I2CTransSend
IOGetInputPin
| IOGetInputPin | |
| Sets the selected digital pin to an input and reads the input state. | |
| Pin | |
| Range: 0-29 | |
| Return | |
IOSetOutputPin
| IOSetOutputPin | |
| Sets the selected digital pin to an output and assigns the output state. | |
| Pin | |
| Range: 0-29 | |
| State | |
| Range: 0-1 | |
| Return | |
Initialise
| Initialise | |
| Initialise the comms to the Arduino board ready for commands to be sent. | |
| Return | |
PWMDisable
| PWMDisable | |
| Disable a PWM output | |
| Channel | |
| Range: 0-1 | |
| Return | |
PWMEnable
| PWMEnable | |
| Enable a PWM output | |
| Channel | |
| Range: 0-1 | |
| Return | |
PWMSetDuty
| PWMSetDuty | |
| Sets the duty for the PWM output | |
| Channel | |
| Range: 0-5 | |
| Duty | |
| Return | |
PWMSetPrescaler
| PWMSetPrescaler | |
| Sets the prescaler for the PWM output | |
| Channel | |
| Prescaler | |
| Period | |
| Return | |
SPIInitialise
| SPIInitialise | |
| Initialsie the SPI module ready for communications | |
| Channel | |
| Channel Index: Range 0 - SPI Bus Count - 1 | |
| Return | |
SPIPrescaler
| SPIPrescaler | |
| Modify the speed of the SPI bus | |
| Channel | |
| Channel Index: Range 0 - SPI Bus Count - 1 | |
| Prescaler | |
| Range: 0-2 | |
| Return | |
SPITransfer
| SPITransfer | |
| Transfer a byte using the SPI bus | |
| Channel | |
| Channel Index: Range 0 - SPI Bus Count - 1 | |
| DataOut | |
| Return | |
SPITransferTrans
UARTBaud
UARTCheckRX
| UARTCheckRX | |
| Check to see if the UART module has received any data | |
| Channel | |
| Channel Index: Range 0 - UART Bus Count - 1 | |
| Return | |
UARTInitialise
| UARTInitialise | |
| Initialise the UART module ready for communications | |
| Channel | |
| Channel Index: Range 0 - UART Bus Count - 1 | |
| Return | |
UARTReceive
| UARTReceive | |
| Receives a data byte from the UART. Recommend calling the UARTCheckRx function first to ensure data is available. | |
| Channel | |
| Channel Index: Range 0 - UART Bus Count - 1 | |
| Return | |
UARTSend
| UARTSend | |
| Send a byte via the UART module | |
| Channel | |
| Channel Index: Range 0 - UART Bus Count - 1 | |
| Data | |
| Data Byte to send. Range: 0-255 | |
| Return | |