Jump to content

Component: Formula AllCode Dummy (RB4420) (Mechatronics): Difference between revisions

From Flowcode Help
No edit summary
No edit summary
Line 91: Line 91:


{{Fcfile|FA_API_Sim_Demo.fcfx|FA API Sim Demo}}
{{Fcfile|FA_API_Sim_Demo.fcfx|FA API Sim Demo}}




Line 96: Line 98:
==Macro reference==
==Macro reference==


===PlayNote===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 119: Line 122:




===LEDOn===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 137: Line 141:




===BluetoothTransmit===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 155: Line 160:




===LCDPrintString===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 188: Line 194:




===Stop===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 201: Line 208:




===ReadBattery===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 214: Line 222:




===LEDOff===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 232: Line 241:




===LCDPrintNumber===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 265: Line 275:




===LEDWrite===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 283: Line 294:




===BluetoothCheckConnection===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 296: Line 308:




===ReadMic===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 309: Line 322:




===AudioQueueLength===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 322: Line 336:




===AudioAddToBuffer===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 340: Line 355:




===ReadSwitch===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 358: Line 374:




===CheckLine===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 376: Line 393:




===AudioStreamControl===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 399: Line 417:




===SpinLeft===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 417: Line 436:




===LogoTurnLeft===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 435: Line 455:




===Forward===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 453: Line 474:




===LCDWriteByte===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 481: Line 503:




===BluetoothReceive===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 494: Line 517:




===LCDDrawLine===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 527: Line 551:




===BluetoothQueueLength===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 540: Line 565:




===BluetoothTransmitString===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 558: Line 584:




===LCDBacklight===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 576: Line 603:




===AudioReadFromBuffer===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 589: Line 617:




===ReadLineSensor===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 607: Line 636:




===LogoTurnRight===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 625: Line 655:




===SpinRight===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 643: Line 674:




===CheckIR===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 661: Line 693:




===LCDPlotPixel===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 684: Line 717:




===LCDSetBackgroundColour===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 702: Line 736:




===ReadIRSensor===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 720: Line 755:




===SetMotors===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 743: Line 779:




===LogoBackwards===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 761: Line 798:




===EncoderReset===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 774: Line 812:




===Reverse===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 792: Line 831:




===WaitForSwitch===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 810: Line 850:




===ReadLDR===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 823: Line 864:




===LCDDrawRectangle===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 866: Line 908:




===EncoderReadCount===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 884: Line 927:




===CheckUSB===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 897: Line 941:




===LCDSetForegroundColour===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 915: Line 960:




===Initialise===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 928: Line 974:




===LogoSetSpeed===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 946: Line 993:




===LogoForwards===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
Line 964: Line 1,012:




===LCDClear===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-

Revision as of 11:49, 3 February 2023

Author Matrix TSL
Version 1.2
Category Mechatronics


Formula AllCode Dummy 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.

Component Source Code

Please click here to download the component source project: FC_Comp_Source_FA_Source_P4_Dummy_Template.fcfx

Please click here to view the component source code (Beta): FC_Comp_Source_FA_Source_P4_Dummy_Template.fcfx

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.

FA-Line


Simulation with the API component

An example showing how to use the API component to drive the robot in simulation.

FA API Sim Demo



Macro reference

PlayNote

PlayNote
Outputs a single tone from the onboard speaker for the period specified. 
- UINT Note
Sets the pitch of the note in Hz. Range: 1 - 10000 
- UINT Time
Time period to play the note for in milliseconds. Range: 0 - 65535 ms 
- VOID Return


LEDOn

LEDOn
Switches on a single LED on the front of the Formula Allcode.  
- BYTE LED
Which LED to switch on, range 0-7 
- VOID Return


BluetoothTransmit

BluetoothTransmit
Sends a byte via the Bluetooth data connection. 
- BYTE Data
 
- VOID Return


LCDPrintString

LCDPrintString
Prints a string to the graphical LCD. 
- BYTE X
The horizontal start pixel. Range 0-127 
- BYTE Y
Y coordinate to print the string. Range 0-31 
- STRING Data
 
- UINT Transparent
 
- VOID Return


Stop

Stop
Stops both motors. 
- VOID Return


ReadBattery

ReadBattery
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. 
- FLOAT Return


LEDOff

