Arduino 0012 available.

Arduino 0012 is now available:

Windows: http://www.arduino.cc/files/arduino-0012-win.zip
Mac OS X: http://www.arduino.cc/files/arduino-0012-mac.zip

Linux version coming soon.

Release notes:

  • Added Arduino Nano to the boards menu.
  • Arduino Pro or Pro Mini (8 MHz) to the boards menu.
  • Added Firmata library by Hans Steiner and others. This provides a standard protocol for communicating with software on the computer.
  • Added an Ethernet library for use with the Arduino Ethernet Shield.
  • Added a Servo library based on the work of Jim Studt.
  • Added a LiquidCrystal library based on the work in the playground. It supports both 4- and 8-bit modes.
  • Improved millis(): it now overflows after 49 days instead of 9 hours, but now uses slightly more processing power.
  • Fixed reversing direction bug in Stepper library. (Thanks to Wayne Holder.)
  • Moved insertion of #include <WProgram.h> to after any comments and #include statements in the main sketch file. This means that an #include <stdlib.h> now works.
  • Upgraded to newer versions of avr-gcc (4.3.0) and avr-libc (1.6). This provides support for newer Atmel chips, but may increase the size of sketches.
  • Allowing per-board specification of the upload.using preference, allowing upload via bootloader to some boards and via a programmer to others.
  • Added return values to some functions in the Wire library to allow for better error handling.
  • Fixed random() to work with long values.
  • Creation of an abstract Print base-class to allow Serial, SoftwareSerial, and LiquidCrystal to share code for print() and println().
  • Incorporated ladyada's watchdog timer mods to the bootloader source, but only compiling them in for the Pro and Pro Mini (because they are included in the bootloader being burned on the boards by SparkFun).

Woo hoo! Thanks, mellis.

M

Brrrravo, this will definitely drive a new batch of innovations! ^^

  • Allowing per-board specification of the upload.using preference, allowing upload via bootloader to some boards and via a programmer to others.

Awesome! Congrats to all for the great work.

woot! ;D

Nice work!

I noticed that at least for the Mac build the title bar says "Arduino - 0012 Alpha". I'm guessing this was just not changed and this is intended as a full release.

Is this right?

Why is it the linux version always seems to lag behind? Shouldn't it be easier to develop for linux than other platforms? I hate to think about how hard it is to programs for mswindows

Developing for Linux is not too bad (although I really like Xcode on the Mac). Unfortunately, installing Linux on my computer is not quite so easy.

Anyone want to put together the Linux build? It should be pretty easy.

Mellis:

You could install VMWare Player in your Windows computer, then create a Linux virtual machine using Easy VMX and you can have Linux as a guest in your Windows. VMWare uses some files in you Windows computer and the Virtual machine runs independently from your Windows.

Juan C.

You might also want to look at VirtualBox for OS X--it's a (mostly) open source project that I've successfully installed Ubuntu 8.04 on. (I haven't tried out the most recent major VirtualBox release that came out earlier this month.)

--Phil.

  • Improved millis(): it now overflows after 49 days instead of 9 hours, but now uses slightly more processing power.

Great really been looking foward to this feature!

for some reason now when i compile some code that workes perfectly with 0011 it throws up this, any ideas?

In file included from C:\arduino-0012\hardware\cores\arduino/WProgram.h:4,

c:/arduino-0012/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:80: error: expected unqualified-id before 'int'

c:/arduino-0012/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:80: error: expected `)' before 'int'

c:/arduino-0012/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:80: error: expected `)' before 'int'

c:/arduino-0012/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:111: error: expected unqualified-id before 'int'

c:/arduino-0012/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:111: error: expected `)' before 'int'

c:/arduino-0012/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:111: error: expected `)' before 'int'

c:/arduino-0012/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:144: error: expected identifier before '(' token

c:/arduino-0012/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:144: error: expected `)' before '(' token

c:/arduino-0012/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:144: error: expected ',' or '...' before '(' token

c:/arduino-0012/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:144: error: expected initializer before ')' token

c:/arduino-0012/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:176: error: '__compar_fn_t' has not been declared

In file included from C:\arduino-0012\hardware\cores\arduino/WProgram.h:6,

for some reason now when i compile some code that workes perfectly with 0011 it throws up this, any ideas?

In file included from C:\arduino-0012\hardware\cores\arduino/WProgram.h:4,

c:/arduino-0012/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:80: error: expected unqualified-id before 'int'

This looks like the problem introduced with 0011 as discussed here: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1207028702/3

The release notes for 0012 say:
*Moved insertion of #include <WProgram.h> to after any comments and #include statements in the main sketch file. This means that an #include <stdlib.h> now works.

I had assumed this was to fix this problem but perhaps its just moved around.

It would help the arduino developers if you could post some source code illustrating the problem. Try to make the example code as small as possible by removing everything you can that does not relate to the problem.

Hello Mem,

thanks for the quick reply. i have tracked down the problem i have to a library i am using on one of my projects "nespad"

here's the link = NESpad/SNESpad: Nintendo Joystick Libraries for Arduino – rahji.com

just tested the examples in arduino 0011 and it works fine
then tested the same code in arduino 0012 and same errors as above :frowning:

Rob.

I would think the problem is caused by the inclusion of wiring.h that is included by Wconstants.h in your files.

You should be able to fix the problem by removing the arduino header (WConstants.h) from your files and including the avr includes needed to satisfy your references. It's a bit of a pain and I do hope that the arduino team will resolve the int() macro bug. Declaring int as a macro never seemed a good idea and it may be causing more harm than benefit.

Hello Mem,

thanks for your help i appreciate it, i can see where your going so i had a play with the library but it is a little beyond me. i've nearly got the project nailed so might just go back to arduino 0011 where it complies fine kinda spewing i was looking foward to the new millis feature

Rob.

What all would I need to do to put the build together? I got a linux box and a spare afternoon

Great stuff... interested to see the Ethernet library in there, but can't find any information about which shield it's actually for?

cheers

chris

interested to see the Ethernet library in there, but can't find any information about which shield it's actually for?

I think its the wiznet w5100 Official Arduino Ethernet preview board | Available before t… | Flickr

yeah the code mentions w5100, but the flickr pic is an Arduino board with built-in ethernet, aka Netduino, whereas the release notes for 0012 specifically mention a shield...

"Added an Ethernet library for use with the Arduino Ethernet Shield."

is this a typo?

This sounds like a very nice update!

How do I make use of the "per-board specification of the upload.using preference" feature?

I am guessing that the format of the specification is something like:
diecimila.upload.using=bootloader
orangutan.upload.using=avrispv2 (where avrispv2 is defined in programmers.txt)

In which file would I put the upload.using specifications, boards.txt or preferences.txt?

Thanks again; this will be a very helpful feature for those who use different boards!
H.