Difference between revisions of "Component: Robot Arm AllCode SIM (AllCode)"

From Flowcode Help
Jump to navigationJump to search
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/FC_Comp_Source_RA_Simulation_Source.fcfx FC_Comp_Source_RA_Simulation_Source.fcfx]
+
Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_temp/RA_Simulation_Source.fcfx FC_Comp_Source_temp/RA_Simulation_Source.fcfx]
  
Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_RA_Simulation_Source.fcfx FC_Comp_Source_RA_Simulation_Source.fcfx]
+
Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_temp/RA_Simulation_Source.fcfx FC_Comp_Source_temp/RA_Simulation_Source.fcfx]
  
 
==Detailed description==
 
==Detailed description==
Line 66: Line 66:
  
 
{{Fcfile|Industrial_Tanks.fcsx|Industrial Tanks}}
 
{{Fcfile|Industrial_Tanks.fcsx|Industrial Tanks}}
 +
 +
  
  
Line 73: Line 75:
 
==Macro reference==
 
==Macro reference==
  
===LEDOn===
+
===Beep===
 
{| 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;" | '''LEDOn'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Beep'''
 
|-
 
|-
| colspan="2" | Switches on a single LED, LA0-LA7 
+
| colspan="2" | Allows the beeper to output a warning 
 
|-
 
|-
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Index
+
| width="90%" | Iterations
 +
|-
 +
| colspan="2" |  
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | OnDelay
 +
|-
 +
| colspan="2" | Delay in ms 
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | OffDelay
 
|-
 
|-
| colspan="2" | 0=LA0, 1=LA1, 2=LA2, 3=LA3, 4=LA4, 5=LA5, 6=LA6, 7=LA7 
+
| colspan="2" | Delay in ms 
 
|-
 
|-
 
| 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 92: Line 104:
  
  
===StoreCoords===
+
===GotoPosition===
 
{| 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;" | '''StoreCoords'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GotoPosition'''
 
|-
 
|-
| colspan="2" | Stores the provided coordinates as a position the ARM can recall. 
+
| colspan="2" | Recalls a previously saved position for the ARMs 5 axis. 
 
|-
 
|-
 
|-
 
|-
Line 106: Line 118:
 
| colspan="2" | Save Index - Range 0-29 
 
| colspan="2" | Save Index - Range 0-29 
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" | Position0
+
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
 +
 
 +
 
 +
===GripperClose===
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
| colspan="2" | Range: 0-180 
+
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GripperClose'''
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| colspan="2" | Fully closes the gripper at the end of the arm ready to pick something up. Closes to a defined pressure using the built in pressure sensor. Returns 0 if nothing detected in the gripper Returns 1 if a valid object is detected 
| width="90%" | Position1
 
 
|-
 
|-
| colspan="2" | Range: 0-180 
 
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Position2
+
| width="90%" | Pressure
 
|-
 
|-
| colspan="2" | Range: 0-180 
+
| colspan="2" | Range 1 - 100, Default Pressure = 20 
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Position3
+
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
 +
 
 +
 
 +
===GripperOpen===
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
| colspan="2" | Range: 0-180 
+
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GripperOpen'''
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| colspan="2" | Fully opens the gripper at the end of the arm ready to pick something up. 
| width="90%" | Position4
 
 
|-
 
|-
| colspan="2" | Range: 0-180 
 
 
|-
 
|-
 
| 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 136: Line 156:
  
  
===LCDClearLine===
+
===LCDClear===
 
{| 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;" | '''LCDClearLine'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LCDClear'''
|-
 
| colspan="2" | Clears a single line on the display and then moves the cursor to the start of the line to allow you to start populating the line with data. 
 
 
|-
 
|-
 +
| colspan="2" | Clears the entire contents of the display. 
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | Line
 
|-
 
| colspan="2" | The line to clear, zero being the first (top) line of the display 
 
 
|-
 
|-
 
| 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 155: Line 170:
  
  
===LEDOff===
+
===LCDClearLine===
 
{| 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;" | '''LEDOff'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LCDClearLine'''
 
|-
 
|-
| colspan="2" | Switches off a single LED, LA0-LA7 
+
| colspan="2" | Clears a single line on the display and then moves the cursor to the start of the line to allow you to start populating the line with data. 
 
|-
 
|-
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Index
+
| width="90%" | Line
 
|-
 
|-
| colspan="2" | 0=LA0, 1=LA1, 2=LA2, 3=LA3, 4=LA4, 5=LA5, 6=LA6, 7=LA7 
+
| colspan="2" | The line to clear, zero being the first (top) line of the display 
 
|-
 
|-
 
| 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 174: Line 189:
  
  
===SetMovementSpeed===
+
===LCDCursor===
 
{| 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;" | '''SetMovementSpeed'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LCDCursor'''
 +
|-
 +
| colspan="2" | Moves the cursor on the LCD Display 
 +
|-
 
|-
 
|-
| colspan="2" | Controls the speed of the robot movement 
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | X
 
|-
 
|-
 +
| colspan="2" | Set the cursor position in the X plane, 0 is the left most cell (0-15) 
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | MovementSpeed
+
| width="90%" | Y
 
|-
 
|-
| colspan="2" | 1=Normal Speed (Default), 2=DoubleSpeed 
+
| colspan="2" | Set the cursor position in the Y plane, 0 is the top most cell (0-1) 
 
|-
 
|-
 
| 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 193: Line 213:
  
  
===LEDWrite===
+
===LCDPrintNum===
 
{| 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;" | '''LEDWrite'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LCDPrintNum'''
 
|-
 
|-
| colspan="2" | Allows a value to be sent to control all eight LEDs LA0-LA7 at once 
+
| colspan="2" | Will allow you to print a number. This is limited to a signed-INT, -32768 to 32767 
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-s16-icon.png]] - INT
| width="90%" | Value
+
| width="90%" | Number
 
|-
 
|-
| colspan="2" | (0-63) 0b000000 
+
| colspan="2" | Enter the number or variable to print to the LCD 
 
|-
 
|-
 
| 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 212: Line 232:
  
  
===LinearInterpolation===
+
===LCDPrintStr===
 
{| 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;" | '''LinearInterpolation'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LCDPrintStr'''
 
|-
 
|-
| colspan="2" | Moves the robot to the new position so that all axis arrive at the same time. 
+
| colspan="2" | Breaks down a string of text and sends it to the LCD via the private RawSend(byte, mask) macro 
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
| width="90%" | pos0
+
| width="90%" | PrintString
 
|-
 
|-
| colspan="2" |  
+
| colspan="2" | Enter the text or variable to print to the LCD 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | pos1
 
|-
 
| colspan="2" |  
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | pos2
 
|-
 
| colspan="2" |  
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | pos3
 
|-
 
| colspan="2" |  
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | pos4
 
|-
 
| 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 251: Line 251:
  
  
===GripperOpen===
+
===LEDOff===
 
{| 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;" | '''GripperOpen'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LEDOff'''
 +
|-
 +
| colspan="2" | Switches off a single LED, LA0-LA7 
 +
|-
 
|-
 
|-
| colspan="2" | Fully opens the gripper at the end of the arm ready to pick something up. 
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Index
 
|-
 
|-
 +
| colspan="2" | 0=LA0, 1=LA1, 2=LA2, 3=LA3, 4=LA4, 5=LA5, 6=LA6, 7=LA7 
 
|-
 
|-
 
| 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 265: Line 270:
  
  
===ReadSwitch===
+
===LEDOn===
 
{| 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;" | '''ReadSwitch'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LEDOn'''
 
|-
 
|-
| colspan="2" | Read the value of a single switch.  Returns the value as a byte 
+
| colspan="2" | Switches on a single LED, LA0-LA7 
 
|-
 
|-
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | index
+
| width="90%" | Index
 
|-
 
|-
| colspan="2" | 0=SA0, 1=SA1, 2=SA2, 3=SA3, 4=SA4, 5=SA5, 6=SA6, 7=SA7 
+
| colspan="2" | 0=LA0, 1=LA1, 2=LA2, 3=LA3, 4=LA4, 5=LA5, 6=LA6, 7=LA7 
 
|-
 
|-
| 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-void-icon.png]] - VOID
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
===LCDPrintStr===
+
===LEDWrite===
 
{| 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;" | '''LCDPrintStr'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LEDWrite'''
 
|-
 
|-
| colspan="2" | Breaks down a string of text and sends it to the LCD via the private RawSend(byte, mask) macro 
+
| colspan="2" | Allows a value to be sent to control all eight LEDs LA0-LA7 at once 
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | PrintString
+
| width="90%" | Value
 
|-
 
|-
| colspan="2" | Enter the text or variable to print to the LCD 
+
| colspan="2" | (0-63) 0b000000 
 
|-
 
|-
 
| 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 303: Line 308:
  
  
===SetAllServos===
+
===LinearInterpolation===
 
{| 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;" | '''SetAllServos'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LinearInterpolation'''
 
|-
 
|-
| colspan="2" | Move all the servo positions between 0-180 Deg 
+
| colspan="2" | Moves the robot to the new position so that all axis arrive at the same time. 
 
|-
 
|-
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Servo0_Base
+
| width="90%" | pos0
 
|-
 
|-
| colspan="2" | Position of servo0 in degrees (0-180) 
+
| colspan="2" |  
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Servo1_Shoulder
+
| width="90%" | pos1
 
|-
 
|-
| colspan="2" | Position of servo1 in degrees (0-180) 
+
| colspan="2" |  
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Servo2_Elbow
+
| width="90%" | pos2
 
|-
 
|-
| colspan="2" | Position of servo2 in degrees (0-180) 
+
| colspan="2" |  
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Servo3_Wrist
+
| width="90%" | pos3
 
|-
 
|-
| colspan="2" | Position of servo3 in degrees (0-180) 
+
| colspan="2" |  
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Servo4_WristRotate
+
| width="90%" | pos4
 
|-
 
|-
| colspan="2" | Position of servo4 in degrees (0-180) 
+
| 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 342: Line 347:
  
  
===Park===
+
===MotorsMoving===
 
{| 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;" | '''Park'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''MotorsMoving'''
 
|-
 
|-
| colspan="2" | Parks the Robot ARM and switches off the servo motors 
+
| colspan="2" | Checks to see if any of the motors are still moving. 
 
|-
 
|-
 
|-
 
|-
| 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-u8-icon.png]] - BYTE
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
===StorePosition===
+
===Park===
 
{| 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;" | '''StorePosition'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Park'''
 
|-
 
|-
| colspan="2" | Stores the current position of the ARMs 5 axis. 
+
| colspan="2" | Parks the Robot ARM and switches off the servo motors 
 
|-
 
|-
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | Index
 
|-
 
| colspan="2" | Save Index - Range 0-29 
 
 
|-
 
|-
 
| 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 389: Line 389:
  
  
===GotoPosition===
+
===ReadSwitch===
 
{| 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;" | '''GotoPosition'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadSwitch'''
 
|-
 
|-
| colspan="2" | Recalls a previously saved position for the ARMs 5 axis. 
+
| colspan="2" | Read the value of a single switch.  Returns the value as a byte 
 
|-
 
|-
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Index
+
| width="90%" | index
 
|-
 
|-
| colspan="2" | Save Index - Range 0-29 
+
| colspan="2" | 0=SA0, 1=SA1, 2=SA2, 3=SA3, 4=SA4, 5=SA5, 6=SA6, 7=SA7 
 
|-
 
|-
| 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-u8-icon.png]] - BYTE
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
===MotorsMoving===
+
===SetAllServos===
 
{| 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;" | '''MotorsMoving'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetAllServos'''
 
|-
 
|-
| colspan="2" | Checks to see if any of the motors are still moving. 
+
| colspan="2" | Move all the servo positions between 0-180 Deg 
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Servo0_Base
|}
 
 
 
 
 
===Beep===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Position of servo0 in degrees (0-180) 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Beep'''
 
 
|-
 
|-
| colspan="2" | Allows the beeper to output a warning 
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Servo1_Shoulder
 
|-
 
|-
 +
| colspan="2" | Position of servo1 in degrees (0-180) 
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Iterations
+
| width="90%" | Servo2_Elbow
 
|-
 
|-
| colspan="2" |  
+
| colspan="2" | Position of servo2 in degrees (0-180) 
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | OnDelay
+
| width="90%" | Servo3_Wrist
 
|-
 
|-
| colspan="2" | Delay in ms 
+
| colspan="2" | Position of servo3 in degrees (0-180) 
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | OffDelay
+
| width="90%" | Servo4_WristRotate
 
|-
 
|-
| colspan="2" | Delay in ms 
+
| colspan="2" | Position of servo4 in degrees (0-180) 
 
|-
 
|-
 
| 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 451: Line 447:
  
  
===SetTrim===
+
===SetMovementSpeed===
 
{| 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;" | '''SetTrim'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetMovementSpeed'''
 
|-
 
|-
| colspan="2" | Allows minor adjustment on the 5 axis servo motors 
+
| colspan="2" | Controls the speed of the robot movement 
 
|-
 
|-
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Index
+
| width="90%" | MovementSpeed
 
|-
 
|-
| colspan="2" | Motor Index Range 0-4 
+
| colspan="2" | 1=Normal Speed (Default), 2=DoubleSpeed 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | Trim
 
|-
 
| colspan="2" | Amount of Trim Range 0-255, Default Value 128 
 
 
|-
 
|-
 
| 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 499: Line 490:
  
  
===GripperClose===
+
===SetTrim===
 
{| 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;" | '''GripperClose'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetTrim'''
 +
|-
 +
| colspan="2" | Allows minor adjustment on the 5 axis servo motors 
 +
|-
 
|-
 
|-
| colspan="2" | Fully closes the gripper at the end of the arm ready to pick something up. Closes to a defined pressure using the built in pressure sensor. Returns 0 if nothing detected in the gripper Returns 1 if a valid object is detected 
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Index
 
|-
 
|-
 +
| colspan="2" | Motor Index Range 0-4 
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Pressure
+
| width="90%" | Trim
 
|-
 
|-
| colspan="2" | Range 1 - 100, Default Pressure = 20 
+
| colspan="2" | Amount of Trim Range 0-255, Default Value 128 
 
|-
 
|-
| 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-void-icon.png]] - VOID
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
===LCDCursor===
+
===StoreCoords===
 
{| 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;" | '''LCDCursor'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''StoreCoords'''
 +
|-
 +
| colspan="2" | Stores the provided coordinates as a position the ARM can recall. 
 +
|-
 
|-
 
|-
| colspan="2" | Moves the cursor on the LCD Display 
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Index
 
|-
 
|-
 +
| colspan="2" | Save Index - Range 0-29 
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | X
+
| width="90%" | Position0
 
|-
 
|-
| colspan="2" | Set the cursor position in the X plane, 0 is the left most cell (0-15) 
+
| colspan="2" | Range: 0-180 
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Y
+
| width="90%" | Position1
 
|-
 
|-
| colspan="2" | Set the cursor position in the Y plane, 0 is the top most cell (0-1) 
+
| colspan="2" | Range: 0-180 
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Position2
|}
 
 
 
 
 
===LCDPrintNum===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Range: 0-180 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LCDPrintNum'''
 
 
|-
 
|-
| colspan="2" | Will allow you to print a number. This is limited to a signed-INT, -32768 to 32767 
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Position3
 
|-
 
|-
 +
| colspan="2" | Range: 0-180 
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-s16-icon.png]] - INT
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Number
+
| width="90%" | Position4
 
|-
 
|-
| colspan="2" | Enter the number or variable to print to the LCD 
+
| colspan="2" | Range: 0-180 
 
|-
 
|-
 
| 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 561: Line 558:
  
  
===LCDClear===
+
===StorePosition===
 
{| 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;" | '''LCDClear'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''StorePosition'''
 +
|-
 +
| colspan="2" | Stores the current position of the ARMs 5 axis. 
 +
|-
 
|-
 
|-
| colspan="2" | Clears the entire contents of the display. 
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Index
 
|-
 
|-
 +
| colspan="2" | Save Index - Range 0-29 
 
|-
 
|-
 
| 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 AllCode


Robot Arm AllCode SIM component

Matrix 5-axis Robot Arm with Gripper. Compatible with the Matrix Robot ARM Training Curriculum and Hardware. Features gripper pressure sensor, light sensor, colour sensor, Potentiometer, Magnetic sensor.

Component Source Code

Please click here to download the component source project: FC_Comp_Source_temp/RA_Simulation_Source.fcfx

Please click here to view the component source code (Beta): FC_Comp_Source_temp/RA_Simulation_Source.fcfx

Detailed description

No detailed description exists yet for this component

Examples

Industrial Tanks

A simple example showing the hoppers, valves and pipes working together. Each tank automatically empties in turn.

FC6 Icon.png Industrial Tanks




Macro reference

Beep

Fc9-comp-macro.png Beep
Allows the beeper to output a warning 
Fc9-u8-icon.png - BYTE Iterations
 
Fc9-u16-icon.png - UINT OnDelay
Delay in ms 
Fc9-u16-icon.png - UINT OffDelay
Delay in ms 
Fc9-void-icon.png - VOID Return


GotoPosition

Fc9-comp-macro.png GotoPosition
Recalls a previously saved position for the ARMs 5 axis. 
Fc9-u8-icon.png - BYTE Index
Save Index - Range 0-29 
Fc9-void-icon.png - VOID Return


GripperClose

Fc9-comp-macro.png GripperClose
Fully closes the gripper at the end of the arm ready to pick something up. Closes to a defined pressure using the built in pressure sensor. Returns 0 if nothing detected in the gripper Returns 1 if a valid object is detected 
Fc9-u8-icon.png - BYTE Pressure
Range 1 - 100, Default Pressure = 20 
Fc9-u8-icon.png - BYTE Return


GripperOpen

Fc9-comp-macro.png GripperOpen
Fully opens the gripper at the end of the arm ready to pick something up. 
Fc9-void-icon.png - VOID Return


LCDClear

Fc9-comp-macro.png LCDClear
Clears the entire contents of the display. 
Fc9-void-icon.png - VOID Return


LCDClearLine

Fc9-comp-macro.png LCDClearLine
Clears a single line on the display and then moves the cursor to the start of the line to allow you to start populating the line with data. 
Fc9-u8-icon.png - BYTE Line
The line to clear, zero being the first (top) line of the display 
Fc9-void-icon.png - VOID Return


LCDCursor

Fc9-comp-macro.png LCDCursor
Moves the cursor on the LCD Display 
Fc9-u8-icon.png - BYTE X
Set the cursor position in the X plane, 0 is the left most cell (0-15) 
Fc9-u8-icon.png - BYTE Y
Set the cursor position in the Y plane, 0 is the top most cell (0-1) 
Fc9-void-icon.png - VOID Return


LCDPrintNum

Fc9-comp-macro.png LCDPrintNum
Will allow you to print a number. This is limited to a signed-INT, -32768 to 32767 
Fc9-s16-icon.png - INT Number
Enter the number or variable to print to the LCD 
Fc9-void-icon.png - VOID Return


LCDPrintStr

Fc9-comp-macro.png LCDPrintStr
Breaks down a string of text and sends it to the LCD via the private RawSend(byte, mask) macro 
Fc9-string-icon.png - STRING PrintString
Enter the text or variable to print to the LCD 
Fc9-void-icon.png - VOID Return


LEDOff

Fc9-comp-macro.png LEDOff
Switches off a single LED, LA0-LA7 
Fc9-u8-icon.png - BYTE Index
0=LA0, 1=LA1, 2=LA2, 3=LA3, 4=LA4, 5=LA5, 6=LA6, 7=LA7 
Fc9-void-icon.png - VOID Return


LEDOn

Fc9-comp-macro.png LEDOn
Switches on a single LED, LA0-LA7 
Fc9-u8-icon.png - BYTE Index
0=LA0, 1=LA1, 2=LA2, 3=LA3, 4=LA4, 5=LA5, 6=LA6, 7=LA7 
Fc9-void-icon.png - VOID Return


LEDWrite

Fc9-comp-macro.png LEDWrite
Allows a value to be sent to control all eight LEDs LA0-LA7 at once 
Fc9-u8-icon.png - BYTE Value
(0-63) 0b000000 
Fc9-void-icon.png - VOID Return


LinearInterpolation

Fc9-comp-macro.png LinearInterpolation
Moves the robot to the new position so that all axis arrive at the same time. 
Fc9-u8-icon.png - BYTE pos0
 
Fc9-u8-icon.png - BYTE pos1
 
Fc9-u8-icon.png - BYTE pos2
 
Fc9-u8-icon.png - BYTE pos3
 
Fc9-u8-icon.png - BYTE pos4
 
Fc9-void-icon.png - VOID Return


MotorsMoving

Fc9-comp-macro.png MotorsMoving
Checks to see if any of the motors are still moving. 
Fc9-u8-icon.png - BYTE Return


Park

Fc9-comp-macro.png Park
Parks the Robot ARM and switches off the servo motors 
Fc9-void-icon.png - VOID Return


ReadPressure

Fc9-comp-macro.png ReadPressure
Read the value of the pressure sensor on the ARM gripper. Returns the value as a byte 
Fc9-u8-icon.png - BYTE Return


ReadSwitch

Fc9-comp-macro.png ReadSwitch
Read the value of a single switch. Returns the value as a byte 
Fc9-u8-icon.png - BYTE index
0=SA0, 1=SA1, 2=SA2, 3=SA3, 4=SA4, 5=SA5, 6=SA6, 7=SA7 
Fc9-u8-icon.png - BYTE Return


SetAllServos

Fc9-comp-macro.png SetAllServos
Move all the servo positions between 0-180 Deg 
Fc9-u8-icon.png - BYTE Servo0_Base
Position of servo0 in degrees (0-180) 
Fc9-u8-icon.png - BYTE Servo1_Shoulder
Position of servo1 in degrees (0-180) 
Fc9-u8-icon.png - BYTE Servo2_Elbow
Position of servo2 in degrees (0-180) 
Fc9-u8-icon.png - BYTE Servo3_Wrist
Position of servo3 in degrees (0-180) 
Fc9-u8-icon.png - BYTE Servo4_WristRotate
Position of servo4 in degrees (0-180) 
Fc9-void-icon.png - VOID Return


SetMovementSpeed

Fc9-comp-macro.png SetMovementSpeed
Controls the speed of the robot movement 
Fc9-u8-icon.png - BYTE MovementSpeed
1=Normal Speed (Default), 2=DoubleSpeed 
Fc9-void-icon.png - VOID Return


SetServo

Fc9-comp-macro.png SetServo
Move the specified servo motor position between 0-180 Deg 
Fc9-u8-icon.png - BYTE Index
Range 0-4 : 0=Base, 1=Shoulder, 2=Elbow, 3=Wrist, 4=WristRotate 
Fc9-u8-icon.png - BYTE Position
Position of servo in degrees (0-180) 
Fc9-void-icon.png - VOID Return


SetTrim

Fc9-comp-macro.png SetTrim
Allows minor adjustment on the 5 axis servo motors 
Fc9-u8-icon.png - BYTE Index
Motor Index Range 0-4 
Fc9-u8-icon.png - BYTE Trim
Amount of Trim Range 0-255, Default Value 128 
Fc9-void-icon.png - VOID Return


StoreCoords

Fc9-comp-macro.png StoreCoords
Stores the provided coordinates as a position the ARM can recall. 
Fc9-u8-icon.png - BYTE Index
Save Index - Range 0-29 
Fc9-u8-icon.png - BYTE Position0
Range: 0-180 
Fc9-u8-icon.png - BYTE Position1
Range: 0-180 
Fc9-u8-icon.png - BYTE Position2
Range: 0-180 
Fc9-u8-icon.png - BYTE Position3
Range: 0-180 
Fc9-u8-icon.png - BYTE Position4
Range: 0-180 
Fc9-void-icon.png - VOID Return


StorePosition

Fc9-comp-macro.png StorePosition
Stores the current position of the ARMs 5 axis. 
Fc9-u8-icon.png - BYTE Index
Save Index - Range 0-29 
Fc9-void-icon.png - VOID Return



Property reference

Fc9-prop-icon.png Properties
Fc9-type-16-icon.png Starting Conditions