Recommended reading?

Are you able to recommend a good up-to-date book to help a newcomer to Arduino?

I think a series of practical examples would probably work best for me rather than C programming theory.


Can you recommend this book?
Exploring Arduino: Tools and Techniques for Engineering Wizardry Paperback – Illustrated, 5 Dec. 2019

Hi NeilIves

Arduino links of interest.

How to use this forum:

Listing of downloadable 'Arduino PDFs' :
Either Google >>>- - - - > arduino filetype: pdf

Listing of downloadable 'C++ PDFs' :
Either Google >>>- - - - > C++ filetype: pdf

Arduino cheat sheet:

Watch these:
Arduino programming syntax:

Arduino arithmetic operators:

Arduino control flow:

Arduino data types:

Understanding Destructive LC Voltage Spikes:


Why MOSFET gate resistors:

Some things to read

LCD information:


Reading a schematic:

Language Reference:


How and Why to avoid delay():

Demonstration code for several things at the same time.

Part 1:

Part 2:

Part 3:

Sparkfun Tutorials:

Micro Controllers:

Useful links:

Arduino programming traps, tips and style guide:

Arduino programming course:

Jeremy Blume:

Arduino products:


Making a library


Share tips you have come across, 700+ posts:

Debug discussion:

Frequently Asked Questions:

Number 'type's.

  • boolean (8 bit) - simple logical true/false, Arduino does not use single bits for bool
  • byte (8 bit) - unsigned number from 0 to 255
  • char (8 bit) - signed number from -128 to 127. The compiler will attempt to interpret this data type as a character in some circumstances, which may yield unexpected results
  • unsigned char (8 bit) - same as 'byte'; if this is what you're after, you should use 'byte' instead, for reasons of clarity
  • word (16 bit) - unsigned number from 0 to 65535
  • unsigned int (16 bit)- the same as 'word'. Use 'word' instead for clarity and brevity
  • int (16 bit) - signed number from -32768 to 32767. This is most commonly what you see used for general purpose variables in Arduino example code provided with the IDE
  • unsigned long (32 bit) - unsigned number from 0 to 4,294,967,295. The most common usage of this is to store the result of the millis() function, which returns the number of milliseconds the current code has been running
  • long (32 bit) - signed number from -2,147,483,648 to 2,147,483,647
    float (32 bit) - signed number from -3.4028235E38 to 3.4028235E38. Floating point on the Arduino is not native; the compiler has to jump through hoops to make it work. If you can avoid it, you should. We'll touch on this later. Sparkfun.

You select the 'type' best suited for your variables.


  • your variable does not change and it defines a pin on the Arduino. const byte limitSwitchPin = 34;
  • since an analog variable can be 0 to 1023, a byte will not do, you can select 'int'. int temperature;
  • if your variable needs to be within -64 to +64 a 'char' will do nicely. char joystick;
  • if your variable is used for ASCII then you need type 'char', char myText[] = {"Raspberry Pie Smells"};
  • if your variable enables some code then boolean can be used. boolean enableFlag = false;
  • millis() returns the time in ms since rebooting, unsigned long currentTime = millis();

Oh, and have fun too :slight_smile: !

Thank you laryyd for taking the time to type all that.

I'd like to have a book in my hand so I can take it with me and dip in when I have a chance. I am that last person on earth without a smart phone. I'll check out that book.

Is there a conspiracy here to scare the bejasus out of newcomers? :wink:

Is there a conspiracy here to scare the bejasus out of newcomers? :wink:

LMAO! :slight_smile:

I have was given an Arduino kit, which includes a book. The book is no use to me. I have no idea if it is any good. You can have it, if you are in the UK I will post to you, send me a PM with your address. If you are not in the UK then probably the postage is more than the book is worth.


I knew enough about programming before I bought my first Arduino so I didn't need a book.

I have had a quick browse through Arduino for Dummies in a bookshop and it seemed good. Some years back I had Sailing for Dummies and found it really excellent and it left me with a good opinion of the brand.

I suspect that nowadays most people get all the programming knowledge they need from the internet - I reckon there would be slim pickings for the author of a new "real book".


Perry, thank you for the offer. Doing detective work, it appears your business phone may be in Nottingham. I'm in the West Midlands so not so far away. I'll investigate sending you a PM.

Yes the Dummies books are good. Should I be concerned about the information being up to date?


Obviously it depends how you learn best, but in my view hands on time is where the rubber meets the road. Play around with the examples that come with the IDE and experiment. Tweak them, break them, debug and fix them. That'll teach you a lot.

If you really want book material, I'd suggest a book on C or C++. Just the first few chapters until you know about variables, control constructs, arrays and functions. No need to deal with pointers and classes to start with but having an idea of the core language would help I think.

I have had a quick browse through Arduino for Dummies in a bookshop and it seemed good.

Yes I know the Author, he is sound.

Should I be concerned about the information being up to date?

No, the basics are still he basics. All that has happened is that newer more complex boards have been introduced.

Yes I know the Author, he is sound.

That's good to know. The authors of Sailing for Dummies have impeccable credentials including an Olympic medal for sailing.


Thanks everyone for your input.

Wildbill, yes, I get your point about playing with the kit. I've just ordered another Uno R3 board and a relay, so I can experiment without having to dismantle my current project.

Get some Nanos. Unless you want to use "shields", they are much more practical and use exactly the same ode. :grinning:

Is there a conspiracy here to scare the bejasus out of newcomers? :wink:


Truthfully, we want you to avoid making the same mistakes we all did learning the Arduino, so we may sound harsh. For example: String (capital-S) is a bad word here. (As is Fritzing, but you aren't into designing circuits yet).

If you avoid the String class and learn to use c-strings from the start, you will be a much happier camper when your programs get large and complex.

This link explains why.