Ardublockly is a visual programming editor for Arduino. It is based on Google's [Blockly][1], which has been forked to generate [Arduino](http://www.arduino.cc/) code.
Ardublockly is a visual programming editor for Arduino. It is based on Google's [Blockly][1], which has been forked to generate [Arduino][15] code.
The "ArdublocklyServer" Python package initialises a local server to be able to compile and load the Arduino code using the [Arduino IDE][2].
The `ArdublocklyServer` Python package initialises a local server to be able to compile and load the Arduino code using the [Arduino IDE][2].
This is all packaged in a self contained executable:
This is all packaged in a self contained executable desktop application for Windows, Mac OS X, and Linux:
![Ardublockly desktop program screenshot][desktop_screeshot]
## Features
* Generate Arduino code with visual drag-and-drop blocks
*Load the code to an Arduino Board
* Generates Arduino code with visual drag-and-drop blocks
*Uploads the code to an Arduino Board
* Useful "code block warnings"
* Compatible with a wide range of official Arduino Boards
*Runs on Windows / Linux / Mac OS X
*Works on Windows / Linux / Mac OS X
Ardublockly is still under development and a few features are not yet implemented. A to-do list can be found in the [TODO.md][3] file.
Currently tested under Windows with Python 2.7 and 3.4 and in Linux and MacOS X with Python 2.7.
## Online Demos
A demo of the current state of Ardublockly can be found in the following two links (to load the code into an Arduino requires Ardublockly to be executed locally):
The desktop application is available for Windows/Mac/Linux and runs as a stand-alone executable that can be downloaded from the [Ardublockly repository releases page][4] (once it is stable enough for a first alpha release).
You will also need the [Arduino IDE version 1.6 or higher][2].
In the meantime, you can test __UNSTABLE__ development builds automatically generated on these build servers:
## Installing
There is a packaged version for Windows that runs as a stand-alone executable and can be downloaded from the [Ardublockly repository releases page][4].
Installation instructions for developers can be found in [this Github repository Wiki][5]. This will work on Windows, Linux and MacOS X.
It also needs the [Arduino IDE version 1.6 or higher](http://arduino.cc/en/main/software).
If you prefer, the main software can be run with Python and a web browser only. Installation instructions for this "developer version" can be found in [this Github repository Wiki][5]. This will work on Windows, Linux and MacOS X, with Python >2.6 and >3.2.
## Running
...
...
@@ -45,6 +41,16 @@ It also needs the [Arduino IDE version 1.6 or higher](http://arduino.cc/en/main/
3. Configure Ardublockly to locate the Arduino IDE [following these instructions][6].
## Online Demos
A demo of the current state of Ardublockly main interface can be found in the following two links (to load the code into an Arduino it requires the full Ardublockly application to be downloaded and run on your computer):
The documentation, including installation instructions, configuration instructions, and developer information can be found in the [Ardublockly GitHub repository Wiki][7].
- [ ] Test server components in Mac OS X with python 2
- [ ] Test server components in Mac OS X with python 3
## Windows specific
## Python 3 specific
- [ ] When a sketch is send to the IDE using python 3 the following error is shown (tested on linux):
- [x] ~~When a sketch is send to the IDE using python 3 the following error is shown (tested on linux):~~
```
Can't convert 'bytes' object to str implicitly
There was an error manipulating the sketch data!!
...
...
@@ -20,12 +22,14 @@ There was an error manipulating the sketch data!!
## Server
- [ ] Serial port test code
- [ ] ServerCompilerSettings test module
- [ ] BlocklyRequestHandler test module
- [ ] SketchCreator test module
- [ ] Combine Arduino boards from code generator with Arduino boards offered for compilation
- [ ] Complete `compilerserttings` module unite test
- [ ] Complete `actions` module unit test module
- [x] ~~Complete `SketchCreator` module unit test~~
- [x] ~~Combine Arduino boards from code generator with Arduino boards offered for compilation~~
## Blockly general
- [ ] Expand `setWarning` to be able to buffer and manage several warnings per block (add an ID to a block of text)
- [ ] Implement the zoom feature from @carloslfu once matured
## Static typing
- [ ] logic_ternary block getType to defines type as that of its inputs
...
...
@@ -42,22 +46,26 @@ There was an error manipulating the sketch data!!
- [ ] Number blocks automatically trim unnecessary decimal digits "x.0 => x", change this behavior so that "x.0" can be set as a decimal
## Arduino related code
- [ ] Add information for other Arduino boards
## Arduino generator related code
- [x] ~~Add information for other Arduino boards~~
## Arduino blocks
- [ ] Add a way to select different Arduino boards (settings menu should trigger arduino generator board change)
- [x] ~~Add a way to select different Arduino boards (settings menu should trigger arduino generator board change)~~
- [ ] Code generator for lists into arrays
- [ ] A lot of blocks go through the entire block tree, which end ups being terribly inefficient. Maybe create a general pass through in the arduino.js file to check everything that needs to be checked in one pass.
- [ ] SPI spi_transfer also needs returns a byte back
- [ ] A lot of blocks go through the entire block tree, which end ups being inefficient. Maybe create a general pass through in the arduino.js file to check everything that needs to be checked in one pass.
- [ ] SPI pin reservation log needs to be refactored for the new board settings
- [ ] Create I2C communication blocks
- [ ] Update the serial print block to specify explicit type (hex, str, int, etc)
- [ ]
## Arduino web-app
- [ ] Edit toolbox fade out + visibility button fade in with a CSS animated change in height with overflow hidden
- [x] Add examples
- [x] Change js variables naming convention from current 'snake_case' to 'lower camel case' to comply with Google's js coding style
## Arduino front end
- [ ] ~~Edit toolbox fade out + visibility button fade in with a CSS animated change in height with overflow hidden~~
- [ ] Remove old IDE output text while waiting for a new verify/open/upload
# Future features
- [ ] Serial console in web app for comms with Arduino