Component: Formula AllCode (RB4420) (Robotics): Difference between revisions
Appearance
No edit summary |
m Text replacement - "style="background-color:#EAE1EA;"" to "class="mtx-class-propfolder"" |
||
| (12 intermediate revisions by 3 users not shown) | |||
| Line 14: | Line 14: | ||
==Formula AllCode component== | ==Formula AllCode component== | ||
A component to allow all the features of the Formula AllCode robot to be investigated. Fully simulated component which can interact with simulated objects on the panel as well as control the real hardware. | A component to allow all the features of the Formula AllCode robot to be investigated. Fully simulated component which can interact with simulated objects on the panel as well as control the real hardware. | ||
==Detailed description== | ==Detailed description== | ||
| Line 37: | Line 31: | ||
==Examples== | ==Examples== | ||
===Line Following=== | |||
Line following example using the Formula AllCode, works with objects on the simulation panel and on the real hardware. | |||
{{Fcfile|FA-Line.fcfx|FA-Line}} | |||
[[File:FALine.jpg]] | |||
===Simulation with the API component=== | |||
An example showing how to use the API component to drive the robot in simulation. | |||
{{Fcfile|FA_API_Sim_Demo.fcfx|FA API Sim Demo}} | |||
| Line 60: | Line 51: | ||
===AudioAddToBuffer=== | ===AudioAddToBuffer=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''AudioAddToBuffer''' | ||
|- | |- | ||
| colspan="2" | Writes a value to the 16-bit audio output buffer. | | colspan="2" | Writes a value to the 16-bit audio output buffer. | ||
| Line 79: | Line 70: | ||
===AudioQueueLength=== | ===AudioQueueLength=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''AudioQueueLength''' | ||
|- | |- | ||
| colspan="2" | Retreives the current length of valid data within the audio queue | | colspan="2" | Retreives the current length of valid data within the audio queue | ||
| Line 93: | Line 84: | ||
===AudioReadFromBuffer=== | ===AudioReadFromBuffer=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''AudioReadFromBuffer''' | ||
|- | |- | ||
| colspan="2" | Allows the audio buffer to be used for other streaming data such as recording the mic. | | colspan="2" | Allows the audio buffer to be used for other streaming data such as recording the mic. | ||
| Line 107: | Line 98: | ||
===AudioStreamControl=== | ===AudioStreamControl=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''AudioStreamControl''' | ||
|- | |- | ||
| colspan="2" | Allows control of the audio output functionality via the onboard speaker. Data is loaded into the audio output buffer using the AddToBuffer function. | | colspan="2" | Allows control of the audio output functionality via the onboard speaker. Data is loaded into the audio output buffer using the AddToBuffer function. | ||
| Line 131: | Line 122: | ||
===BluetoothCheckConnection=== | ===BluetoothCheckConnection=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''BluetoothCheckConnection''' | ||
|- | |- | ||
| colspan="2" | Checks the status of the Bluetooth connection. Returns 0 for not paired and 1 for paired. | | colspan="2" | Checks the status of the Bluetooth connection. Returns 0 for not paired and 1 for paired. | ||
| Line 145: | Line 136: | ||
===BluetoothQueueLength=== | ===BluetoothQueueLength=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''BluetoothQueueLength''' | ||
|- | |- | ||
| colspan="2" | Reads the length of received Bluetooth data in bytes. | | colspan="2" | Reads the length of received Bluetooth data in bytes. | ||
| Line 159: | Line 150: | ||
===BluetoothReceive=== | ===BluetoothReceive=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''BluetoothReceive''' | ||
|- | |- | ||
| colspan="2" | Attempt to read a byte from the Bluetooth receive queue. | | colspan="2" | Attempt to read a byte from the Bluetooth receive queue. | ||
| Line 173: | Line 164: | ||
===BluetoothTransmit=== | ===BluetoothTransmit=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''BluetoothTransmit''' | ||
|- | |- | ||
| colspan="2" | Sends a byte via the Bluetooth data connection. | | colspan="2" | Sends a byte via the Bluetooth data connection. | ||
| Line 192: | Line 183: | ||
===BluetoothTransmitString=== | ===BluetoothTransmitString=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''BluetoothTransmitString''' | ||
|- | |- | ||
| colspan="2" | Sends a string via the Bluetooth data connection. | | colspan="2" | Sends a string via the Bluetooth data connection. | ||
| Line 211: | Line 202: | ||
===CheckIR=== | ===CheckIR=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''CheckIR''' | ||
|- | |- | ||
| colspan="2" | Checks to see if a IR sensor is within the master threshold distance. Returns 0 if the IR reading is below the threshold. Returns 1 if the IR reading is greater than or equal to the threshold. | | colspan="2" | Checks to see if a IR sensor is within the master threshold distance. Returns 0 if the IR reading is below the threshold. Returns 1 if the IR reading is greater than or equal to the threshold. | ||
| Line 230: | Line 221: | ||
===CheckLine=== | ===CheckLine=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''CheckLine''' | ||
|- | |- | ||
| colspan="2" | Checks to see if a line sensor is within the master threshold distance. Returns 0 if the IR reading is below the threshold. Returns 1 if the IR reading is greater than or equal to the threshold. | | colspan="2" | Checks to see if a line sensor is within the master threshold distance. Returns 0 if the IR reading is below the threshold. Returns 1 if the IR reading is greater than or equal to the threshold. | ||
| Line 249: | Line 240: | ||
===CheckUSB=== | ===CheckUSB=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''CheckUSB''' | ||
|- | |- | ||
| colspan="2" | Checks to see if a USB cable is connected to the robot. Returns 0 for no connection and 1 for an active connection. | | colspan="2" | Checks to see if a USB cable is connected to the robot. Returns 0 for no connection and 1 for an active connection. | ||
| Line 263: | Line 254: | ||
===EncoderReadCount=== | ===EncoderReadCount=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''EncoderReadCount''' | ||
|- | |- | ||
| colspan="2" | Reads one of the motor encoder counters. Each encoder count is equal to 0.314159 mm. | | colspan="2" | Reads one of the motor encoder counters. Each encoder count is equal to 0.314159 mm. | ||
| Line 282: | Line 273: | ||
===EncoderReset=== | ===EncoderReset=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''EncoderReset''' | ||
|- | |- | ||
| colspan="2" | Resets the encoder counters to 0 | | colspan="2" | Resets the encoder counters to 0 | ||
| Line 296: | Line 287: | ||
===Forward=== | ===Forward=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''Forward''' | ||
|- | |- | ||
| colspan="2" | Drives both motors of the formula flowcode forwards with the power specified. | | colspan="2" | Drives both motors of the formula flowcode forwards with the power specified. | ||
| Line 315: | Line 306: | ||
===Initialise=== | ===Initialise=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''Initialise''' | ||
|- | |- | ||
| colspan="2" | Starts up the Formula Allcode PWM for motor control and performs the wait for button press if enabled. | | colspan="2" | Starts up the Formula Allcode PWM for motor control and performs the wait for button press if enabled. | ||
| Line 329: | Line 320: | ||
===LCDBacklight=== | ===LCDBacklight=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LCDBacklight''' | ||
|- | |- | ||
| colspan="2" | Controls the brighness of the LCD backlight | | colspan="2" | Controls the brighness of the LCD backlight | ||
| Line 348: | Line 339: | ||
===LCDClear=== | ===LCDClear=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LCDClear''' | ||
|- | |- | ||
| colspan="2" | Clears the contents of the graphical LCD. | | colspan="2" | Clears the contents of the graphical LCD. | ||
| Line 362: | Line 353: | ||
===LCDDrawLine=== | ===LCDDrawLine=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LCDDrawLine''' | ||
|- | |- | ||
| colspan="2" | Draws a line on the LCD. | | colspan="2" | Draws a line on the LCD. | ||
| Line 396: | Line 387: | ||
===LCDDrawRectangle=== | ===LCDDrawRectangle=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LCDDrawRectangle''' | ||
|- | |- | ||
| colspan="2" | Draws a rectange on the LCD. | | colspan="2" | Draws a rectange on the LCD. | ||
| Line 440: | Line 431: | ||
===LCDPlotPixel=== | ===LCDPlotPixel=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LCDPlotPixel''' | ||
|- | |- | ||
| colspan="2" | Allows a single pixel on the LCD to be set or cleared. | | colspan="2" | Allows a single pixel on the LCD to be set or cleared. | ||
| Line 464: | Line 455: | ||
===LCDPrintNumber=== | ===LCDPrintNumber=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LCDPrintNumber''' | ||
|- | |- | ||
| colspan="2" | Prints a numeric value to the graphical LCD. | | colspan="2" | Prints a numeric value to the graphical LCD. | ||
| Line 482: | Line 473: | ||
| colspan="2" | Y coordinate to print the string. Range 0-31 | | colspan="2" | Y coordinate to print the string. Range 0-31 | ||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9- | | width="10%" align="center" | [[File:Fc9-s16-icon.png]] - INT | ||
| width="90%" | Number | | width="90%" | Number | ||
|- | |- | ||
| Line 498: | Line 489: | ||
===LCDPrintString=== | ===LCDPrintString=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LCDPrintString''' | ||
|- | |- | ||
| colspan="2" | Prints a string to the graphical LCD. | | colspan="2" | Prints a string to the graphical LCD. | ||
| Line 532: | Line 523: | ||
===LCDSetBackgroundColour=== | ===LCDSetBackgroundColour=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LCDSetBackgroundColour''' | ||
|- | |- | ||
| colspan="2" | Sets the pixel colour to drive the LCD. Default colour is 1 where a set pixel is black and the background is white. | | colspan="2" | Sets the pixel colour to drive the LCD. Default colour is 1 where a set pixel is black and the background is white. | ||
| Line 551: | Line 542: | ||
===LCDSetForegroundColour=== | ===LCDSetForegroundColour=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LCDSetForegroundColour''' | ||
|- | |- | ||
| colspan="2" | Sets the pixel colour to drive the LCD. Default colour is 1 where a set pixel is black and the background is white. | | colspan="2" | Sets the pixel colour to drive the LCD. Default colour is 1 where a set pixel is black and the background is white. | ||
| Line 570: | Line 561: | ||
===LCDWriteByte=== | ===LCDWriteByte=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LCDWriteByte''' | ||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
| Line 599: | Line 590: | ||
===LEDOff=== | ===LEDOff=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LEDOff''' | ||
|- | |- | ||
| colspan="2" | Switches off a single LED on the front of the Formula Allcode. | | colspan="2" | Switches off a single LED on the front of the Formula Allcode. | ||
| Line 618: | Line 609: | ||
===LEDOn=== | ===LEDOn=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LEDOn''' | ||
|- | |- | ||
| colspan="2" | Switches on a single LED on the front of the Formula Allcode. | | colspan="2" | Switches on a single LED on the front of the Formula Allcode. | ||
| Line 637: | Line 628: | ||
===LEDWrite=== | ===LEDWrite=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LEDWrite''' | ||
|- | |- | ||
| colspan="2" | Allows control of all 8-LEDs on the front of the Formula Allcode. | | colspan="2" | Allows control of all 8-LEDs on the front of the Formula Allcode. | ||
| Line 656: | Line 647: | ||
===LogoBackwards=== | ===LogoBackwards=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LogoBackwards''' | ||
|- | |- | ||
| colspan="2" | Drives the robot backward using the encoders as feedback to ensure the robot drives straight. Automatically stops at the specified distance. | | colspan="2" | Drives the robot backward using the encoders as feedback to ensure the robot drives straight. Automatically stops at the specified distance. | ||
| Line 668: | Line 659: | ||
|- | |- | ||
| colspan="2" | Distance you want to robot to drive in mm. Range 1-65535 | | colspan="2" | Distance you want to robot to drive in mm. Range 1-65535 | ||
|- | |||
| 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'' | |||
|} | |||
===LogoCalibrateMotors=== | |||
{| class="mtx-class-macrotable wikitable" | |||
|- | |||
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | |||
| width="90%" class="mtx-class-macrohead" | '''LogoCalibrateMotors''' | |||
|- | |||
| colspan="2" | Runs a short forward and reverse test, measures encoder balance, and saves motor trim values to EEPROM for this robot. | |||
|- | |||
|- | |- | ||
| 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 675: | Line 680: | ||
===LogoConfigure=== | ===LogoConfigure=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LogoConfigure''' | ||
|- | |- | ||
| colspan="2" | The Logo movement may sometimes be slightly off in terms of distance or angle. Before tweaking the factory values check that the wheels are pushed well onto their shafts but not tight against the FA body. Also check the tyre is on the wheel correctly. | | colspan="2" | The Logo movement may sometimes be slightly off in terms of distance or angle. Before tweaking the factory values check that the wheels are pushed well onto their shafts but not tight against the FA body. Also check the tyre is on the wheel correctly. | ||
| Line 699: | Line 704: | ||
===LogoForwards=== | ===LogoForwards=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LogoForwards''' | ||
|- | |- | ||
| colspan="2" | Drives the robot forward using the encoders as feedback to ensure the robot drives straight. Automatically stops at the specified distance. | | colspan="2" | Drives the robot forward using the encoders as feedback to ensure the robot drives straight. Automatically stops at the specified distance. | ||
| Line 718: | Line 723: | ||
===LogoSetSpeed=== | ===LogoSetSpeed=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LogoSetSpeed''' | ||
|- | |- | ||
| colspan="2" | Sets the cruise speed for LOGO type macros. Default speed 20%. | | colspan="2" | Sets the cruise speed for LOGO type macros. Default speed 20%. | ||
| Line 737: | Line 742: | ||
===LogoTurnLeft=== | ===LogoTurnLeft=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LogoTurnLeft''' | ||
|- | |- | ||
| colspan="2" | Rotates the robot left by a specific angle using the encoders as feedback to ensure the robot turns evenly. Automatically stops at the specified turn angle. | | colspan="2" | Rotates the robot left by a specific angle using the encoders as feedback to ensure the robot turns evenly. Automatically stops at the specified turn angle. | ||
| Line 756: | Line 761: | ||
===LogoTurnRight=== | ===LogoTurnRight=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''LogoTurnRight''' | ||
|- | |- | ||
| colspan="2" | Rotates the robot right by a specific angle using the encoders as feedback to ensure the robot turns evenly. Automatically stops at the specified turn angle. | | colspan="2" | Rotates the robot right by a specific angle using the encoders as feedback to ensure the robot turns evenly. Automatically stops at the specified turn angle. | ||
| Line 775: | Line 780: | ||
===PlayNote=== | ===PlayNote=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''PlayNote''' | ||
|- | |- | ||
| colspan="2" | Outputs a single tone from the onboard speaker for the period specified. | | colspan="2" | Outputs a single tone from the onboard speaker for the period specified. | ||
| Line 799: | Line 804: | ||
===ReadBattery=== | ===ReadBattery=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''ReadBattery''' | ||
|- | |- | ||
| colspan="2" | Reads the current voltage level from the LiPo battery. Return value is the battery voltage in Volts. Take care not to run the battery too low. Voltages lower than 3.4V may damage the battery. | | colspan="2" | Reads the current voltage level from the LiPo battery. Return value is the battery voltage in Volts. Take care not to run the battery too low. Voltages lower than 3.4V may damage the battery. | ||
| Line 813: | Line 818: | ||
===ReadIRSensor=== | ===ReadIRSensor=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''ReadIRSensor''' | ||
|- | |- | ||
| colspan="2" | Reads the analogue value from the specified IR distance sensor. Return value range: 0 to 4095 4095 represents the object is very close. | | colspan="2" | Reads the analogue value from the specified IR distance sensor. Return value range: 0 to 4095 4095 represents the object is very close. | ||
| Line 832: | Line 837: | ||
===ReadLDR=== | ===ReadLDR=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''ReadLDR''' | ||
|- | |- | ||
| colspan="2" | Reads the current light level from the on board light sensor. Return value range: 0 to 4095 4095 represents the maximum level of light and 0 represents the minimal level of light. | | colspan="2" | Reads the current light level from the on board light sensor. Return value range: 0 to 4095 4095 represents the maximum level of light and 0 represents the minimal level of light. | ||
| Line 846: | Line 851: | ||
===ReadLineSensor=== | ===ReadLineSensor=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''ReadLineSensor''' | ||
|- | |- | ||
| colspan="2" | Reads the analogue value from the specified IR line sensor. Return value range: 0 to 4095 4095 represents the object is reflecting the most light. | | colspan="2" | Reads the analogue value from the specified IR line sensor. Return value range: 0 to 4095 4095 represents the object is reflecting the most light. | ||
| Line 865: | Line 870: | ||
===ReadMic=== | ===ReadMic=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''ReadMic''' | ||
|- | |- | ||
| colspan="2" | Reads the current audio signal level from the on-board microphone. Return value range: 0 to 4095 | | colspan="2" | Reads the current audio signal level from the on-board microphone. Return value range: 0 to 4095 | ||
| Line 879: | Line 884: | ||
===ReadSwitch=== | ===ReadSwitch=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''ReadSwitch''' | ||
|- | |- | ||
| colspan="2" | Reads the value of one of the switches from the front of the Formula Allcode. | | colspan="2" | Reads the value of one of the switches from the front of the Formula Allcode. | ||
| Line 898: | Line 903: | ||
===Reverse=== | ===Reverse=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''Reverse''' | ||
|- | |- | ||
| colspan="2" | Drives both motors of the formula flowcode backwards with the power specified. | | colspan="2" | Drives both motors of the formula flowcode backwards with the power specified. | ||
| Line 917: | Line 922: | ||
===SetMotors=== | ===SetMotors=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''SetMotors''' | ||
|- | |- | ||
| colspan="2" | Sets the speed and direction of the Formula Allcode motors. | | colspan="2" | Sets the speed and direction of the Formula Allcode motors. | ||
| Line 941: | Line 946: | ||
===SpinLeft=== | ===SpinLeft=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''SpinLeft''' | ||
|- | |- | ||
| colspan="2" | Spins the formula flowcode on the spot in an anticlockwise direction as seen from above. | | colspan="2" | Spins the formula flowcode on the spot in an anticlockwise direction as seen from above. | ||
| Line 960: | Line 965: | ||
===SpinRight=== | ===SpinRight=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''SpinRight''' | ||
|- | |- | ||
| colspan="2" | Spins the formula flowcode on the spot in a clockwise direction as seen from above. | | colspan="2" | Spins the formula flowcode on the spot in a clockwise direction as seen from above. | ||
| Line 979: | Line 984: | ||
===Stop=== | ===Stop=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''Stop''' | ||
|- | |- | ||
| colspan="2" | Stops both motors. | | colspan="2" | Stops both motors. | ||
| Line 993: | Line 998: | ||
===WaitForSwitch=== | ===WaitForSwitch=== | ||
{| class="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%" | | width="90%" class="mtx-class-macrohead" | '''WaitForSwitch''' | ||
|- | |- | ||
| colspan="2" | Waits for the specified switch to be pressed. | | colspan="2" | Waits for the specified switch to be pressed. | ||
| Line 1,013: | Line 1,018: | ||
==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 1,033: | Line 1,038: | ||
|- | |- | ||
| colspan="2" | Decides if the Bluetooth data connection can reset the Formula AllCode. Used by mLoader when programming via Bluetooth to allow reprogramming without having to physically touch the robot. To ensure programming security set this option to No. | | colspan="2" | Decides if the Bluetooth data connection can reset the Formula AllCode. Used by mLoader when programming via Bluetooth to allow reprogramming without having to physically touch the robot. To ensure programming security set this option to No. | ||
|- | |||
| width="10%" align="center" | [[File:Fc9-type-15-icon.png]] | |||
| width="90%" | Turn Scale | |||
|- | |||
| colspan="2" | Scales turn distance. Lower if turns go too far (try 0.85). Raise if turns stop short (try 0.95). Default 0.88. | |||
|- | |||
| width="10%" align="center" | [[File:Fc9-type-15-icon.png]] | |||
| width="90%" | Reverse Scale | |||
|- | |||
| colspan="2" | Scales backward distance. Lower if backward goes too far. Default 1.0 (adjust after brake fix if needed). | |||
|- | |||
| width="10%" align="center" | [[File:Fc9-type-15-icon.png]] | |||
| width="90%" | Forward Scale | |||
|- | |||
| colspan="2" | Scales forward distance. Lower if forward goes too far (try 0.96). Default 1.0. | |||
|- | |- | ||
| width="10%" align="center" | [[File:Fc9-type-7-icon.png]] | | width="10%" align="center" | [[File:Fc9-type-7-icon.png]] | ||
| Line 1,039: | Line 1,059: | ||
| colspan="2" | Controls when the motor feedback is used. No - Speed control feedback is not used for SetMotors commands. Yes - Speed control feedback is used for the SetMotors commands. SetMotors commands include Forward, Backward, SpinLeft, SpinRight as well as SetMotors itself. Logo functions always use feedback. | | colspan="2" | Controls when the motor feedback is used. No - Speed control feedback is not used for SetMotors commands. Yes - Speed control feedback is used for the SetMotors commands. SetMotors commands include Forward, Backward, SpinLeft, SpinRight as well as SetMotors itself. Logo functions always use feedback. | ||
|- | |- | ||
| 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 Simulation | ||
|- | |- | ||
|- | |- | ||
| Line 1,048: | Line 1,068: | ||
| colspan="2" | Controls how the IR sensors are modelled in simulation. Linear is the legacy mode and works as it has always done. Exponential attempts to provide a more accurate reading which is closed to response of the real world hardware, | | colspan="2" | Controls how the IR sensors are modelled in simulation. Linear is the legacy mode and works as it has always done. Exponential attempts to provide a more accurate reading which is closed to response of the real world hardware, | ||
|- | |- | ||
| 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 1,062: | Line 1,082: | ||
| colspan="2" | | | colspan="2" | | ||
|- | |- | ||
| 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 Properties | ||
|- | |- | ||
|- | |- | ||
| Line 1,091: | Line 1,111: | ||
| colspan="2" | Useful if you are creating add-ons to the robot which you want to be able to simulate. Point the property at the group containing the Formula Allcode and the additional mechanics. Otherwise leave blank to maintain the normal simulation functionality. | | colspan="2" | Useful if you are creating add-ons to the robot which you want to be able to simulate. Point the property at the group containing the Formula Allcode and the additional mechanics. Otherwise leave blank to maintain the normal simulation functionality. | ||
|} | |} | ||
==Component Source Code== | |||
Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_FA_Source_P4.fcfx FC_Comp_Source_FA_Source_P4.fcfx] | |||
Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_FA_Source_P4.fcfx FC_Comp_Source_FA_Source_P4.fcfx] | |||
Latest revision as of 14:37, 13 July 2026
| Author | Matrix TSL |
| Version | 1.3 |
| Category | Robotics |
Formula AllCode component
A component to allow all the features of the Formula AllCode robot to be investigated. Fully simulated component which can interact with simulated objects on the panel as well as control the real hardware.
Detailed description
No detailed description exists yet for this component
Examples
Line Following
Line following example using the Formula AllCode, works with objects on the simulation panel and on the real hardware.
Simulation with the API component
An example showing how to use the API component to drive the robot in simulation.
Macro reference
AudioAddToBuffer
| AudioAddToBuffer | |
| Writes a value to the 16-bit audio output buffer. | |
| Data | |
| Return | |
AudioQueueLength
| AudioQueueLength | |
| Retreives the current length of valid data within the audio queue | |
| Return | |
AudioReadFromBuffer
| AudioReadFromBuffer | |
| Allows the audio buffer to be used for other streaming data such as recording the mic. | |
| Return | |
AudioStreamControl
BluetoothCheckConnection
| BluetoothCheckConnection | |
| Checks the status of the Bluetooth connection. Returns 0 for not paired and 1 for paired. | |
| Return | |
BluetoothQueueLength
| BluetoothQueueLength | |
| Reads the length of received Bluetooth data in bytes. | |
| Return | |
BluetoothReceive
| BluetoothReceive | |
| Attempt to read a byte from the Bluetooth receive queue. | |
| Return | |
BluetoothTransmit
| BluetoothTransmit | |
| Sends a byte via the Bluetooth data connection. | |
| Data | |
| Return | |
BluetoothTransmitString
| BluetoothTransmitString | |
| Sends a string via the Bluetooth data connection. | |
| Data | |
| Return | |
CheckIR
CheckLine
CheckUSB
| CheckUSB | |
| Checks to see if a USB cable is connected to the robot. Returns 0 for no connection and 1 for an active connection. | |
| Return | |
EncoderReadCount
| EncoderReadCount | |
| Reads one of the motor encoder counters. Each encoder count is equal to 0.314159 mm. | |
| Channel | |
| 0 = LeftCount, 1=RightCount | |
| Return | |
EncoderReset
| EncoderReset | |
| Resets the encoder counters to 0 | |
| Return | |
Forward
| Forward | |
| Drives both motors of the formula flowcode forwards with the power specified. | |
| Power | |
| Amount of power to use to drive motor. Range 0-100 | |
| Return | |
Initialise
| Initialise | |
| Starts up the Formula Allcode PWM for motor control and performs the wait for button press if enabled. | |
| Return | |
LCDBacklight
| LCDBacklight | |
| Controls the brighness of the LCD backlight | |
| Brightness | |
| Range: 0-100, 0=Off, 1=Min Brightness, 100=Max Brightness | |
| Return | |
LCDClear
| LCDClear | |
| Clears the contents of the graphical LCD. | |
| Return | |
LCDDrawLine
| LCDDrawLine | |
| Draws a line on the LCD. | |
| X1 | |
| Range 0-127 | |
| Y1 | |
| Range 0-31 | |
| X2 | |
| Range 0-127 | |
| Y2 | |
| Range 0-31 | |
| Return | |
LCDDrawRectangle
LCDPlotPixel
| LCDPlotPixel | |
| Allows a single pixel on the LCD to be set or cleared. | |
| X | |
| Sets the X coordinate - Range 0-127 | |
| Y | |
| Sets the Y coordinate - Range 0-31 | |
| Return | |
LCDPrintNumber
LCDPrintString
LCDSetBackgroundColour
| LCDSetBackgroundColour | |
| Sets the pixel colour to drive the LCD. Default colour is 1 where a set pixel is black and the background is white. | |
| Colour | |
| Range 0-1 : 0=White, 1=Black | |
| Return | |
LCDSetForegroundColour
| LCDSetForegroundColour | |
| Sets the pixel colour to drive the LCD. Default colour is 1 where a set pixel is black and the background is white. | |
| Colour | |
| Range 0-1 : 0=White, 1=Black | |
| Return | |
LCDWriteByte
| LCDWriteByte | |
| Data | |
| X | |
| Y | |
| Return | |
LEDOff
| LEDOff | |
| Switches off a single LED on the front of the Formula Allcode. | |
| LED | |
| Which LED to switch on, range 0-7 | |
| Return | |
LEDOn
| LEDOn | |
| Switches on a single LED on the front of the Formula Allcode. | |
| LED | |
| Which LED to switch on, range 0-7 | |
| Return | |
LEDWrite
| LEDWrite | |
| Allows control of all 8-LEDs on the front of the Formula Allcode. | |
| LED_Byte | |
| 8-bit binary value to write to the 8 LEDs | |
| Return | |
LogoBackwards
LogoCalibrateMotors
| LogoCalibrateMotors | |
| Runs a short forward and reverse test, measures encoder balance, and saves motor trim values to EEPROM for this robot. | |
| Return | |
LogoConfigure
LogoForwards
LogoSetSpeed
| LogoSetSpeed | |
| Sets the cruise speed for LOGO type macros. Default speed 20%. | |
| Speed | |
| Range 1-100, Default 60 | |
| Return | |
LogoTurnLeft
LogoTurnRight
PlayNote
ReadBattery
ReadIRSensor
ReadLDR
ReadLineSensor
ReadMic
| ReadMic | |
| Reads the current audio signal level from the on-board microphone. Return value range: 0 to 4095 | |
| Return | |
ReadSwitch
| ReadSwitch | |
| Reads the value of one of the switches from the front of the Formula Allcode. | |
| Switch | |
| Which switch do we want to read 0=Left, 1=Right | |
| Return | |
Reverse
| Reverse | |
| Drives both motors of the formula flowcode backwards with the power specified. | |
| Power | |
| Amount of power to use to drive motor. Range 0-100 | |
| Return | |
SetMotors
| SetMotors | |
| Sets the speed and direction of the Formula Allcode motors. | |
| Left | |
| Valid Range = -100 to 100 | |
| Right | |
| Valid Range = -100 to 100 | |
| Return | |
SpinLeft
| SpinLeft | |
| Spins the formula flowcode on the spot in an anticlockwise direction as seen from above. | |
| Power | |
| Amount of power to use to drive motor. Range 0-100 | |
| Return | |
SpinRight
| SpinRight | |
| Spins the formula flowcode on the spot in a clockwise direction as seen from above. | |
| Power | |
| Amount of power to use to drive motor. Range 0-100 | |
| Return | |
Stop
| Stop | |
| Stops both motors. | |
| Return | |
WaitForSwitch
| WaitForSwitch | |
| Waits for the specified switch to be pressed. | |
| Switch | |
| Which switch do we want to wait for 0=Left, 1=Right, 2=Either, 3=Both | |
| Return | |
Property reference
Component Source Code
Please click here to download the component source project: FC_Comp_Source_FA_Source_P4.fcfx
Please click here to view the component source code (Beta): FC_Comp_Source_FA_Source_P4.fcfx
