Go Down

Topic: Arduino 0013 released. (Read 12431 times) previous topic - next topic


I just uploaded Arduino 0013.  Get it from the download page.

Changes include:

[documentation / examples]
* Adding examples for Parallax Ping Sensor and Memsic 2125 accelerometer.

[core / libraries]
* Adding support for printing floats to Print class (meaning that it works
 in the Serial, Ethernet, and LiquidCrystal classes too).  Includes two
 decimal places.
* Added word, word(), bitRead(), bitWrite(), bitSet(), bitClear(), bit(),
 lowByte(), and highByte(); see reference for details.
* Working around problem that caused PWM output on pins 5 and 6 to never go
 to 0 (causing, for example, an LED to continue to glow faintly).
* Removing cast macros, since function-style casts are a feature of C++.  This
 should fix contributed libraries that broke in Arduino 0012.
* Modifying pulseIn() to wait for a transition to start timing (i.e. ignoring
 any pulse that had already started when the function was called).
* Fixing bug in random() that limited the ranges of values generated.  Thanks
 to Mikal Hart.
* Modifying delay() to pause for at least the given number of milliseconds.
* Fixing bug in Ethernet library that interfered with use of pins 8 and 9.
* Originating each outgoing network connection from a different port (in the
 Client class of the Ethernet library).  Thanks to Paul and joquer.
* Updating ATmega168 bootloader to work with standard distributions of avrdude
 (responding to signature requests made with the universal SPI command) and
 correctly store EEPROM data.  Thanks to ladyada.
* Adding support for the ATmega328.  The upload speed is 57600 baud, so you
 may need to edit boards.txt or reburn your bootloader if you bought an
 ATmega328 w/ bootloader from adafruit or other supplier.

* Omitting unused functions from compiled sketches, reducing their size.
* Changing compilation process to allow for use of EEMEM directive (although
 not yet uploading EEPROM data).


Feb 06, 2009, 08:34 pm Last Edit: Feb 07, 2009, 10:45 am by retrolefty Reason: 1
Thank you for all your effort in this project, I'm sure it's a labor of love, but a labor still  ;)

I editied the board.txt to change for my 328 to 19200 baud rate and it came right up. Now I've got to figure out if it's possible to make the changes that my version 12 has to support my Sanguino chip, but that may be beyond my ablities. I was using a modified version 11 IDE when working with my 328 and version 12 IDE when working with the Sanguino. I was hoping that I could work all in one IDE version when 13 was released but we will have to see. At least I can leave version 11 now.

Thanks again

EDIT: Well I made the changes to 13, adding Sanguino stuff and it works! Finally I can use 168, 328 & 644 all in one version. I'm happy!



Thanks for the great work.

Waiting patiently for AMD64 :-)


Thanks to all who brought us this new release.   :)

A few preliminary findings when compiling one of my biggest sketches:

I got the dreaded "byte does not name . . ." when I compiled with 0013.

So I included "WProgram.h" in the main tab and it compiled fine.

