best Arduino programming guide

Hi,
What is the best Arduino programming guide, from beginner to pro ?
thanks

I don't think there is any such thing as "best". So much depends on your preferred style for learning things. Some people like a school-room approach from bottom to top. Others like to learn by exploring practical examples - and there are plenty of examples with the Arduino IDE.

Also, there is unlikely to be a single tutorial or book that goes from beginner to pro.

If you are thinking of buying a book then I suggest you have a look at Arduino for Dummies (don't be put off by the title). At the same time have a browse through it before you buy it, don't just go blindly on my suggestion.

...R
Planning and Implementing a Program

When you feel ready to dig deeper, I found 'Arduino Internals' by Dale Wheat to be an excellent reference.

To be a professional requires several years at university. You can't fit that all into one book.

CleveRobotx:
Hi,
What is the best Arduino programming guide, from beginner to pro ?
thanks

What programming background do you have, if any ?
What electronics background do you have, if any ?

What you know or don't know already will affect how you learn about the Arduino

MorganS:
To be a professional requires several years at university. You can't fit that all into one book.

No, it does not. C++ was not even a pipe dream when I was a student. FORTRAN ruled the world then. And, yet I am a professional C++ developer now. One book as all it took. Of course, it had about 554284256788 pages, and weighed 35 tons.

If you are not professional then a single book on a single language won't make you a professional. But a professional can read the same book and write professional programs pretty quickly.

It is very frustrating when there is no feedback from the OP.

...R

UKHeliBob:
What programming background do you have, if any ?
What electronics background do you have, if any ?

What you know or don't know already will affect how you learn about the Arduino

I am a beginner at both, trying to find the best way and the best resources and methodology to learn
thank you for your help

true, it appears that my question was over simplified.
I am a beginner in Arduino and electronics in general. trying to find the best way, methodology and resources to learn. it doesn't have to be one book or tutorial, could be a list.
i found few references and books in the net, but what i was looking for is guidance on how to learn, with what should I start, what subjects should I cover and in what order ?
thanks again

CleveRobotx:
I am a beginner at both, trying to find the best way and the best resources and methodology to learn
thank you for your help

Hi,

I'm afraid you have triggered a small storm ...

It's not true you have to learn at the university to became a professional programmer: perhaps you have to to became a software/hardware engineer, but not to program an arduino like device. In fact the only difference in between an university educated person and a not one (provided the latter has studied the subject and has the due common sense, is that the former knows that both of them DO NOT master the subject, while the latter has some doubts ...).
Computing science has a solid foundation, but it is constant change, so one -either a proved professional or not- has, from time to time, to reconsider his/her goals and tools to achieve them.

I'd try by a double parallel paths: study the basics thoroughly. Provide yourself with some books -the most popular will do- on computing basics: as some of the concepts -not many- deal with intermediate maths, may be you have to recapitulate from time to time and go back to understand something that looks blurred. My best advice is to do it whenever you doubt about it -to go back-: even if you land in a subject that is not exactly what you were looking for sure it won't hurt learning it. Any case, you should insist on strengthen your basic knowledge every time you need to: it will pay in the future. Regretfully (or not) you cannot (see above) stop learning, so the limit is yourself.

The other path should be roamed carefully: buy an arduino and try it. There are plenty of examples to play with it: Change the LED flashing time; change it dynamically by pressing a button; buy an array of LEDs and show icons, letters, whatever you want. Read and display some temperatures and or humidity; do it by using your smart phone, etcetera, etcetera ... but try to understand everything you make: do not conform yourself on copying pasteing software: print the code and comment it yourself till you feel absolutely secure on editing it ... And, remember, do not became obsessed with software, at least JUST with software: do read books and articles on the concern, study, study, study ...

God luck.

Regards.

vffgaston:
Hi,

I'm afraid you have triggered a small storm ...

It's not true you have to learn at the university to became a professional programmer: perhaps you have to to became a software/hardware engineer, but not to program an arduino like device. In fact the only difference in between an university educated person and a not one (provided the latter has studied the subject and has the due common sense, is that the former knows that both of them DO NOT master the subject, while the latter has some doubts ...).
Computing science has a solid foundation, but it is constant change, so one -either a proved professional or not- has, from time to time, to reconsider his/her goals and tools to achieve them.

I'd try by a double parallel paths: study the basics thoroughly. Provide yourself with some books -the most popular will do- on computing basics: as some of the concepts -not many- deal with intermediate maths, may be you have to recapitulate from time to time and go back to understand something that looks blurred. My best advice is to do it whenever you doubt about it -to go back-: even if you land in a subject that is not exactly what you were looking for sure it won't hurt learning it. Any case, you should insist on strengthen your basic knowledge every time you need to: it will pay in the future. Regretfully (or not) you cannot (see above) stop learning, so the limit is yourself.

The other path should be roamed carefully: buy an arduino and try it. There are plenty of examples to play with it: Change the LED flashing time; change it dynamically by pressing a button; buy an array of LEDs and show icons, letters, whatever you want. Read and display some temperatures and or humidity; do it by using your smart phone, etcetera, etcetera ... but try to understand everything you make: do not conform yourself on copying pasteing software: print the code and comment it yourself till you feel absolutely secure on editing it ... And, remember, do not became obsessed with software, at least JUST with software: do read books and articles on the concern, study, study, study ...

God luck.

Regards.

Thank you very much for your guidance and help.

I'm guessing that by"beginner to pro" you don't mean becoming a professional programmer, just someone who is good at it. I'm in agreement with Robin2 that the Example Menu of the IDE is the place to start. If you like paper (or electronic) books, here's three beginning books from my shelf:

Beginning C for Arduino by Purdham
Arduino Projects Book by Fitzgerald and Shiloh
Programming Arduino, Next Steps by Monk

I find it difficult to give advice because people learn best in different ways and have different backgrounds. When I first got an Arduino I had no previous experience in C or C++but I had programmed before in a number of languages for my own amusement and had even sold a couple of programs many years ago.

My previous experience meant that I could at least apply logic to the programs that I wrote and I found the examples useful in seeing Arduino code in action and I have gone on from there. As well as reading books and/or online tutorials you would do well to look at the examples in the IDE and examine what they do and how.

The first example that I loaded was Blink and once I had compiled and uploaded it I looked at the code and saw that it used the delay() function. The name was a clue as to what it did, so I changed the parameter and the blink rate changed. WOW ! I can program in C++ ! (not really)

I worked my way through Jeremy Blum’s Arduino tutorials on YouTube and found them very helpful. They may be 7 years old but what they show is still relevant. Of course, they may not suit you but take a look. The best advice I can give is to plunge in and try things. I cannot learn by just reading, I have to actually do things.

One thing to look out for is that C and C++ tutorials on line and on paper may not be directly applicable to the Arduino environment because of how it works with input/output and the limited memory available but all of the standard C functions work (with minor exceptions) so go ahead and try them

should I learn c or c++?

CleveRobotx:
should I learn c or c++?

Both. More knowledge of different languages can help you come up with interesting strategies when you encounter programming difficulties.

CleveRobotx:
should I learn c or c++?

Just my opinion, but learn C++ and ignore the Object Oriented Programming stuff to start with, at least as far as writing any yourself. Most libraries us OOP but you don't need to understand the internals until you are ready to delve into them.

CleveRobotx:
should I learn c or c++?

Both are basically the same: C++

C++ is a superset of C. The language C is really simple. C++ adds to C by being 'object oriented'. In Arduino you often see objects associated with libraries which control peripherals. They will have the ability to create a model of the peripheral as an object the program interacts with. This is where something like begin.oled() comes from. In the library code, the message 'begin' is sent to the object 'oled'.

The nice thing about Arduino programming is that all the complexity is kept in the background. So you can happily program in C, using the Arduino library extensions, without worrying about how to control the peripheral. You just call functions that use the object involved.

If you start with a general C or C++ book, you'll need to go most of the way through before you get to anything practical for Arduino programming with the books from my list, you get right into Arduino from the start.

While Arduino is programmed in full C++, the Arduino extensions abstract things and use functions like digitalWrite() and analogRead(), which are not part of basic C or C++. They come from from a preloaded arduino library.

So I suggest that you start with some Examples from the IDE, then study a book specifically on Arduino programming like the ones in my list. As you work through the book, write lots and lots of code. Not your final, perfect code, but experiment with how things work. Get a Uno or other board that supports the Serial Monitor, and Serial.print() often to watch what your program is doing.

Andabove all, have fun! Asking questions here is also a good way to learn, but read lots before you do.

Thank you guys so much for being kind and taking the time to explain and give your advice, which is valuable and extremely important for me and other beginners. I have learned a lot and still have a long way to go, but it feels great to know that you can always get help, thanks to the contribution of good people willing to share their knowledge and experience with others.
:slight_smile: