Component: Formula Flowcode (Robotics): Difference between revisions
No edit summary |
m Text replacement - "style="background-color:#EAE1EA;"" to "class="mtx-class-propfolder"" |
||
| (14 intermediate revisions by 2 users not shown) | |||
| Line 17: | Line 17: | ||
==Component Source Code== | ==Component Source Code== | ||
Please click here | Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_FormulaFlowcode.fcfx FC_Comp_Source_FormulaFlowcode.fcfx] | ||
Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_FormulaFlowcode.fcfx FC_Comp_Source_FormulaFlowcode.fcfx] | |||
==Detailed description== | ==Detailed description== | ||
| Line 28: | Line 40: | ||
==Examples== | ==Examples== | ||
| Line 52: | Line 74: | ||
[[File:Print3.jpg]] | [[File:Print3.jpg]] | ||
{| class="wikitable | |||
==Macro reference== | |||
===CheckIR=== | |||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''CheckIR''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Checks to see if a IR sensor is within the master threshold distance. | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
| width="90%" | | | width="90%" | Sensor | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | |||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9- | |||
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
{| class="wikitable | ===Forward=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''Forward''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Drives both motors of the formula flowcode forwards with the power specified. | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
| width="90%" | | | width="90%" | Power | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
| Line 95: | Line 124: | ||
{| class="wikitable | ===Initialise=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''Initialise''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Starts up the formula flowcode PWM for motor control and performs the wait for button press | ||
|- | |- | ||
|- | |- | ||
| Line 108: | Line 138: | ||
{| class="wikitable | ===LEDOff=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''LEDOff''' | ||
|- | |- | ||
| colspan="2" | Switches off a single LED on the front of the Formula Flowcode. | | colspan="2" | Switches off a single LED on the front of the Formula Flowcode. | ||
| Line 126: | Line 157: | ||
{| class="wikitable | ===LEDOn=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''LEDOn''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Switches on a single LED on the front of the Formula Flowcode. | ||
|- | |||
|- | |||
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | |||
| width="90%" | LED | |||
|- | |- | ||
| colspan="2" | | |||
|- | |- | ||
| 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'' | ||
|} | |} | ||
{| class="wikitable | ===PlayNote=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''PlayNote''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Outputs a single tone from the onboard speaker for the period specified | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
| width="90%" | | | width="90%" | Note | ||
|- | |||
| colspan="2" | | |||
|- | |||
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT | |||
| width="90%" | Delay_ms | |||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
|- | |- | ||
| 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'' | ||
|} | |} | ||
{| class="wikitable | ===ReadIRSensor=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ReadIRSensor''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Reads the analogue value from the specified IR distance sensor. | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
| width="90%" | | | width="90%" | Sensor | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9- | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT | ||
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
{| class="wikitable | ===ReadLDR=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ReadLDR''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Reads the current audio signal level from the on-board light sensor. | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-s16-icon.png]] - INT | |||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9- | |||
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
{| class="wikitable | ===ReadLineSensor=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ReadLineSensor''' | ||
|- | |- | ||
| colspan="2" | Returns the digital value from the line sensor specified. | | colspan="2" | Returns the digital value from the line sensor specified. | ||
| Line 211: | Line 252: | ||
{| class="wikitable | ===ReadMic=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ReadMic''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Reads the current audio signal level from the on-board microphone. | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-s16-icon.png]] - INT | |||
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9- | |||
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
{| class="wikitable | ===ReadSwitch=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ReadSwitch''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Reads the value of one of the switches from the front of the Formula Flowcode. | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
| width="90%" | | | width="90%" | Switch | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
| Line 247: | Line 285: | ||
{| class="wikitable | ===Reverse=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''Reverse''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Drives both motors of the formula flowcode backwards with the power specified. | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
| width="90%" | | | width="90%" | Power | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
|- | |- | ||
| 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'' | ||
|} | |} | ||
{| class="wikitable | ===SetMotors=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''SetMotors''' | ||
|- | |- | ||
| colspan="2" | Sets the speed and direction of the Formula Flowcode motors. | | colspan="2" | Sets the speed and direction of the Formula Flowcode motors. | ||
| Line 288: | Line 328: | ||
{| class="wikitable | ===SpinLeft=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''SpinLeft''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Spins the formula flowcode on the spot in an anticlockwise direction as seen from above. | ||
|- | |- | ||
|- | |- | ||
| Line 306: | Line 347: | ||
{| class="wikitable | ===SpinRight=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''SpinRight''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Spins the formula flowcode on the spot in a clockwise direction as seen from above. | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
| width="90%" | | | width="90%" | Power | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
| Line 324: | Line 366: | ||
{| class="wikitable | ===Stop=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''Stop''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Stops both motors | ||
|- | |- | ||
|- | |- | ||
| 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'' | ||
|} | |} | ||
{| class="wikitable | ===WaitForSwitch=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''WaitForSwitch''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | Waits for the specified switch to be pressed. | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
| width="90%" | | | width="90%" | Switch | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
| Line 355: | Line 399: | ||
{| class="wikitable" | ===WriteLEDs=== | ||
{| class="mtx-class-macrotable wikitable" | |||
|- | |||
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | |||
| width="90%" class="mtx-class-macrohead" | '''WriteLEDs''' | |||
|- | |- | ||
| | | colspan="2" | Allows control of all 8-LEDs on the front of the Formula Flowcode. | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | |||
| width="90%" | LED_Byte | |||
|- | |||
| 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 | ||
| width="90%" style="border-top: 2px solid #000;" | ''Return'' | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
|} | |} | ||
==Property reference== | ==Property reference== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-prop-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''Properties''' | ||
|- | |- | ||
|- | |- | ||
| Line 393: | Line 441: | ||
| colspan="2" | Motor balance, way of modifying the relative speeds of the motors to allow mismatched motors to work together better. | | colspan="2" | Motor balance, way of modifying the relative speeds of the motors to allow mismatched motors to work together better. | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-propfolder" | IR Thresholds (CheckIR macro) | ||
|- | |- | ||
|- | |- | ||
| Line 412: | Line 460: | ||
| colspan="2" | IR Threshold used with the CheckIR macro | | colspan="2" | IR Threshold used with the CheckIR macro | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-propfolder" | Simulation Parameters | ||
|- | |- | ||
|- | |- | ||
Latest revision as of 14:37, 13 July 2026
| Author | Matrix Ltd |
| Version | 2.0 |
| Category | Robotics |
Formula Flowcode component
A component to allow all the features of the Formula Flowcode robot to be investigated. Fully simulated component which can interact with simulated objects on the panel as well as control the real hardware.
Component Source Code
Please click here to download the component source project: FC_Comp_Source_FormulaFlowcode.fcfx
Please click here to view the component source code (Beta): FC_Comp_Source_FormulaFlowcode.fcfx
Detailed description
No detailed description exists yet for this component
Examples
Importing from v5
The Formula Flowcode component in Flowcode v6 has a new Initialise macro which will need to be added to your program before any other calls to the component are made.
Line Following
Line following example using the Formula Flowcode, works with objects on the simulation panel and on the real hardware.
FF-Line
Maze Solving
Wall following example using the Formula Flowcode, works with a randomly generated maze on the simulation panel and on the real hardware.
FF-Maze
Macro reference
CheckIR
| CheckIR | |
| Checks to see if a IR sensor is within the master threshold distance. | |
| Sensor | |
| Return | |
Forward
| Forward | |
| Drives both motors of the formula flowcode forwards with the power specified. | |
| Power | |
| Return | |
Initialise
| Initialise | |
| Starts up the formula flowcode PWM for motor control and performs the wait for button press | |
| Return | |
LEDOff
| LEDOff | |
| Switches off a single LED on the front of the Formula Flowcode. | |
| LED | |
| Return | |
LEDOn
| LEDOn | |
| Switches on a single LED on the front of the Formula Flowcode. | |
| LED | |
| Return | |
PlayNote
| PlayNote | |
| Outputs a single tone from the onboard speaker for the period specified | |
| Note | |
| Delay_ms | |
| Return | |
ReadIRSensor
| ReadIRSensor | |
| Reads the analogue value from the specified IR distance sensor. | |
| Sensor | |
| Return | |
ReadLDR
| ReadLDR | |
| Reads the current audio signal level from the on-board light sensor. | |
| Return | |
ReadLineSensor
| ReadLineSensor | |
| Returns the digital value from the line sensor specified. | |
| Sensor | |
| Return | |
ReadMic
| ReadMic | |
| Reads the current audio signal level from the on-board microphone. | |
| Return | |
ReadSwitch
| ReadSwitch | |
| Reads the value of one of the switches from the front of the Formula Flowcode. | |
| Switch | |
| Return | |
Reverse
| Reverse | |
| Drives both motors of the formula flowcode backwards with the power specified. | |
| Power | |
| Return | |
SetMotors
| SetMotors | |
| Sets the speed and direction of the Formula Flowcode motors. | |
| Left_Power | |
| Valid Range = -255 to 255 | |
| Right_Power | |
| Valid Range = -255 to 255 | |
| Return | |
SpinLeft
| SpinLeft | |
| Spins the formula flowcode on the spot in an anticlockwise direction as seen from above. | |
| Power | |
| Return | |
SpinRight
| SpinRight | |
| Spins the formula flowcode on the spot in a clockwise direction as seen from above. | |
| Power | |
| Return | |
Stop
| Stop | |
| Stops both motors | |
| Return | |
WaitForSwitch
| WaitForSwitch | |
| Waits for the specified switch to be pressed. | |
| Switch | |
| Return | |
WriteLEDs
| WriteLEDs | |
| Allows control of all 8-LEDs on the front of the Formula Flowcode. | |
| LED_Byte | |
| Return | |