Release 2012.12.29.00

Download and install the latest ARC robot programming software to experience these updates.

Download ARC
Software Information
Our ARC Robot Control Software is a masterpiece of simplicity and flexibility. Even without prior programming experience, your robot will be doing amazing things, quickly! No matter how easy we make the graphical interface, there will always be need for some programming. However, do not worry - we have made EZ-Script very, well, easy! Every new release of ARC introduces more functions to help customize your robot's behaviour. I hope you enjoy this release and the new scripting power it introduces to your robot creation:)


- WiiMote Control displays log of button presses

- WiiMote Control has fix for Non-Nintendo WiiMotes

- Joystick Control has graphic display of analog joystick positions

- New EZ-Script Commands: GetChar() and GetCharAt() will return the character at the specified location within the string

- New EZ-Script Command: Length() will return the length of the string array

- EZ-Script Control displays execution time... We want to show it off - because it's THAT fast!

- EZ-Script Variable Manager entirely re-written to be faster and support more functions

- EZ-Script Debug View displays line numbers

- New EZ-Script Command: PrintHex() will print the contents of a variable in hexadecimal. Great for debugging data received from i2cRead()

- New EZ-Script Command: i2cRead() will read the specified number of bytes to the assigned variable from the i2c interface on the EZ-B. You can use this to communicate with other Microcontrollers (such as arduino) over the i2c interface.

- EZ-Script allows character index support (see help manual for GetCharAt() for more information)

- Examples Form has Tree View of example projects for easy organization

- New EZ-Script Command: GetByteAt() and GetByte() will return the byte as a literal within a variable array. This is great for converting Hex to Decimal from an array holding i2cRead data

- New Control: Slide Script will allow custom scripting for a slider. Look at the i2c example for a demonstration.

- New EZ-Script Command: IsNumeric() will return True or False if the passed variable is a number

New Examples Form with Tree View
User-inserted image

New Slide Script Control
For a demo, Load the Examples -> Functions -> i2c
The Slide Script allows you to assign a variable to a slider. You may also create a script that will execute when the slider is moved. Also, a custom button will be visible when a script is added to that button.
User-inserted image

EZ-Script Displays Script Execution Time
We are very proud of EZ-Script and the compiler we have designed. The compiler is very very fast! Scripts that depend on EZ-B communication will take longer due to the communication delay.
User-inserted image

WiiMote and Joystick Controls display the position
The WiiMote and Joystick Controls will display their position with a graphical view. As you move the device, the position will update also.
User-inserted image

This method uses the GetCharAt() function to return the byte at the specified position


$x = "Hello"



$y = GetCharAt($x, $a)

print("$a = $y")

$a = $a + 1

if ($a = Length($x))


Square Bracket Array Reference
This example uses the array method of specifying a single byte within a variable at the specified position by using the array reference of a string. This is the same as using GetCharAt()


$x = "Hello"



$y = $x[$a]

print("$a = $y")

$a = $a + 1

if ($a = Length($x))


i2cRead() and PrintHex()
This will read data from the i2c interface at the specified address. The first line of code will convert the 7 bit hex address of the device into an 8 bit address, and set the first bit (LSB) to a 1 for reading. The i2cRead() function will read the data as an array into the variable. Each byte of the variable can be converted into a readable Decimal value using GetByte(). The raw received data is written to the debug window using PrintHex().


$ReadAddress = (0x09 << 1) + 1

Print("Read Address: $ReadAddress")

$raw = i2cRead(AUTO, $ReadAddress, 3)

Print("Received: Length($Raw) Bytes")


$Red = GetByte($Raw[0])
$Green = GetByte($Raw[1])
$Blue = GetByte($Raw[2])

i2cWrite() and IsNumeric()
The i2cWrite() function will send specified data on the i2c interface. In the example below, we first check to ensure the variables are numerical values. Following that, we convert the 7 bit i2c address of the device into an 8 bit value, and ensure the first bit (LSB) is 0. Then we send the data to the i2c device.


# Check if $Red is a numeric value
if (IsNumeric($Red) = false)
print("Set the Red value to a number")

# Check if $Green is a numeric value
if (IsNumeric($Green) = false)
print("Set the Green value to a number")

# Check if $Blue is a numeric value
if (IsNumeric($Blue) = false)
print("Set the Blue value to a number")

print("Red: $Red, Green: $Green, Blue: $Blue")

# Shift the bits over
# Set the LSB (first bit) to a 0
# When first bit is a 0 on i2c, that means
# it is a Write Address
$WriteAddress = 0x09 << 1

print("Write Address: $WriteAddress")

i2cWrite($WriteAddress, 'n', $Red, $Green, $Blue)
As usual DJ, this is over the top. I thought you guys took some time off over the holidays? Do you or your team ever sleep or ever relax?
This is truly the gift that keeps on giving!
I started (received two weeks ago) with my EZ-Robot kit and I am very happy... you made ??a good job. I built the next rover to explore the planet Mars :) :) Happy Holidays !
Whew ....more robot candy to digest! Awesome DJ! ......perfect timing for me !finally! acquiring a kit with special thanks to DJ and Co for the amazing offer..its now or never.:) :)
DJ, thanks for listening! I appreciate the I^2 C support!