New grunt-based build system
The biggest change in this release is that grunt is now used to build Breakout. This is a huge improvement over the previously cobbled together system. Anyone interested in modifying the breakout source files or contributing to BreakoutJS development will now have a much easier time. Just install nodeJS and grunt-cli then run
npm install and you’ll be all set. See Breakout/build/README.md for instructions and details.
Now includes both dev and minified files
Breakout/dist/ directory now includes dev (Breakout.js) and minified (Breakout.min.js) versions of each file. Previously only minified versions were available but the filenames did not include “min”. All of the example files have been updated to reflect this change, but you’ll also want to update any of your applications to use the minified files (change Breakout.js to Breakout.min.js). Your apps will continue to work if you don’t change the filename, but you’ll be including the much larger dev files. The dev files are convenient for debugging.
Examples now work with both servers
All example files now include the socket.io client library. This means all of the examples will now work with the command line (nodeJS) version of breakout server without modification. However the side affect is that if you use the GUI version of Breakout Server you’ll see an error since there is no socket.io file to load (since you’re not using node). This error does not adversely impact your application though. It was the only way I could get the examples to work with both versions of breakout server.
See the change log for additional updates.
This release includes performance improvements for both Breakout Server (GUI) and the headless node JS version of breakout server.
The node JS server was also broken as of node JS version 0.10. This issue has been resolved but you may need to upgrade to node JS version 0.10 or greater and be sure to rerun
npm install from the Breakout/node_server/ directory to update the npm modules.
If you have been running Breakout Server from your Applications directory or another directory other than Breakout/ be sure to replace it with the server included in the Breakout v0.2.3 download.
Other changes include a reduced startup delay (time to launch after a browser reset) and the /sensors/temperature.html example has been updated to use the TMP36 sensor in place of the LM335 sensor.
The source code for the Java-based Breakout Server has also been moved from Breakout/server/ to a new repository.
This release fixes a bug in Breakout Server that was preventing any serial ports other than the first port in the drop-down list from being selected.
Most of the changes were under the hood. IOBoard was significantly refactored. Unit tests were added for the core Breakout files (I know… I know… but better late than never). Unit tests and lint checks are run automatically as part of the build process (Breakout/build/) so if you make any contributions make sure unit tests and lint checks pass before submitting code. See the test readme for more info. Tests are not included in the Breakout release download, they are only included if you clone the source or download a the v0.2.1 tag from github.
Some notable changes:
- A new method
getAnalogPinCountwas added to IOBoard to report the number of analog pins.
- A new getter
statewas added to Pin in order to report the current state of the pin. This is useful if you are running multiple client applications against a single board and want to inquire about the state on a particular pin on the board. For example if another client application is setting PWM on the board, you can call
queryPinState(refToPinObject)and listen for the response. Then you can check the pin state to get the pwm value set by the other client application. See the docs for Pin.state for more info. Also note that pin.value is not = pin.state.
removeFilter(filterToRemove)method was added to Pin to remove a specified filter from the Pin object.
- Example files can now be opened directly (double-click on html file) in addition to being loaded for a server.
- A new example was added to Breakout/custom_examples/ to demonstrate sending a JSON string from the Arduino to the client application using Firmata sendString. See custom_examples/simple_json and the corresponding Arduino sketch in custom_examples/sketches/.
- Applications using custom firmware can now also make use of system reset callbacks. If you had previously writing custom firmware, note that you should update your code to listen for IOBoard.READY rather than IOBoard.CONNECTED see custom_examples/simple_json.html.
See the change log for the full list of updates.
The biggest change in this release is a move to AdvancedFirmata. AdvancedFirmata will enable new features to be introduced faster than they were with StandardFirmata. AdvancedFirmata is included with the Breakout distribution. You’ll find it in Breakout/firmware/AdvancedFirmata/. Open the AdvancedFirmata.ino file in the Arduino IDE (version 1.0 or higher), compile and upload to your board. AdvancedFirmata is also available separately on github.
Breakout 0.2.0 adds stepper motor support. Examples are included for driving stepper motors in 2 wire and 4 wire configurations as well as using the EasyDriver. See the examples in Breakout/examples/actuators. Schematics for wiring up stepper motors are included on pages 11 – 13 of the schematics.pdf file (Breakout/examples/schematics.pdf or breakoutjs.com/examples/schematics.pdf).
The Breakout/server/ directory has also been updated. The server for each platform (Mac, Win and Linux) is now in a folder. There are also separate builds for Win 32 and Win 64. The default webserver root has also changed to ../../ since the platform folders added an additional level of depth. However it’s best to go to the Settings panel in the Breakout Server application and set your webserver root by choosing the root directory with the file chooser. An eclipse archive of BreakoutServer is also included (if you clone Breakout from github – the server source is not included in the download).
See the ChangeLog for the full list of updates.
This release includes a number of contributions by Fabian Affolter. See the change log for a list of all changes.
Some highlights are an examples index page. You’ll find this in Breakout/examples/index.html. This makes it much easier to run the examples from your PC or a mobile device (especially much easier on a smartphone). A few more examples have also been added to the /examples/getting_started/ directory and a new schematic is available on page 3 of /examples/schematics.pdf that can be used for all of the getting started examples.
The nodeJS server has been updated. You can now add command line options when starting up the server. If you have been using the nodeJS based server (in Breakout/node_server/) please note that the default port has been changed from 8080 to 8887. Also you no longer set the 3rd parameter of the IOBoard constructor to true when using the nodeJS server. Now simply including the socket.io client library indicates the intent to use the nodeJS server rather than Breakout Server. See the wiki page for more info on using the nodeJS server. I also hope to create an npm package for the server in the near future.
Breakout v0.1.6 is now available. This version adds a few new examples, adds the fritzing files used to create the schematics, and fixes an issue with the accelerometer.html example in Breakout/examples/processing_js/.
You will find 3 new examples in Breakout/examples/device_sensors/ that demonstrate how to use the HTML5 DeviceMotion and DeviceOrientation APIs (if your mobile device supports these APIs) to control the RGB and Hue values of an RGBLED and a BlinkM RGBLED module. You will also find 2 new examples in Breakout/examples/getting_started/ (analog_input.html and simple_led.html) contributed by Fabian Affolter.
If you are updating from a previous version, note that the Breakout Server application has not changed since v0.1.1 so if you want to make updating easier you can continue to use your existing version of Breakout Server. If you have not already, move the Breakout Server application to your Applications directory (or elsewhere outside of the Breakout directory), then launch the application, click on the Settings tab, click on Choose New Webserver Root, then navigate to your Breakout directory, highlighting the Breakout folder then click Choose. I will make an announcement when any changes are made to the Breakout Server application. Until then you can continue using the existing version rather than extracting the files from Breakout/server/ each time an update to the Breakout library is released.
Update 7/18/12: The changes described here have been integrated into the Breakout v0.1.6 release. Please download 0.1.6 or clone the master.
The Breakout examples have been updated to be more mobile friendly. If you have cloned Breakout from github you can pull the latest master branch to get the updated examples. If you downloaded the Breakout release from the Breakout website or from the github site, you can download breakout_examples.zip from the github Downloads page and overwrite the existing examples folder in your Breakout/examples/ directory.
In the updated examples, the IOBoard constructor is now passed location.hostname rather than “localhost”. This enables the example to be viewed on mobile devices as well as other computers on the same network as the computer running the Breakout Server or nodejs-based server. If you are hosting files on a separate computer than the one the Arduino (or other IO Board) is connected to, then you will need to update the IP address or hostname to that of the computer the IO Board is connected to.
The servo, dc motor and oscillator examples were also updated to view better on smartphones. The updated examples are being supplied separate from the full Breakout package at this time because no changes were made to the Breakout core so it’s easier just to swap out the example folder if you need the updated examples at this time.
A minor update to Breakout is now available that adds an example for using Breakout with an Arduino Leonardo board. See Breakout/examples/boards/leonardo.html in the Breakout v0.1.5 release. Also see the Leonardo wiring diagram on page 25 of Breakout/examples/schematics.pdf.
Adding Arduino Leonardo support required an update to the Firmata library that is included with the Arduino application. In order to use a Leonardo board with Breakout, you will first need to update the Firmata library in the Arduino application. See instructions here. This is an update to the Firmata library and is fully backwards compatible with the previous version of Firmata.
Download Breakout 0.1.5.
Breakout v0.1.4 is now available to download. This release fixes an issue with the fadeTo method of the LED and RGBLED objects. An issue with false release event triggers when connecting more than one button to pins 2 – 7 of a standard Arduino board has also been fixed. A DISCONNECTED event has been added to IOBoardEvent. This event is fired when the IOBoard is disconnected from the server.