(I also found I couldn't include "WProgram.h" and compile with 0011.

The big news for me was, contrary to everything I know about the software word, my sketch was smaller under the new version!  :D (It went from 13934 to 13394 - 540 bytes less! Yahoo!)

Thanks again for the new release. Now I don't have to feel guilty about skipping 0012.
"Data is not information, information is not knowledge, knowledge is not understanding, understanding is not wisdom."
~ Clifford Stoll


Nice one!

Ive just tried the linux version on Ubuntu 8.10.

One bug.
The only problem I found was that /hardware/tools/avrdude.conf didnt contain the 328p stuff.
Once I added that it worked a treat.

Now I can get on with it without having to use the dreaded windows.



Having trouble opening a second connection to the same server on Arduino 0013. Exact same code works fine in Arduino 0012 with the updated Ethernet library.

(Lots of comments because this code was intended as an example for students.)

Code: [Select]
// by Rob Faludi, www.faludi.com

#include <Ethernet.h> // import the Ethernet library for Arduino

byte mac[] = {
 0x02, 0xAA, 0xBB, 0xCC, 0xDD, 0x01 }; // unique id for your network interface device
 // (mac addresses starting with hex 2 indicate locally administered address)
 // http://en.wikipedia.org/wiki/MAC_address#Address_details
byte ip[] = {
 192,168,1,20 }; // local ip address, set for your network
byte server[] = {
 216,38,50,214 }; // Arduino.cc address
int port = 25; // port to connect to (SMTP)

Client client(server, port); // initializes your client object

#define CONNECT_BUTTON 2 // *** switch connects to _ground_, no pull-up required ***
#define CONNECT_LED 3 // lights up when you are connected to the server

boolean lastPress = HIGH; // remembers the state of the connect button

void setup() {
 // Activate an internal pull-up resistor for the switch. For more info see:
 // http://www.arduino.cc/en/Tutorial/DigitalPins

 Serial.begin(9600); // the serial port is used for debugging information
 Serial.println("Connect Disconnect Test v1.00");
 Ethernet.begin(mac, ip); // initialize everything needed to use Ethernet

void loop(){

 Serial.println(client.status(),HEX); // this shows the Wiznet status information, useful for debugging
 delay(100); // don't show the status information too often

 if (digitalRead(CONNECT_BUTTON)==LOW && lastPress==HIGH) { // if the button switches states
   if (client.connected()==false) {
     connect(); // connect if we weren't connected before
   else if (client.connected()==true) {
     disconnect(); // stop the client process and attempt a disconnect
   lastPress = LOW; // remember the button state
 if (digitalRead(CONNECT_BUTTON)==HIGH && lastPress==LOW) { // if the button switches states
   lastPress = HIGH; // remember the button state


void connect() {
 if (client.connect()) { // try to open a connection and see if it worked
   Serial.println("connected"); // ...and let us know if it worked
 else {
   Serial.println("connection failed"); // let us know if the connection fails
   disconnect(); // ...and disconnect if it does

void disconnect() {

// Serial.println(client.status(),HEX);
 digitalWrite(CONNECT_LED,LOW); // douse the lights



Feb 07, 2009, 06:07 am Last Edit: Feb 07, 2009, 06:37 am by cliff52 Reason: 1
Is it possible the avrdude.conf in the 0013 Linux package has not been upgraded to include the Atmega328p?  I get avrdude errors when I try to use it.  I'm using Ubuntu Intrepid.
Update - I checked the avrdude.conf in arduino-0013/hardware/tools and it doesn't have a m328p section.  the same file in the windows package does have it.  I got my system to work by replacing avrdude.conf with the one from the Windows package.
My system had copies of avrdude.conf in /etc; in the arduino-0013 directory set; and in /usr/local/etc, so I had to make sure all of the them were replaced, since I wasn't sure which one was being used.


Feb 07, 2009, 06:22 pm Last Edit: Feb 08, 2009, 07:45 am by RazzleDazzle Reason: 1
Some questions about this release.
  • Why are there two tarballs for linux 0013 (-linux and -linux2)?
  • Why do both linux tarballs differ from SVN? (No build subdirectory, for example)
  • Why is there no 0013 tag in SVN?
I am writing an updated ebuild for Gentoo Linux and these issues are preventing me from referencing an authoritative stable and full-featured source tree for this release.

Perhaps these are just oversights, in which case I would like to politely request they be addressed asap.  Alternatively, I would welcome corrections of any misunderstandings I might be experiencing.



The linux2 version is an updated release in which the ATmega328p definition has been added to avrdude.conf (as with the Windows and Mac OS X releases).  The linux release is a "binary" release, so it doesn't include much of the SVN directory.  I'll tag the release in a second.


This is really minor, but the announcement on the arduino homepage lists the release date from 2008 still:

2008.02.06 Arduino 0013 is now available (release notes): Windows, Mac OS X, Linux (32bit).


The linux release is a "binary" release, so it doesn't include much of the SVN directory.

Would you please consider uploading a full source tarball for the release as well, to help source-based distros fetch more easily when installing?

I could specify the SVN tag URL in the ebuild (and I'll have to otherwise), but that would unnecessarily add a subversion dependency to the package.

The linux2 version is an updated release in which the ATmega328p definition has been added to avrdude.conf (as with the Windows and Mac OS X releases).

Could updated releases have a minor version bump and be called something like "0013.1" for all platforms instead?

I could wrangle with the "2" as a special case designation (and I'll have to otherwise), but the process is cleaner if minor version designations are consistent.

I'll tag the release in a second.

I see that you have.  Thanks!

I really appreciate all that has gone into this release, and I'm eager to help get it into the hands of lots of Gentoo users in the easiest way possible for them.



The release notes for 0013 says:
* Added word, word(), bitRead(), bitWrite(), bitSet(), bitClear(), bit(),
 lowByte(), and highByte(); see reference for details.

Searching the included and online versions of reference doesn't have these commands.  Could that be posted here?

Also, any chance of having a bootloader for the Arduino Mini Pro 16mhz added next time around?

Paul Garcia


As far as I can tell, the Arduino Pro Mini 16MHz is identical to a Diecimilia or Duemilanove in all fuses and speed parameters in the boards.txt file.

The only difference is that you need an FTDI attachment to do the sketch upload.  If you need 5V support from the SparkFun FTDI Basic Breakout, modify it this way:


Ed -

Would you by chance know of any villages looking for a new idiot? It would appear that I just qualified.

Here I've been studying the Mini Pro home page and the getting started material. Based on your suggestion under the FAQ, I had tried the decimille selection, and got the "AVR Dude doesn't recognize" message. So I keep digging, and asking....

Never even occured to me that the FTDI basic breakout was only putting out 3.3 volts! Use 5V, and guess what? Works just fine. And you know what? On the product description page for the 5V 16 mhz Pro mini, you know what the second sentence is? "...select 'Arduino Diecimila' within the Arduino software...".

Dumb, dumb, dumb!

Thanks for your patience.
Paul Garcia  


Any ETA on Arduino 0013 for Linux AMD64 ?



Go Up