Find all your DIY electronics in the MakerShed. 3D Printing, Kits, Arduino, Raspberry Pi, Books & more!

MAKE subscriber Michael writes in to tell us about Toolduino, a GUI program that lets you access all of the pins on your Arduino through your computer. To use it, you have to flash a special sketch to your Arduino that implements the Firmata protocol, which allows a connected computer to control all of the pins on the microcontroller without reprogramming it. Then, all you have to do is run the Toolduino program to start interacting with things connected to the ‘duino. This should help you get the interaction parts of your project worked out quickly, after which you can migrate to an Arduino sketch, or just stick with Firmata and write your program in Processing.



  1. theophrastus says:

    It’s probably a stupid question, but in order to do what it seems to be doing why doesn’t it need a wire between every in/out pin and the host computer?

    1. jdege says:

      Because the host computer is communicating with a program (they call it a sketch in this domain) running on the Arduino via the USB/Serial interface. The program on the Arduino can control and observe the digital and analog pins and report back observed data via that same interface.

      1. theophrastus says:

        sketch does its business through the USB port. so are they depending on sketch to ‘know’ what the second PWM output port, for example, is doing? and as such, isn’t that like… meta-simulation?

        1. jdoege says:

          You are saying “sketch” but not quite correctly in this context. A “sketch” is a program you (or someone) creates to run on the Atmel microcontroller on the Arduino Duemilanove board. The USB port on that board is attached to an FTDI USB to Serial chip that in turn communicates with the Atmel microcontroller for the purposes of both configuring the microcontroller and, after configuration, communicating with it.

          What is occurring here is that someone has written a sketch to run on the microcontroller that is also configured to communicate over the serial channel, back through the USB port to the PC. They have also written a program that is, in turn, capable of communicating over the USB port, through the serial channel to the microcontroller. The program on the PC has the nifty user interface with a picture of the board. It send commands to the Arduino to either set a pin or read a pin’s state or value. The Arduino responds to these commands appropriately and also sends back the requested data.

          While the computer probably remembers what was written to the outputs, it really is not simulation. It is physical reality. In a nutshell, all this really is, is a pretty user interface that allows you direct control over the pins on the Arduino when it is connected to your PC. I don’t think you can load and run your own sketch and have the PC represent what is happening on the pins, here.

  2. GuruSantiago says:

    Toolduino makes it even easier to get project prototyped. I love it.

    Checkout my Arduino Projects:

    Follow me on twitter to learn more about Arduino and Electronics @ElectronicFun

  3. David Bono says:

    It would be cool if Toolduino could act as an Arduino “debugger” – download a sketch from your desktop to the Arduino / Freeduino device, and then use a desktop GUI to set breakpoints, single-step, inspect the AVR state, etc.

    1. jdoege says:

      This seems quite feasible for the Arduino folks to implement. The Atmel ATmega328 has an on-chip debugging system that should support everything you describe for object code. It uses the reset pin for communication:

      They have a system to support programming and debug:

      So far as I know, the Arduino programming environment does not have this functionality.

      1. jdoege says:

        They do, however, bring this port out on the Duemilanove board. It is the 6 pin header on the far right of the board labeled ICSP.

      2. Matt Mets says:

        I’d love to see debugger support in the Arduino, but it might start to make things much more complicated :-). For starts, you will need a debugger to plug into the ICSP, which sort of defeats the purpose of having a serial bootloader in the first place. You could /probably/ debug your project directly using gdb (, which I think supports some of the AVR prototyping tools such as the Dragon (

        There are other hobbyist systems that do support debugging through their interface, such as ROBOTC from the Robotics Academy (

        Another possibility might be to use a higher-powered processor that is Arduino compatible, such as the MAPLE, and use the extra processor speed and memory to run a background debug module. It seems possible from an engineering perspective, however I think the real value would be in making it work unobtrusively.

In the Maker Shed