Component: Lookup tables (Storage)
Author | Matrix Ltd |
Version | 1.7 |
Category | Storage |
Contents
Lookup tables component
A lookup-table component allowing an easy way to place arrays of static data into ROM memory. The LUT data is accessed directly allowing very low overhead when collecting the data.
Detailed description
No detailed description exists yet for this component
Examples
A look up table component is useful when including data into a program which may not be linear and therefore hard to calculate.
One example of this is a sine wave or working out a temperature based on the resistance of a thermistor.
For a simple example lets say we want to store a sine wave on board the microcontroller.
First of all we use Excel to generate the data for a sine wave to do this we work out the angles in degrees we want to reproduce, then convert the degrees to radians and then generate the Sine wave for the angle. the angle returned will be between -1 and 1 so we need to convert this to fit into the microcontroller's memory. The most efficient way is to store the value as a byte which means scaling up the output to 0 - 255 and removing the real portion of the number to give integer values.
Then using the file -> Save as menu in Excel we can export the data as a raw .CSV file.
The line in the CSV file we are interested in is the Integer Offset Data. We can then copy and paste this data into the integer property of the look up table component.
In this example Flowcode file we display the LUT data onto a graphical LCD display
LUT
Here is what you should expect to see on the glcd after running the simulation.
Downloadable macro reference
![]() |
GetFloats |
Gets the float LUT | |
[[File:]] - | Dest |
![]() |
Return |
![]() |
GenerateCache |
Generates the C code for the arrays so it does not need to be done at compile time | |
![]() |
Return |
![]() |
GetIntCount |
Gets the number of int LUT entries | |
![]() |
Return |
![]() |
ClearInts |
Clear all int LUT values | |
![]() |
Return |
![]() |
GetFloatCount |
Gets the number of float LUT entries | |
![]() |
Return |
![]() |
GetIntBits |
Gets the number of bits-per-int in the LUT | |
![]() |
Return |
![]() |
SetIntBits |
Sets the size of an int LUT entry | |
![]() |
Bits |
![]() |
Return |
![]() |
GetFloatBits |
Gets the number of bits-per-float in the LUT | |
![]() |
Return |
![]() |
ClearFloats |
Clear all float LUT values | |
![]() |
Return |
![]() |
GetFloat |
Gets a float from the LUT | |
![]() |
Index |
[[File:]] - | Return |
![]() |
GetInts |
Gets the int LUT | |
![]() |
Dest |
![]() |
Return |
![]() |
GetLUTCount |
Gets the number of individual data entries stored in the LUT. | |
![]() |
Return |
![]() |
GetInt |
Gets an integer from the LUT | |
![]() |
Index |
![]() |
Return |
![]() |
SetFloatBits |
Sets the size of a float LUT entry | |
![]() |
Bits |
![]() |
Return |
![]() |
AddInt |
Int to add to the int array | |
![]() |
Value |
Int to add to the int array | |
![]() |
Return |
![]() |
AddFloat |
Add a float to the floating point LUT | |
[[File:]] - | Value |
Floating point values | |
![]() |
Return |
![]() |
Initialise |
Sets up the GSM module. Returns 0 for OK, 255 for no reply and 254 for command fail. | |
![]() |
Return |
![]() |
SampleAccel |
Samples the accelerometer 0 = no new data, 1 = new data available | |
![]() |
Return |
![]() |
Left |
Rotates the robot left - waits for the angle to be traversed before returning | |
![]() |
Angle |
Angle to turn in degrees | |
![]() |
Return |
![]() |
LCDDrawPixel |
Allows a single pixel on the LCD to be set or cleared | |
![]() |
X |
X Pixel 0-127 | |
![]() |
Y |
Y Pixel 0-31 | |
![]() |
State |
0=White (Off), 1=Black (On) | |
![]() |
Return |
![]() |
ServoSetPosition |
Allows one of the servo positions to be assigned | |
![]() |
Channel |
Range 0-3 | |
![]() |
Position |
Range 0-255 | |
![]() |
Return |
![]() |
CardBitmap |
Displays a monochrome bitmap read from the card on the LCD | |
![]() |
X |
Range 0-127 | |
![]() |
Y |
Range 0-31 | |
![]() |
Filename |
![]() |
Return |
![]() |
CardOpen |
Attempts to open an existing file on the SD card 255=Error, 1=File not found, 0=Open OK | |
![]() |
Filename |
![]() |
Return |
![]() |
Forwards |
Drives the robot forwards - waits for the distance to be traversed before returning | |
![]() |
Distance |
Distance in mm | |
![]() |
Return |
![]() |
ReadBearing |
Reads the compass bearing based on the degrees clockwise from magnetic north. | |
[[File:]] - | Return |
![]() |
GetConsoleHandle |
Gets the handle to the console allowing data displaying on the panel etc. | |
[[File:]] - | Return |
![]() |
LCDDrawLine |
Allows a single pixel width line to be drawn on the LCD | |
![]() |
X1 |
X Pixel 0-127 | |
![]() |
Y1 |
Y Pixel 0-31 | |
![]() |
X2 |
X Pixel 0-127 | |
![]() |
Y2 |
Y Pixel 0-31 | |
![]() |
Return |
![]() |
ServoAutoMoveToPosition |
Allows one of the servo positions to move gradually to a new position | |
![]() |
Channel |
Range 0-3 | |
![]() |
Position |
Range 0-255 | |
![]() |
Return |
![]() |
ReadAllValue |
Reads a single value stored from the read all command Index dictates which sensor value to read | |
![]() |
Index |
0=SW, 1-8=IR, 9-10=Line, 11=Light, 12=Mic, 13-15=Accel | |
![]() |
Return |
![]() |
LCDBacklight |
Allows the LCD backlight brighntess to be adjusted | |
![]() |
Intensity |
Range 0-100, 0=Off, 1=Min Brightness, 100=Max Brightness | |
![]() |
Return |
![]() |
LCDDrawRect |
Allows a rectangle to be drawn on the LCD | |
![]() |
X1 |
X Pixel 0-127 | |
![]() |
Y1 |
Y Pixel 0-31 | |
![]() |
X2 |
X Pixel 0-127 | |
![]() |
Y2 |
Y Pixel 0-31 | |
![]() |
Return |
![]() |
ReadLine |
Reads one of the IR line sensors 0-1 0=Left, 1=Right | |
![]() |
index |
0=Left, 1=Right | |
![]() |
Return |
![]() |
ServoDisable |
Allows one of the servo outputs 0-3 to be disabled | |
![]() |
Channel |
Range 0-3 | |
![]() |
Return |
![]() |
ServoEnable |
Allows one of the servo outputs 0-3 to be enabled | |
![]() |
Channel |
Range 0-3 | |
![]() |
Return |
![]() |
CardReadByte |
Reads a byte from the currently open file. Starts at the beginning of the file and auto increments to the end | |
![]() |
Return |
![]() |
CardErase |
Attempts to delete an existing file on the SD card 255=Error, 1=File not found, 0=Delete OK | |
![]() |
Filename |
![]() |
Return |
![]() |
CardWriteByte |
Appends a byte to the end of the currently open file | |
![]() |
Data |
![]() |
Return |
![]() |
EncoderRead |
Reads one of the motor encoder counters. Approx 0.328296mm of travel per encoder unit. | |
![]() |
index |
0=Left, 1=Right | |
![]() |
Return |
![]() |
SetMotors |
Sets the motor speeds without feedback Range -100 to 100 | |
[[File:]] - | Left |
Range -100 to 100 | |
[[File:]] - | Right |
Range -100 to 100 | |
![]() |
Return |
![]() |
Backwards |
Drives the robot backwards - waits for the distance to be traversed before returning | |
![]() |
Distance |
Distance in mm | |
![]() |
Return |
![]() |
EncoderReset |
Resets the motor encoder counters | |
![]() |
Return |
![]() |
LCDVerbose |
Allows the LCD to automatically report the API commands as they get processed. Default - verbose on | |
![]() |
State |
0=Off 1=On | |
![]() |
Return |
![]() |
SetProp |
Allows the COM port property to be set from a parent component. | |
![]() |
PropName |
![]() |
PropVal |
![]() |
Return |
![]() |
CardInit |
Attempts to startup the SD card 255=No Card, 254=Init Fail, 0=Init OK | |
![]() |
Return |
![]() |
GetProp |
Allows the property filter for the COM port list to be copied to a parent component. | |
![]() |
PropName |
![]() |
Return |
![]() |
LCDClear |
Clears the LCD | |
![]() |
Return |