eV3 Mindstorms Programming Languages


The LEGO Retail and Education versions of the eV3 Mindstorms software is based upon LabView.  It is a visual language with drag and drop icons representing various programming entities like logic flow, mathematical operations, data structures, sensor readings and actuator commands.

The visual eV3 Mindstorms software is perhaps easier for young children and first time programmers to use, but it quickly becomes frustrating for more advanced programmers for a variety of reasons.  It is far less expressive, scalable, and robust than a low level language like C/C++.  Programming takes a much longer time with the visual interface, especially as program size and complexity grows.  Finally, the visual programming environment suffers from a lack of editing and debugging tools that are powerful, fast and efficient to use.

I was looking into what alternative programming languages were available to program the eV3 Mindstorms brick.  Wikipedia lists options for programming the LEGO Mindstorms robots (more NXT than eV3 due to the former’s longer market presence) using virtually every mainstream programming language and quite a few non-mainstream programming languages.

Although FIRST LEGO League rules prohibit teams from using any programming language besides the official software, I thought it would be interesting and possibly more efficient to use a text-based language to test and characterize sensor and actuator components.  If nothing else, following Faber College’s maxim “Knowledge is Good”.


An interesting candidate was JavaScript for the eV3 since JavaScript is one of the most popular, rapidly evolving and fastest growing languages around because it is embedded in nearly every connected brower-based device.  Unfortunately, it is far more developed for the NXT than the eV3 (in alpha stage) which appears to only have rudimentary control via a node.js package built into a custom linux OS booted from the eV3 microSD card.

There is a similar problem with LeJOS, a custom Linux OS booted from the eV3 microSD card as well.  LeJOS has only recently been released in beta form and isn’t ready for prime time programming of the eV3 just yet.



A good candidate is ROBOTC which allows users to program their eV3 with C-like syntax.  In addition, it comes with a number of great add-ons like an interactive debugger and virtual robot & world scenarios that can also be programmed.  It also works with other systems like the the Arduino and VEX system.  The downside is that it costs $50/$80 for a user for a year/perpetual license.

One of the best candidate I found is ev3dev which allows users to program their eV3 using a variety of popular and high level programming and scripting languages including Python, Node.js, Ruby, and Lua.  Again, simply copy a Linux image with ev3dev to a microSD card and boot the eV3 to load the ev3dev programming system.  eV3 commands can be mediated though simple Linux system file writes.  Here is a Youtube video that demonstrates a web-based ev3dev interface controlling an eV3 robot.



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s