LEDOff
Switches off a single LED on the front of the Formula Allcode.  
- BYTE LED
Which LED to switch on, range 0-7 
- VOID Return


LCDPrintNumber

LCDPrintNumber
Prints a numeric value to the graphical LCD. 
- BYTE X
The horizontal start pixel. Range 0-127 
- BYTE Y
Y coordinate to print the string. Range 0-31 
- UINT Number
 
- BYTE Transparent
 
- VOID Return


LEDWrite

LEDWrite
Allows control of all 8-LEDs on the front of the Formula Allcode.  
- BYTE LED_Byte
8-bit binary value to write to the 8 LEDs 
- VOID Return


BluetoothCheckConnection

BluetoothCheckConnection
Checks the status of the Bluetooth connection. Returns 0 for not paired and 1 for paired. 
- BYTE Return


ReadMic

ReadMic
Reads the current audio signal level from the on-board microphone. Return value range: 0 to 4095 
- UINT Return


AudioQueueLength

AudioQueueLength
Retreives the current length of valid data within the audio queue 
- UINT Return


AudioAddToBuffer

AudioAddToBuffer
Writes a value to the 16-bit audio output buffer. 
- UINT Data
 
- VOID Return


ReadSwitch

ReadSwitch
Reads the value of one of the switches from the front of the Formula Allcode. 
- BYTE Switch
Which switch do we want to read 0=Left, 1=Right 
- BYTE Return


CheckLine

CheckLine
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. 
- BYTE Sensor
Range: 0 to 1 - 0=Left, 1=Right 
- BYTE Return


AudioStreamControl

AudioStreamControl
Allows control of the audio output functionality via the onboard speaker. Data is loaded into the audio output buffer using the AddToBuffer function. 
- BYTE Mode
0=Off, 8=8-bit Mode, 16=16-bit Mode 
- BYTE SampleRate
Sets the sample rate 0=8KHz, 1=16KHz 
- VOID Return


SpinLeft

SpinLeft
Spins the formula flowcode on the spot in an anticlockwise direction as seen from above.  
- BYTE Power
Amount of power to use to drive motor. Range 0-100 
- VOID Return


LogoTurnLeft

LogoTurnLeft
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. 
- UINT Angle
Angle in degrees you wish to rotate. Range 1-65536 
- VOID Return


Forward

Forward
Drives both motors of the formula flowcode forwards with the power specified.  
- BYTE Power
Amount of power to use to drive motor. Range 0-100 
- VOID Return


LCDWriteByte

LCDWriteByte
 
- BYTE Data
 
- BYTE X
 
- BYTE Y
 
- VOID Return


BluetoothReceive

BluetoothReceive
Attempt to read a byte from the Bluetooth receive queue. 
- BYTE Return


LCDDrawLine

LCDDrawLine
Draws a line on the LCD. 
- BYTE X1
Range 0-127 
- BYTE Y1
Range 0-31 
- BYTE X2
Range 0-127 
- BYTE Y2
Range 0-31 
- VOID Return


BluetoothQueueLength

BluetoothQueueLength
Reads the length of received Bluetooth data in bytes.  
- UINT Return


BluetoothTransmitString

BluetoothTransmitString
Sends a string via the Bluetooth data connection. 
- STRING Data
 
- VOID Return


LCDBacklight

LCDBacklight
Controls the brighness of the LCD backlight 
- BYTE Brightness
Range: 0-100, 0=Off, 1=Min Brightness, 100=Max Brightness 
- VOID Return


AudioReadFromBuffer

AudioReadFromBuffer
Allows the audio buffer to be used for other streaming data such as recording the mic.  
- UINT Return


ReadLineSensor

ReadLineSensor
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. 
- BYTE Channel
Range: 0 to 1 - 0=Left, 1=Right 
- UINT Return


LogoTurnRight

LogoTurnRight
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. 
- UINT Angle
Angle in degrees you wish to rotate. Range 1-65536 
- VOID Return


SpinRight

SpinRight
Spins the formula flowcode on the spot in a clockwise direction as seen from above.  
- BYTE Power
Amount of power to use to drive motor. Range 0-100 
- VOID Return


CheckIR

CheckIR
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. 
- BYTE Sensor
Range: 0 to 7 - 0=Left, 1=Front Left, 2=Front, 3=Front Right, 4=Right, 5=Rear Right, 6=Rear, 7=Rear Left 
- BYTE Return


