Archive for the ‘Software’ Category

Arduino 1.0.1 release includes Arduino Leonardo support and multiple translations.

Tuesday, May 22nd, 2012

I’m very happy to announce that Arduino 1.0.1 is now available on the software page. This release includes a ton of bug fixes and new features (see the release notes for details). The biggest additions are support for the Arduino Leonardo and translation of the Arduino development environment into multiple languages. We’ll be doing a blog post on the Leonardo soon but, for now, see its getting started page and hardware page.

The translations were the work of many people, particularly Shigeru Kanemoto (who internationalized the software and translated it into Japanese) and David Cuartielles from the Arduino team (who coordinated the translation process). Languages in Arduino 1.0.1: Arabic, Aragonese, Catalan, Chinese Simplified, Chinese Traditional, Danish, Dutch), English, Estonian, Filipino, French, Galician, German, Greek, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Latvian, Lithuaninan, Marathi, Norwegian, Persian, Polish, Portuguese – Brazil, Portuguese – Portugal, Romanian, Russian, Spanish, Tamil. (For details or to help with the translations, see this page on the playground.)

Thanks to the many people who contributed to this release (see the release notes for credits). Again, you can download Arduino 1.0.1 from the software page.

Easy cross platform configurator for XBee modules

Thursday, March 8th, 2012

Italian company “moltosenso” has released a free, cross-platform software that allows you to configure all the parameters of your XBee modules. (more…)

Arduino 1.0 now available.

Wednesday, November 30th, 2011

Arduino 1.0 is now available from the download page.

A long time coming, this release brings small but important changes to clean up the Arduino environment and language – as well as adding lots of additional features. Updates to the environment include a new file extension, toolbar icons, and color scheme as well as a progress bar on compilation and upload. The language changes include modifications to the Serial class, addition of DHCP and DNS support to the Ethernet library, a new SoftwareSerial library, multi-file support in the SD library, modifications to the Wire library and UDP class, etc. For details, please see the release notes or this blog post. We’ll be pushing the updated reference for Arduino 1.0 live in the next day or two.

This release is the product of many people (listed in the release notes). Thank you to everyone who helped us get here!

Arduino 1.0 bringing improvements and changes.

Tuesday, October 4th, 2011

Arduino 1.0 is coming soon. The first release candidate was posted to our development site for Maker Faire NYC and is available for public download. It brings a number of improvements and changes to the software that we encourage you to test before the final Arduino 1.0 release, scheduled for the end of the month.

The Arduino development environment (IDE) has undergone a number of adjustments:

  • The file extension for sketches has changed from .pde to .ino, to avoid conflicts with the Processing software (“ino” are the last three letters in “Arduino”).
  • There are a new set of toolbar icons, including a checkmark icon to verify (compile) a sketch and an arrow for upload. The serial monitor icon has moved to the right of the toolbar. Also, shift-clicking the upload icon now uploads using a programmer (selected in the Tools menu). You can still enable verbose output in the preferences dialog. (Icons were designed by Nicholas Zambetti.)
  • There’s a new color scheme and about image for the IDE (by ToDo.to.it).
  • The name of the currently selected board and serial port are now shown at the bottom of the editor. (Code from Wiring.)
  • A progress bar is displayed during compilation and upload. (Code from Wiring.)

