The Arduino development team’s release of the new Arduino 1.0.1 IDE includes the big ticket items of Arduino Leonardo board support and translation into 32 languages. However, a number of other features and bug fixes are included in this release. The following are some highlights from the 1.0.1 release notes.
Faster Compiles
The IDE now reuses compiled object files, when possible, to decrease compilation time. This includes the files which are pulled in through includes and by the IDE, so it can lead to some dramatic improvements (using the blink sketch, I saw re-compile time drop by about half). No special actions are required to see this speed improvement.
Faster Code Uploads
The Preferences dialog now includes the option to disable verification on upload in order to decrease upload times. On my sample sketch, this trimmed upload time by roughly a third. You can edit the Preferences dialog by selecting the Arduino menu, then clicking the Preferences… menu item. Uncheck the Verify code after upload checkbox and click OK to see the speed increase.
The Return of Wire.write(0)
The Wire library now contains overloaded methods to support calling Wire.write(0) without needing to typecast the parameter. This addresses a breaking change which was introduced in the 1.0 release.
Find / Replace Enhancements
The Find / Replace system has added the ability to find previous when searching. This can be accessed through the Find dialog, menu items, or keyboard shortcuts. The dialog has gone through some visual cleanup and now sports a checkbox option to wrap the search when it reaches the end of the document. The Find dialog can be reached by selecting the Edit menu and clicking the Find… menu item.
Improved Accessibility for Serial Monitor and Log Panel
Changing the editor font size in the preferences dialog also changes the font size in the serial monitor and message console. You can edit the Preferences dialog by selecting the Arduino menu, then clicking the Preferences… menu item. Change the text value for the Editor font size text box, click OK, and restart the IDE to see the font change.
Intelligent Text Selection
The IDE has gained some additional smarts when selecting text. To see this in action, double click on a word and start dragging the mouse. The selection will grow and shrink on word boundaries. Triple click before dragging and the selection grows and shrinks on line boundaries.
Enabling / Disabling Internal Pull-Up Resistors
The implementation of pinMode has changed in this release in regards to how the internal pull-up resistors are handled. Setting pinMode to INPUT now has the side effect of disabling the pull-up resistor. The new constant, INPUT_PULLUP, can be passed to pinMode to enable the pull-up resistor when setting the pin as an input.
Stupid question: what are internal pull up resistors and what do they do?
When an input pin is not connected to an active component it tends to float, resulting in unpredictable values on read. By attaching a pull-up resistor to the input, you change that behavior so that it will read near the source voltage. An active component on the input will override the source voltage provided through the pull-up resistor. Additional detail – http://en.wikipedia.org/wiki/Pull-up_resistor
The Atmega chip on the Arduino provides 20K pull-up resistors to +5V (these resistors are internal to the chip itself) on the digital and analog pins. You can enable and disable these resistors by making method calls. Additional detail is available in the documentation on the digital pins – http://www.arduino.cc/en/Tutorial/DigitalPins
I can’t express how awesome the “faster compile” changes are. When I’m building a project that depends on a lot of libraries, it makes things so much faster, it’s a completely different world. I like to recompile a lot, but only upload when I’m actually ready to test, so not only does it make all the compiling faster, when I compile, and then decide to upload, it doesn’t recompile everything again just to upload.
So awesome! Great work everybody.
Question: Do you know offhand if the old way of doing input pull-ups still work? (pinMode INPUT, digitalWrite HIGH) If not I’ve got to go through and update all of my old code, kind of annoying.
My read on it is that the old way should work, as long you follow that order – pinMode INPUT, digitalWrite HIGH. I think the issue would be if you called pinMode INPUT after calling digitalWrite HIGH. That said, I haven’t tested it myself yet.
The specific issue in Google Code:
http://code.google.com/p/arduino/issues/detail?id=246
The commit in github: https://github.com/arduino/Arduino/commit/76c964d32b13f1fc01e3a5b07460d96f2dcaecd6
I think the method for setting pull-ups is the same across all AVR’s — almost like a standard extension of the instruction set. If a pin can be addressed, it can be pull-up enabled. Likewise the method for setting pins to a Hi-Z state.