LCDPlotPixel

LCDPlotPixel
Allows a single pixel on the LCD to be set or cleared. 
- BYTE X
Sets the X coordinate - Range 0-127 
- BYTE Y
Sets the Y coordinate - Range 0-31 
- VOID Return


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. 
- BYTE Colour
Range 0-1 : 0=White, 1=Black 
- VOID Return


ReadIRSensor

ReadIRSensor
Reads the analogue value from the specified IR distance sensor. Return value range: 0 to 4095 4095 represents the object is very close. 
- BYTE Channel
Range: 0 to 7 - 0=Left, 1=Front Left, 2=Front, 3=Front Right, 4=Right, 5=Rear Right, 6=Rear, 7=Rear Left 
- UINT Return


SetMotors

SetMotors
Sets the speed and direction of the Formula Allcode motors.  
- INT Left
Valid Range = -100 to 100 
- INT Right
Valid Range = -100 to 100 
- VOID Return


LogoBackwards

LogoBackwards
Drives the robot backward using the encoders as feedback to ensure the robot drives straight. Automatically stops at the specified distance. 
- UINT Distance
Distance you want to robot to drive in mm. Range 1-65535 
- VOID Return


EncoderReset

EncoderReset
Resets the encoder counters to 0 
- VOID Return


Reverse

Reverse
Drives both motors of the formula flowcode backwards with the power specified.  
- BYTE Power
Amount of power to use to drive motor. Range 0-100 
- VOID Return


WaitForSwitch

WaitForSwitch
Waits for the specified switch to be pressed. 
- BYTE Switch
Which switch do we want to wait for 0=Left, 1=Right, 2=Either, 3=Both 
- VOID Return


ReadLDR

ReadLDR
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. 
- UINT Return


LCDDrawRectangle

LCDDrawRectangle
Draws a rectange on the LCD. 
- BYTE X1
Range 0-127 
- BYTE Y1
Range 0-31 
- BYTE X2
Range 0-127 
- BYTE Y2
Range 0-31 
- BYTE Transparent
Sets the transparency of the box, 0=Box contains background colour, 1=Box contains previous pixel data 
- BYTE Solid
Chooses to fill the box with colour, 0=Box contains transparency data, 1=Box contains foreground colour 
- VOID Return


EncoderReadCount

EncoderReadCount
Reads one of the motor encoder counters. Each encoder count is equal to 0.314159 mm.  
- BYTE Channel
0 = LeftCount, 1=RightCount 
- UINT Return


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. 
- BYTE 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. 
- BYTE Colour
Range 0-1 : 0=White, 1=Black 
- VOID Return


Initialise

Initialise
Starts up the Formula Allcode PWM for motor control and performs the wait for button press if enabled. 
- VOID Return


LogoSetSpeed

LogoSetSpeed
Sets the cruise speed for LOGO type macros. Default speed 20%. 
- BYTE Speed
Range 1-100, Default 60 
- VOID Return


LogoForwards

LogoForwards
Drives the robot forward using the encoders as feedback to ensure the robot drives straight. Automatically stops at the specified distance. 
- UINT Distance
Distance you want to robot to drive in mm. Range 1-65535 
- VOID Return


LCDClear

LCDClear
Clears the contents of the graphical LCD. 
- VOID Return



Property reference

Properties
Wait For Button
Determines if the program will automatically wait for one of the front switches to be pressed before executing the program. Ran as part of the initialise function after the various components have been initialised. 
Show Creation Info
Specifies what information is shown to the user on calling the initialise function. The time and date shown are the compilation time and date to help pinpoint the firmware version. 
Bluetooth Reset
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. 
Use Motor Feedback
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. 
IR Thresholds (CheckIR macro)
IR Distance
IR Threshold used with the CheckIR macro 
Line Sensitivity
 
Simulation Properties
Sim Speed (1 - 100)
Sets the simulated amount of movement relative to the speed of the Formula Allcode. 
Timer Interval (ms)
Interval in milliseconds between each simulated movement of the Formula Allcode robot. 
Collision Method
Select which objects the robot sensors will interact with. 
Light Source
Panel object specified as the simulation light source. Used when simulating "find the light" type tasks.