Program Arduino with ease!
This thoroughly updated guide shows, step-by-step, how to quickly program all Arduino models. Programming Arduino: Getting Started with Sketches, Second Edition, features easy-to-follow explanations, fun examples, and downloadable sample programs. Discover how to write basic sketches, use Arduino’s modified C language, store data, and interface with the Web. You will also get hands-on coverage of C++, library writing, and programming Arduino for the Internet of Things. No prior programming experience is required!
• Understand Arduino hardware fundamentals
• Set up the software, power up your Arduino, and start uploading sketches
• Learn C language basics
• Add functions, arrays, and strings to your sketches
• Program Arduino’s digital and analog inputs and outputs
• Use functions from the standard Arduino library
• Write sketches that can store data
• Interface with displays, including OLEDs and LCDs
• Connect to the Internet and configure Arduino as a Web server
• Develop interesting programs for the Internet of Things
• Write your own Arduino libraries and use object-oriented programming methods
About the Author
Simon Monk has a degree in cybernetics and computer science and a Ph.D. in software engineering. He is the author of numerous books, including Programming the Raspberry Pi: Getting Started Python, 30 Arduino Projects for the Evil Genius, Hacking Electronics, and Fritzing for Inventors. Simon also runs the website monkmakes.com, which features his own products.
Most helpful customer reviews
263 of 268 people found the following review helpful.
STILL A MUST HAVE Book for Arduino Hobbyists
By P. Fulmer
Having just started using the Arduino last summer, I can say that this is the ABSOLUTELY BEST book a person could get to become familiar with the Arduino. I've been an electronics hobbyist for years but mainly dealt with analog world with minimal interest in too much on the digital side. I did programming but never with a microprocessor until I got my Arduino last summer. Now I'm hooked. Unfortunately, the usual books for "helping" with Arduino give sketches and explain bits and pieces without ever doing an overview of the system. However, this book is fantastic. Just got it today and have read over half of it; I've marked it up with pen to remind myself of crucial facts that I wish I had known a few months back. I programmed in Fortran (antique language) and BASIC before, but never learned the C programming language (the language of the Arduino). Thankfully, this book assumes no knowledge of C language and holds your hand through the process. It does a wonderful job explaining what each section of the programming does, it explains the hardware of the board, and it explains how the board communicates with the computer. At long last, instead of just copying and pasting someone else's program and hoping I can modify it to work for my own purposes, I can understand WHY certain things work the way they do.
UPDATE: I've had this book for over five months, and I still maintain that you have GOT to have this book. I have used it so much that I've about worn it out. Yes, the info that is in the book can be found elsewhere, but he covers so much material so well in such logical places. If you're trying to understand how and why Arduino sketches work the way they do, BUY THIS BOOK!
UPDATE 2: I STILL stand by my review of almost a year ago. I have used this book so much in referring to things that I may have to order a second copy as insurance in case I misplace the first. To be such a small book, it packs a lot of punch. It's written at just the right level for beginners who are just learning about Arduino and microprocessors in general, and he points you to all the resources on the web for further information. The book is practical and useful and just plain fun to read. So instead of having to copy and paste everyone else's code all the time, read this book to understand at least the basics of WHY things work in an Arduino the way they do.
10 of 10 people found the following review helpful.
Great Intro to Arduino Programming
To start with, I am an experienced software developer and have worked with AVR microcontrollers in the past, so my information needs may be a little different than a lot of people that are just getting started with the Arduino. That said, I was looking for a quick start guide to better understand Arduino concepts and this book delivered. It was nice and concise, hitting on many facets of what the device was capable of, and gave me a good reference point to understand when this would be a good platform to build on (as opposed to just coding to the ATMega chip directly). I was able to get through the book cover-to-cover in just 2 days, and with a few internet searches to fill in some additional questions, I now feel I finally "get" what the Arduino platform is about.
The included code examples were all pertinent, concise, and clearly written. Because of my past experience, I was able to grasp what was going on in each example fairly easily just by reading through them, however those with no experience in software development (in C specifically), or electronics (like with using LCD displays) may have to do a little more research to fully understand what is going on in some of them. But this book definitely gives you a good place to get started from.
I docked the book a point for futilely trying to explain some pretty in-depth concepts in just a page or two (like how to create C++ header files, pointers and addresses in C, OOP, HTML, and HTTP request handlers to name a few). I felt the chapter on Data Storage was also a little weak, though for the same reason - it's a relatively complex design implementation that was covered in just a few pages. It was fine for my needs, and I'm actually glad it was included, but again for someone just starting out I imagine it may have gone completely over their head.
This brings up one revelation I had about Arduino: despite the hype I've always heard about programming in the "Arduino language" or Wiring, it's really just programming in C or C++, using wrapper libraries (Wiring) that happen to hide a lot of the messiness that is inherent to working with microcontrollers. Sketches are just C++ source files (albeit slightly incomplete ones since the IDE adds some additional info as part of it's compilation process). Ultimately under the hood, Arduino still uses gcc to create the binary file that gets loaded onto the microcontroller using avrdude, just like I would do if I was coding directly to the ATMega chip. The only other thing that makes an Arduino an Arduino (besides the IDE and the Wiring framework), is the use of a bootloader on the uC that allows you to load the program over USB and not need any additional hardware. If you happen to have the programming hardware, then you don't even need the on-chip bootloader code and you can just use a raw ATMega328 and load your compiled binary file directly using that.
In conclusion, I'd say this book is a good jumping off point (or jumping in as the case may be) for anyone just getting started with programming an Arduino. It provides a good overview of the Arduino platform for experienced developers that are new to Arduino, and a decent place to start for beginners as well.
127 of 135 people found the following review helpful.
See all 618 customer reviews...
Good for beginners but could be a little more detailed
By Tom Servo
I am experienced with microcontroller systems but new to Arduino. Here's what I think of this book:
+ For a beginner it's very readable and isn't "here's a bunch of theory and then we do fun stuff". The book is very much hands-on oriented, giving just enough explanation related to the task at hand (which is both good & bad, more on this below)
+ Book is thin and small, will not cause "I have to read and understand all that?" anxiety for beginners
- The use of timer interrupts is not discussed at all in this book. I found this disappointing as timer interrupts are a common way to handle "background" tasks (this is where you can run code at specific time intervals). One could argue that this is not a beginner topic but since pin interrupt-on-change interrupts ARE discussed I think timer interrupts should have been as well. UPDATE: The follow-up book Programming Arduino Next Steps: Going Further with Sketches (Tab) covers timer interrupts and other fun stuff.
- There are many issues that could be expanded on, even a couple of sentences would be helpful. Examples include:
Arduino maximum pin current sink/source & applied voltage limitations. This is briefly mentioned in Chapter 1, but the author just mentions to be careful to not exceed the 40mA current limitation. He should have also mentioned that you can damage the chip this way (also if you exceed max voltage to an I/O pin). This should have been repeated in Chapter 6 which deals with digital interfacing. One of the most common mistakes in interfacing is overlooking the max operating specifications and damaging the chip or decreasing long-term reliability.
In Chapter 10 where the author discusses Ethernet shields he mentions that you need the "official" shield based on the Wiznet chipset rather than the cheaper ones based on the Microchip ENC28F60 chip. He could have stated why - the reason is because the Wiznet chip handles the gory details of TCP/IP communication for you (and is more expensive than the ENC28J60 which requires the host chip to do the TCP/IP processing, which is NOT suitable for beginners).
OVERALL, it's a gentle introduction for beginners to Arduino. If you are new to Arduino I would recommend buying an extra board or chip in case you accidentally damage it. It can be helpful for troubleshooting to try the same code on a different board to see if the problem might be with the board. Also, search the internet for "10 Ways to Destroy an Arduino" to avoid expensive mistakes.
As a bonus, here are other useful Arduino-related items that I have reviewed/purchased and you might be interested in:
Cheap UNO clone: SainSmart UNO R3 ATmega328P Development Board + USB Cable Compatible With Arduino UNO R3 Mega 2560 Nano Robot
Cheap Mega2560 clone: SainSmart Mega2560 R3 ATmega2560-16AU + ATMEGA16U2 + USB Cable for Robot Arduino UNO MEGA2560 R3 Duemilanove 2013
Serial 2x16 LCD using I2C (only 2 I/O pins): ZITRADES New IIC/I2C/TWI 1602 Serial LCD Module Display For Arduino BY ZITRADES
Cheap Ethernet Shield: RioRand (TM) Upgraded Ethernet Shield W5100 for Arduino UNO R3 & MEGA 2560 Duemilanove
I hope you found this useful!