Arduino goes lambda!

Welcome to the public beta release of Snap4Arduino!

What is it?

If you know Berkeley Snap (BYOB) and Arduino, you might already have guessed this is a combination of both.

Snap4Arduino is a modification of the Snap visual programming language that lets you seamlessly interact with almost all versions of the Arduino electronic prototyping board.

A short example of what you can do with it:

Snap4Arduino is being built by the same team that developed S4A, with the collaboration of Ernesto Laval.

Briefly, these are some Snap4Arduino strong and weak points:

The Good

  • Almost all Arduino boards supported (including Mega and Nano!)
  • Auto-configurable pinouts so you can take advantage of your board's full capabilities
  • Faster (7x!) response times than S4A
  • You can interact with as many boards as you want at the same time
  • Lets you Build Your Own Blocks
  • Desktop-based. No need for intermediate servers or middleware!
  • Uses standard Firmata firmware
  • Translation of simple scripts into Arduino sketches

The Bad

  • Not compatible with S4A

Nice! I want to try it!

There are currently versions for GNU/Linux, MacOSX and Microsoft Windows available. The project and all its components (including Snap) are registered under public free software licenses (GPL and MIT), so you can download the sources and pretty much do whatever you want with them!

Please download the version that matches your operating system:

Microsoft Windows



GNU/Linux (64 bits)

Thanks to Frank Hunleth for the 64b version!
Current version: 1.0.5 beta, released on 27/07/2015

And how do I get it to work?

Snap4Arduino requires that you have StandardFirmata installed in your board.

To do so, follow these simple steps:

  1. If you haven't already, download and install the Arduino environment by following the instructions on
  2. Open the Arduino IDE, go to File → Examples → Firmata → StandardFirmata
  3. Connect your board to a USB port in your computer
  4. In the Tools menu, select the board version and the serial port where the board is connected
  5. Go to File and click on Upload

Snap4Arduino will now be able to interact with your board.


You just need to unpack the package. The executable is Snap4Arduino.

In case it complains about a missing library, you can sudo run the script, which will attempt to automatically take care of the issue.

In case you are running a 64b system, you will need to enable multiarch and install the i386 versions of a couple libraries as well.

If you would like to help us build packages for different distros, please don't hesitate to write to us.


Unzip the package and run the Snap4Arduino package. If you wish, you can move it to your Applications folder so you can access it as a regular app.

Microsoft Windows

Just unzip the package and run the installer.

Happy prototyping!

I want to mess with your code

Sure, here's our GitHub repo:


Please feel free to send us your pull requests and participate in reporting, fixing or commenting on bugs!

Does device X work with Snap4Arduino?

Maybe. You can modify Firmata to have it work with a wide variety of devices that, by default, are not supported.

Check out this blog post if you want to do it yourself.

Additionally, we will be publishing a series of modified Firmata versions and their corresponding Snap4Arduino block libraries here, so if your device shows up under this list you can just download the extension and start prototyping:

Who's behind this?

Snap4Arduino is being actively developed at Citilab by the Edutec Research Group:

We also count on the inestimable collaboration of Ernesto Laval, who has helped shape the project and contributed numerous features and bugfixes.


  • Catalan: Bernat Romagosa
  • Spanish: Ernesto Laval
  • German: Mareen Przybylla
  • Chinese (simplified): Steven Tang
  • Italian: Alberto Firpo
  • Czech: Jan Tomsa

I found a bug!

I bet you did! Please take in account this is still a beta version. Bugs are hiding in the shadows waiting for you to find them, and if you do find one we would appreciate it so much if you reported it.

If you're a GitHub user, please use the official issue tracker. Otherwise, you can always fill up the following email template and send it to us. If you think it can help, you can also attach a screenshot.

Operating System:

Snap4Arduino version:

Steps to follow in order to reproduce the problem:

Additional notes:

Known issues

You can check out the status of all open issues in out official issue tracker. Please feel free to comment on them, and remember you can always contribute to the project by sending us a pull request.

Remember, this is a beta version we're building and maintaining in our very scarce free time, but we'll get there and fix all of these.