The changes of perhaps larger practical impact, though, are those to the Arduino language. Here are some of the bigger changes:

  • Serial transmission is now asynchronous – that is, calls to Serial.print(), etc. add data to an outgoing buffer which is transmitted in the background. Also, the Serial.flush() command has been repurposed to wait for outgoing data to be transmitted, rather than dropping received incoming data.
  • The behavior of Serial.print() on a byte has been changed to align it with the other numeric data types. In particular, it will now print the digits of its argument as separate ASCII digits (e.g. ‘1’, ‘2’, ‘3’) rather than a single byte. The BYTE keyword has been removed. To send a single byte of data, use Serial.write() (which is present in Arduino 0022 as well).
  • The Serial class (as well as other classes inheriting from Stream, like EthernetClient, SoftwareSerial, Wire and more) now contains functions for parsing incoming data, based on the TextFinder library by Michael Margolis. They include find() and findUntil() to search for data, parseInt() and parseFloat() for converting incoming characters into numeric values, and readBytes() and readBytesUntil() for reading multiple bytes into a buffer. They use a timeout that can be set with the new setTimeout().
  • The SoftwareSerial class has been reimplemented, using the code originally written for the NewSoftSerial library by Mikal Hart. This allows for multiple simultaneous instances, although only one can receive at a time.
  • Support has been added for printing strings stored in flash (program memory) rather than RAM. Wrap double-quoted strings in F() to indicate that they should be stored in flash, e.g. F(“hello world”).
  • The String class has been reimplemented as well, by Paul Stoffregen. This new version is more memory-efficient and robust. Some functions which previously returned new string instances (e.g. trim() and toUpperCase()) have been changed to instead modify strings in place.
  • Support for DHCP and DNS has been added to the Ethernet library, thanks to integration by Adrian McEwen. Most classes in the Ethernet library have been renamed to add a “Ethernet” prefix and avoid conflicts with other networking libraries. In particular, “Client” is now “EthernetClient”, “Server” is “EthernetServer”, and “UDP” is “EthernetUDP”. A new IPAddress class makes it easier to manipulate those values.
  • The UDP API has been changed to be more similar to other libraries. Outgoing packets are now constructed using calls to the standard write(), print(), and println() functions – bracketed by beginPacket() and endPacket(). The parsePacket() function checks for and parses an incoming packet, which can then be read using available(), read(), and peek(). The remoteIP() and remotePort() functions provide information about the packet’s origin. (Again, thanks to Adrian McEwen for the implementation.)
  • The Wire library has also been modified to use the standard read() and write() functions instead of send() and receive(). You can also use print() and println() for outgoing data.
  • The SD library now supports multiple simultaneous open files. It also provides the isDirectory(), openNextFile(), and rewindDirectory() functions for iterating through all the files in a directory. (Thanks to Limor Fried.)
  • There are some other small additions that will be documented in the reference updates for Arduino 1.0.

Finally, a few other notes of particular concern to those developing libraries or otherwise interested in the internals of the Arduino software:

  • The WProgram.h file, which provides declarations for the Arduino API, has been renamed to Arduino.h. To create a library that will work in both Arduino 0022 and Arduino 1.0, you can use an #ifdef that checks for the ARDUINO constant, which was 22 and is now 100.
  • The write(), print(), and println() functions in Stream now return a size_t (instead of void). This indicates the number of bytes actually written by the function. Any classes that inherit from Stream will need to change accordingly. Additionally the write(str) function has been given a concrete implementation – it calls write(buf, len) – so sub-classes don’t need to (and shouldn’t) implement it.
  • There are new abstract base-classes for Client, Server, and UDP to provide portability across networking libraries.
  • The pin definitions for the Arduino boards (i.e. the mappings from pin numbers to port register / bit pairs) is now stored in a sub-folder of a new variants/ folder in the hardware folder. The variant to use for a given board is specified by the BOARD.build.variant preference in the boards.txt file.
  • The new, variant-specific pins_arduino.h files now provides additional macros with information about the characteristics of the board (e.g. the locations of the SPI and TWI pins, and the number of digital and analog pins).
  • The avrdude included with the Mac and Windows versions of the Arduino software has been upgraded to avrdude 5.11 (from an Arduino-specific version of avrdude 5.4). The software now uses the “arduino” programmer type in place of “stk500v1″ for uploading to most Arduino boards.

Please try out the release candidate and give us feedback. If you find a bug or a specific issue that needs addressing, please open a new issue on the Google Code issue list. For more general discussion, see the developers mailing list or the suggestions forum.

If you develop an Arduino library, we encourage you to try it out with the Arduino 1.0 release candidate, as you’re likely to find some things that will stop it from compiling. The fixes should be straightforward, so please open an issue or contact the developers list if you have any problems.

Again, we’re hoping to do the final Arduino 1.0 release at the end of the month, so there’s not much time to do fixes or make further changes. Your help and understanding is greatly appreciated. And, don’t worry, there are plenty more versions of the Arduino software to come!

Samsa II, The Hexapod

Tuesday, March 29th, 2011

[pabloxid] shared an Hexapod project on the forum based on an Arduino MEGA 1280 and 18 Dynamixel AX-12 motors:

SAMSA is based on the Wiring board, with an ATmega128 microcontroller, and SAMSA II on the Arduino Mega, with an ATmega1280. Both are pretty similar, tough the ATmega1280 has 8 KB SRAM, twice the ATmega128. For SAMSA II the Arduino IDE was not used. The software was written directly in C++, using some libraries from both Arduino and Wiring.

SAMSA II has also two additional microcontrollers. One is an old Arduino Mini (ATmega168) located in the head, tasked with handling the sensors. The other is an ATmega8 and is integrated in the display. The firmware in the display was replaced with another one, freeing the main microcontroller from handling the display pixel by pixel, storing the frame buffer, etc.

The head’s microcontroller is responsible for sampling, filtering and processing sensor’s data. The data from the Sharp distance sensor and the lateral IR sensors are combined in a single “super smart distance sensor”. This microcontroller also decodes the data coming from the 38 KHz IR receiver, used for the Remote Control.

