This book presents the broad landscape of what's possible with Arduino. It is one of the few Arduino books available that have been updated for Arduino 1.0. Content is organized as "recipes", and you can combine them to do all kinds of things. Knowing what is possible should help to stimulate your imagination. The book does not go deep into any one subject, choosing instead to give you enough to get started, and pointers on where to go for deeper information.
Two kinds of skills are required (or developed) to build projects that use Arduino. One is working with electronics - gathering components, assembling them, and connecting them to the Arduino. The other is simple programming in C. If you have these skills but no experience with Arduino and want a quick start, this book will really help.
Someone with little or no experience in these areas may be able to figure it out from Chapter 1 in particular, and reading the rest carefully. Absolute beginners may find it easier to start with an absolute beginners book. If you buy this book and find it is too deep, keep it, you can always get a simpler book, then come back when you're ready.
The book is not a complete introduction to programming or electronics. The author chose to go broad to introduce his audience to a wide range of possibilities, rather than go very deep on any of them, but there is enough info to make it work, and references to go deeper.
CHANGES FROM ARDUINO COOKBOOK FIRST EDITION
The second edition has been updated to the Arduino 1.0 release. It is expanded to 724 pages, 62 more pages, and a few dollars less. Comparing the books side-by-side, the table of contents were nearly identical. The page numbers are different, owing to expanded text in the second edition, and a few new sections:
Sending Messages Using Low-Cost Tranceivers
Communicating with Bluetooth Devices
Updating Third-Party Libraries for Arduino 1.0
Uploading Sketches Using a Programmer
Replacing the Arduino Bootloader
Reprogram the Uno to Emulate a Native USB Device
...and an Appendix: Migrating to Arduino 1.0, which describes the changes you need to make to older code to work with Arduino 1.0.
If you have the first edition, you may not need to get the second edition. You can download the new source code from the publisher's Web site; you can google "Arduino Software Release Notes" for a list of changes, some of which will require minor changes to your code. The author says that a few newer hardware devices have replaced the ones described in the first edition, but less than one year passed between these two editions, so it would not be a lot. The change to Arduino 1.0 should not require changes to circuits.
The book has 18 chapters containing a total of 204 topics or "Recipes" structured as a Problem, a Solution, Discussion, and See Also sections. Most problems are things people would really want to do: pieces of a project. Solutions consist of C code and libraries, and electronic components. Discussion might be troubleshooting, variations, or more information. See Also provides references for more information - in the book, and URLs for Web-based information or libraries.
The average "recipe" is 3.1 pages long; some are longer than others.
Chapter 1 discusses the software development environment (which is supported for Windows, Mac, and Linux, but comes from Arduino) and very basic information about the board. In introduces simple programming and wiring by way of the common "blinking light" example. In 21 pages, the goal is to get something running quickly more than learning how it all works.
Two chapters explain a bit about C: types of variables and manipulations; mathematical operations for numeric types.
Programs must have input and/or output to be useful. Since this is what makes your solution come alive, this is the bulk of the book, and the most interesting part.
Chapter 4 introduces serial communications - exchanging information with a computer which is connected to the Arduino via USB. This can be used for I/O to a connected computer, as well as debugging your program by sending status messages at various points in the processing.
Chapter 5 discusses digital and analog input and output at a very basic level - controlling output to pins, and reading input from the pins. This is the foundation for all I/O that follows.
A strength of Arduino is the vast array of devices that work without a lot of extra circuitry. Chapter 6 discusses detecting light (or dark), movement, acceleration, vibration, distance, sound, temperature, location, direction, and interface to a computer mouse or a game controller. Chapter 7 discusses visual output using LEDs alone or in a matrix, 7-segment displays, and meters.
Chapter 8 discusses producing movement, vibration, or controlling external devices with relays and solenoids. Chapter 9 shows you how to make sounds - as tones, melodies, playing recordings, controlling a MIDI synthesizer, and making a simple audio synthesizer.
Chapter 10 presents uses of InfraRed devices (your home stereo, your camera, etc) as well as detecting and acting upon InfraRed signals from remotes you already have. Chapter 11 tells you how to use LCD displays available for Arduino to display text, or how to display text on the TV.
Chapter 12 deals with dates and times - make Arduino aware of passing time, or to work as an alarm clock.
Chapter 13 presents I2C and SPI, standards used for exchanging information between a variety of digital devices. Learn to use a standard and you'll find it can be used with other devices. For example, if you want to use a Wii Nunchuck controller to control your Arduino applications, you will need to learn about I2C. You can also use I2C to talk to external memory added to Arduino, get temperature for an external digital temperature measuring device, or display 4 numbers on 7-segment displays using only two wires.
Chapter 14 is about wireless communication. Chapter 15 discusses using an Ethernet shield to Internet-enable your Arduino application.
Chapter 16 discusses the creation and use of code libraries. Chapter 17 dives deeper into the subject of prgramming, especially in handling memory. Chapter 18 is all about using the controller chip hardware in ways not (yet) supported by libraries.
Nine appendices give basic information on building with electronics, troubleshooting, digital and analog I/O pins, and character sets. For those who have code written prior to the release of Arduino 1.0, an appendix is there to help you migrate.
The source code can be downloaded from the publisher's Web site; the URL is on page xv.
You should seriously consider the PDF version of the book, because all of the many links are live, and the PDF is on your computer as handy reference. You can always print pages as needed for reference while building. O'Reilly currently has a good deal for upgrading to a new PDF edition.
The book serves as an introduction to the broadest range of Arduino capabilities of any book I have seen. With a little experience, the book will get you going quickly by demonstrating a working example that may be enough for your purposes. For me, this book is indispensable for Arduino work.