Snap! (formerly BYOB) is an extended reimplementation of Scratch that allows you to Build Your Own Blocks™. It also features first class heterogeneous lists, first class procedures, and continuations.
These added capabilities make it suitable for a serious introduction to computer science for high school or college students.
Snap! is presented by the University of California at Berkeley. It was developed by Jens Mönig, with design input and documentation by Brian Harvey and contributions by students at Berkeley and elsewhere.
There are currently versions for GNU/Linux, MacOSX, Microsoft Windows and Chromebook available.
The project and all its components (including Snap!) are registered under public free software licenses (AGPLv3 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. Current version: 1.2.3, released on 03/05/2017
Snap4Arduino requires that you have StandardFirmata installed in your board.
To do so, follow these simple steps:
You just need to unpack the package. In most window environments you can just click on Snap4Arduino. If this fails, you can always run ./run from the command line.
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.
Just unzip the package and run the installer.
On a Chromebook, get it from the Chrome Web Store. In a desktop computer with a Chrome browser, unzip and drag-and-drop the CRX file into your
The embedded command line version works in any GNU/Linux based machine, including embedded platforms and single board computers. New generation Arduino boards like Yun, Tian or Industrial 101 can run this version right inside the board, and if you have a regular Arduino and any kind of Gnu/Linux based single board computer, you can always have the latter be the host computer to the Arduino board, giving autonomy to your project without having to modify your Snap4Arduino program at all.
Check out this section of our GitHub wiki.
Just dowload the APK from your device and install it normally. Make sure your device allows installing apps outside of Google Play.
If you just want to use it, follow the instructions in the Plugin section. To install it in a server of yours, unzip the package and serve the contents of the www folder.
Here's a couple of fun things that can be done with Snap4Arduino, most of them recorded on a Hi-Tech last generation potato camera.
You can find our GitHub repo at Snap4Arduino@GitHub. Please feel free to send us your pull requests and participate in reporting, fixing or commenting on bugs!
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:
Snap4Arduino comes with a built-in tiny HTTP server that mimics (and extends) the one Scratch 1.4 had. This means you can control your Snap4Arduino application from any computer, mobile phone, tablet or any other network-enabled device in the same network. In the following sections, the word IP refers to the IP address of the machine that has Snap4Arduino running on it.
Point your browser to http://IP:42001/broadcast=MESSAGE
This will broadcast the message MESSAGE to Snap4Arduino, where you can capture it with a regular When I receive [message] block.
Point your browser to http://IP:42001/vars-update=VARIABLE-NAME=VARIABLE-VALUE
This will set the variable called VARIABLE-NAME to the value VARIABLE-VALUE. You can also send a POST request to Snap4Arduino to update a variable.
Point your browser to http://IP:42001/send-messages
This will show a list of all message names for which Snap4Arduino has When I receive [message] hat blocks.
Point your browser to http://IP:42001/send-vars
This will show a list of all variables defined in Snap4Arduino, along with their current value.
Point your browser to http://IP:42001/send-var=VARIABLE-NAME
This will return the value of the variable ready for you to use, no string manipulation needed.
Point your browser to http://IP:42001/stage
This will render a real time version of what's going on in the stage. Like demonstrated in this video.
A web-based version is currently in the works. As with the desktop version, you need to have Firmata loaded into your board.
You will need to install a Chrome companion extension, that you can download here. Please note that you cannot install it straight from the downloaded file icon. Instead you need to:
When you are done, you can test it out live here.
If you prefer to run it in your own server, use this downloadable version.