These two additional microcontrollers further reduce the load on the main microcontroller, allowing for more sophisticated behaviours.

(more…)

Fix to Uno and Mega 2560 Linux serial problems

Tuesday, February 15th, 2011

We’ve just posted a tutorial on upgrading the firmware on the ATmega8U2 on the Arduino Uno and Mega 2560. This should resolve the problems that some of you have had with serial communication between those boards and Linux. The upgrade doesn’t require a programmer or other hardware, just adding a resistor to the board and touching a couple of pins together. It’s a safe process, and if it doesn’t work the first time you can do it again.

We’re in the process of testing the new firmwares on other operating systems so that we can begin to ship them as the default on new boards. So far, though, many Linux users have had success with the upgraded firmwares.

Thanks to Dean Camera (author of LUFA) for his help in fixing the firmware.

Issues with the new Arduino UNO Smd edition

Thursday, January 20th, 2011

A few days ago we announced the release of the new Arduino Uno SMD that was made quite in a rush to compensate the global shortage of through hole parts that is affecting many manufacturers, ATMEL included.

We have received reports from a handful of users that their boards had a strange issue where the processor would not start the last sketch that had been uploaded. This was particularly annoying as it didn’t show up in our test done at the factory and it seems to affect only some of the Uno SMD boards.

After a few tests we determined that this happens when the board is unplugged and plugged back in triggering a bug in the new bootloader.

The new version of the bootloader is available here

If your board has a serial number between 317000 and 317999 they might be affected by this bug, please return your board to the distributor and you’ll get a new one for free, that’s the Arduino policy that every official distributor is bound to.

In case you know what an ISP programmer is, you can fix your board in 5 minutes by reprogramming the bootloader.

In the next few days we’ll post more tutorials for the ones who would rather fix the board themselves.

Three Servos To Make A The Plotter ArmThree Servos To Make A The Plotter ArmThree Servos To Make A The Plotter Arm

Wednesday, December 1st, 2010

 

[EzioSoft] wanted to build a robot arm plotter to draw files from drawing programs. He built his arm with three servos, and made a program to control the pen and submit an image file. He also shared the code and explained it’s project on the forum.

via [ArduinoForum]

 

 

 

[EzioSoft] wanted to build a robot arm plotter to draw files from drawing programs. He built his arm with three servos, and made a program to control the pen and submit an image file. He also shared the code and explained it’s project on the forum.

via [ArduinoForum]

[EzioSoft] wanted to build a robot arm plotter to draw files from drawing programs. He built his arm with three servos, and made a program to control the pen and submit an image file. He also shared the code and explained it’s project on the forum.

via [ArduinoForum]

 

Three Servos To Make A The Plotter ArmThree Servos To Make A The Plotter ArmThree Servos To Make A The Plotter Arm

Wednesday, December 1st, 2010

 

[EzioSoft] wanted to build a robot arm plotter to draw files from drawing programs. He built his arm with three servos, and made a program to control the pen and submit an image file. He also shared the code and explained it’s project on the forum.

via [ArduinoForum]

 

 

 

[EzioSoft] wanted to build a robot arm plotter to draw files from drawing programs. He built his arm with three servos, and made a program to control the pen and submit an image file. He also shared the code and explained it’s project on the forum.

via [ArduinoForum]

[EzioSoft] wanted to build a robot arm plotter to draw files from drawing programs. He built his arm with three servos, and made a program to control the pen and submit an image file. He also shared the code and explained it’s project on the forum.

via [ArduinoForum]

 

Arduino 0021 for Windows, Mac, Linux (fixes PWM bug on Uno)

Saturday, October 2nd, 2010

I just posted Arduino 0021 to the download page. It’s a quick release to fix the problems with analogWrite() (PWM) on pins 9 and 10 on the Arduino Uno.

This release also includes Linux (32-bit) support for the Uno and Mega 2560 (as well as the rest of the Arduino boards). The RXTX library was patched to support /dev/ttyACM* devices (which is what the ATmega8U2 on the Uno and Mega 2560 shows up as). Apologies for the delay in getting this out. Please note that there’s some weirdness when uploading to an Uno or Mega 2560 that’s running a program that sends data over the serial port. I’m not sure exactly what’s going on, but if you unplug and replug your board, or hold down the reset button, or manually delete the ACM0 lock file in /var/lock, you should be able to get it to work. Any suggestions on how to fix this properly are welcome.

Update: A 64-bit Linux version and a source archive for Arduino 0021 are now up on the download page (under “also available from Arduino.cc”).