Frequently Asked Questions
Where there are questions, there are usually answers. (If you have one, try editing this page and adding a new question to the bottom).
This is broken! I found a bug! Nothing is happening!
Most answers can be found on the forum page, or in the reference for the function or library that you're using. Please read them!
Where can I get Wiring software/Wiring hardware?
The software is free to download and use. Just visit the download page.
As of Wiring 1.0, the IDE can be used with pretty much any of the Atmel AVR 8 bit microcontrollers. All you'll need to do is build your own board.
But if you don't want to do that, then you can get Wiring boards from a variety of locations around the globe.
The Wiring hardware is fully assembled, tested and ready to use. The Wiring hardware is RoHS (Restriction of Hazardous Substance Directive) compliant.
Will the Wiring hardware work stand-alone? (without being connected to a computer?)
Yes, the Wiring hardware can be used as a standalone system. Once the user program is uploaded into the hardware, the program stays in memory even when turned off, and is restarted every time the board is powered.
Will the Wiring software work only with the Wiring hardware?, how often do I have to do a hardware upgrade?
Not only. The Wiring software can also be used with any generic microcontroller board based on the ATMEL atmega128, atmega1281 and atmega2561 microcontrollers with the proper pin numbering translation when programming. There are a wide number of boards available in the market based on this microcontroller. Wiring can be ported for different kinds of microcontrollers, the Arduino project also initiated at the Interaction Design Institute Ivrea implemented the Wiring language for smaller microntrollers of the ATMEL family. Of course the Wiring hardware is the best option for beginners, special care was taken in its design, power balance, robustness, usability and presentation for the target audiences. The Wiring project was designed in a way it is still and will be possible to use the hardware manufactured from the beginning (even the first wiring board ever made) with the latest software version being environmentally friendly, avoiding as long as possible entering in a race for regular hardware obsolescence and upgrades corporations have accustomed us.
How do I get started?
Double click the 'Wiring' application (on Linux, type ./wiring). Select something from File -> Examples. Hit the Run button (which looks like the play button on a VCR or tape deck). then Upload to your wiring hardware, Lather, rinse, repeat as necessary.
More information on using Wiring itself is can be found in the environment section of the reference.
Again, if you're having trouble getting Wiring to start, check the forum or the reference for possible solutions.
How do I learn to use Wiring?
When using the examples (or trying someone else's code), if you run across a function that you're not familiar with, highlight the word, right-click (ctrl-click on the mac), and select "Find in Reference" to open the reference page for that keyword. This can be helpful for understanding how programs work.
If you're stuck or want to talk about your work, head over to the forum section of the site to find open minds and helpful peers.
I downloaded a new version and my code no longer works!
Read the revisions.txt file that's included with the download (or use that link to read the online version). Things change between releases, and something may have broken your code, or your code may be using something unsupported, which no longer behaves.
I'm trying to run some code I found on the web, and it doesn't work
The code may be using syntax from an older release of Wiring. Information about updating your code can be found on the changes between releases page.
On what platforms can I run Wiring?
We release versions for Windows, Mac OS X, and Linux. We test extensively on Mac and Windows platforms, but not much on Linux.
More detailed information for the specific platforms can be found in the Environment section, which also includes information about running the Wiring Development Environment on other platforms.
Is Wiring Open Source? How 'bout some code?
The Wiring development environment is released as open source under the GPL. The export libraries (also known as 'core') are released under an LGPL license, which means they can be used as a library and included in your project without you having to open up your code (though we encourage people to share anyway). But if you make changes to core, you have to submit back to us. More information about the GNU Public License can be found at www.gnu.org/copyleft/gpl.html.
Wiring also relies on other open projects, namely:
- the jEdit Syntax package, which is public domain
- ANTLR language recognition tool distributed under a BSD license
- GNU avr-gcc compiler and binutils
- avr-libc, distributed under a modified BSD license
- the UISP, AVR In-System programmer (GNU General public license)
- the AVRDUDE, AVR Downloader/UploaDEr (GNU General public license)
- as of release 020, we use a slightly modified version of launch4j to create wiring.exe on Windows.
- the quaqua library, which makes Java applications look more like Mac applications when running on OS X.
- for sure others, they will be added as soon as possible
The source code is stored on our developer site, and more information about its use can be found over there. Use: svn co svn://aeon.uniandes.edu.co/wiring/trunk/wiring to grab a copy of the source.
We need help! Having shared all the code and made it available for free, doesn't it just make you want to pitch in and help? We have too much work to do and can't keep up with things. We love to see bug fixes, new libraries, etc. If you're interested, contact us via the forum section of the site.
The source code for the libraries is also included with the Wiring software itself, should you want to modify them for your own use. If you want to modify the library for your own use.
The following are no longer in use, but we still owe them because they helped us along in earlier releases:
- the Jikes compiler, which is covered by the IBM Public License.
- com.ice.jni.registry from the Giant Java Tree (GPL license)
We like it when people include a "Built with Wiring" note with a link back to the site, since it helps create interest and brings in more people to the project. We don't/can't/shouldn't require it, but it makes us happy because the project is free and this is one way you can help give back to us.
You can distribute your sketches all you want, and commercial projects are just fine too, however we place no warranty on the software (see the download page for the license shenanigans).
What's with the version numbers?
Releases are numbered with four digits.
Why is it called "Wiring"?
The name Wiring originated as the action of "connecting things one to another" and also to its origin from the Processing project.
What is the sketchbook? What do you mean by sketches?
We think most "integrated development environments" (Microsoft Visual Studio, Codewarrior, Eclipse, etc.) tend to be overkill for the type of audience we're targeting with Wiring. For this reason, we've introduced the 'sketchbook' which is a more lightweight way to organize projects. As trained designers, we'd like the process of coding to be a lot more like sketching. The sketchbook setup, and the idea of just sitting down and writing code (without having to write several pages to set up hardware initialization code, etc) is a small step towards that goal. The Wiring sketchbook is based on the Processing software sketchbook with a few additions for the hardware support.
The idea of just writing a short piece of code that runs very easily on a microcontroller (via a little upload button) the Play (verify code) button is a direct descendant of John Maeda's work in Design By Numbers, and our experiences maintaining it. (Yes, other languages and environments have done this first, but in our case, the concept is drawn from DBN).
Why sometimes Java like or C like or C++ like? Or why such a Java-esque programming language?
We didn't set out to make the ultimate language for hardware programming, we set out to make something that was:
- a sketchbook for our own work, simplifying the majority of tasks that we undertake,
- a teaching environment for that kind of process, and
- a point of transition to more complicated or difficult languages like full-blown Java or C or C++ (a gateway drug to more geekier and more difficult things)
At the intersection of these points is a tradeoff between speed and simplicity of use.
Java like makes a nice starting point for a sketching language because it's far more forgiving than C or C++.
Wiring is not intended as the ultimate environment/language (in fact, the language is just C/C++, but with a new hardware API along with some simplifications). Fundamentally, Wiring just assembles our experience in building things, and trying to simplifies the parts that we felt should be easier.
I know Java or C or C++, is this Java, C or C++? How do I use it that way?
Wiring code is converted to straight C++ code (using the "preprocessor") when you hit the Compile button. This also makes it possible to embed other C/C++ code in your sketches using the tabs, or use the object files from the Wiring distribution to develop your own sketches with other environments.
Wiring is a descendant of the Processing project and other initiatives at the ACG. Ben Fry and Casey Reas develop Processing and that experience provided the basis for the Wiring project. Arduino is descendant from Wiring and Processing. Arduino implements the Wiring language on its hardware platform, so code sketches work in both Wiring and Arduino as long as they are based in the language API.
Why Is Wiring Connecting to the Network?
After you double-click Wiring, it will check the site for updates. This is helpful so that we can keep people aware of the frequent updates to Wiring.
In so doing, it also sends a random number that identifies yours as a unique machine (but sends no personal information to us). This really helps us get a general idea of how many people are using the software, which is really important for things like writing grants so that we can keep Wiring free.
If the network connection causes you trouble, it can be shut off inside the Preferences window.
Why does SHIFT-BACKSPACE act like the DELETE key? How can I change it's behaviour?
Since Wiring version 0027, there is a new preference that will change the behaviour of SHIFT-BACKSPACE to simply BACKSPACE. Edit your preferences.txt file and add, or change, the following, if it doesn't already exist: (You can find the location of the preferences.txt file through File->Preferences)
Save the preferences.txt file, and restart Wiring.
Now, when you press SHIFT-BACKSPACE, you will delete the character behind the cursor.
NOTE: Only edit the preferences.txt file when Wiring isn't running (because Wiring will save the internal preferences to the preferences.txt file, overwriting any changes you may have made).