Go Down

Topic: Please could we have a decent manual (Read 1 time) previous topic - next topic


now I know this is my first post, and I only really registered here to make my views known for the minute. Please can you tell me what sort of a joke you think the instructions on the website are for learning the code. I am not totally new to programming, but it is not the easiest thing for me. But then when I have concepts that are yet unknown to me being used to explain another concept then I can say with a certain amount of confidence that whoever is writing that page has no business to do so. Now I know what a variable is, so I will offer some advice on the page about variables for starters. The concept of what a variable is is not that hard. But why doesn't that page explain the types of variables. The mere concept of variables is useless unless you understand the different types and what they can contain. Just knowing that variables exist does me no good. On that page there is no mention that there are different types of variables, just some links at the bottom of the page telling me that I might like to know about these things. Considering arduino is designed for people who have no prior electronics or programming experience I am astounded by the incompetence of the instruction pages. If I really worked an artist I would have given up long ago. Given the clarity of the instructions I am now wondering if it was wise to bother ordering my first arduino board.

this seems to be an ailment of every programming language, I am yet to really make a flying start in any programming language because those who explain how to program have no idea how to explain. You are teaching us a new language, there is no point in trying to teach me how to order a meal in a foreign language until you have taught me how to walk in the door and say hello. And I say this as a speaker of two languages who has extreme difficulty with languages but learnt one from the ground up not back to front. I hope this constructive criticism is of help to you. In the meantime are there any other decent resources to tell me how to use the arduino system.
My shop: www.sparkylabs.co.uk/shop


May 23, 2012, 12:12 am Last Edit: May 23, 2012, 12:17 am by Graynomad Reason: 1
I agree that a beginner who first encounters the Arduino site will struggle with C/C++ and this has been brought up before.

I'm well experienced and indeed rejected Arduino when I first started looking at getting back into embedded work because I though it had a brain-dead instruction set. It took me a while to realise what the deal was.

So I think it should be made more clear that you really need to study up on C.

In Arduino's defence the argument goes that Arduino runs the C/C++ language and there are so many tutorials and books about the language that trying to describe it there is superfluous.

Hidden at the bottom of the reference page there is this

The Arduino language is based on C/C++. It links against AVR Libc and allows the use of any of its functions; see its user manual for details.

This is hardly hardly beginner-friendly, for example "links against AVR libc", what does that mean? Anyway the link takes you to the AVR library info which has nothing about the C language per se.

What they do describe on the Arduino page (to varying degrees of usefulness) are the Arduino libraries.

So I think maybe making it obvious that you need to study up on C and also providing some recommended reading would be useful.

those who explain how to program have no idea how to explain.

This is a common problem in all fields (except maybe teaching :)). The people that are good at it aren't usually the people that are good at describing it.

NOTE: C is a notoriously difficult language to learn which doesn't help, but in the embedded game it's the only language worth learning IMO.
Rob Gray aka the GRAYnomad www.robgray.com


What exactly is it that you lack - programming skills or how to plug cables into sockets?

If you like real books, take a look at "The ANSI C Programming Language 2nd ed. by Brian W. Kernighan and Dennis M. Ritchie". You may get hold of a cheap used version. Maybe there are ebooks too.

These sites aren't too bad either, but they don't necessarily cover the specifics of small microcontrollers.


I think the best approach is learning by doing.
• Upload doesn't work? Do a loop-back test.
• There's absolutely NO excuse for not having an ISP!
• Your AVR needs a brain surgery? Use the online FUSE calculator.
My projects: RGB LED matrix, RGB LED ring, various ATtiny gadgets...
• Microsoft is not the answer. It is the question, and the answer is NO!


Having worked at learning several computer languages as well as fumbling along trying to learn enough of a second language to communicate(spanish) I would say that you have not been putting very much effort into overcoming the initial learning curve.

Arduino C shares many concepts that are common with a number of computer languages and the concepts are common across those languages. I was self taught using BASIC back in 1979 using a TRS-80. I also began learning Z80 Assembly. I went back to college in 1986 and picked up Pascal (Turbo Pascal) and spent some time working with CPM and more z80 Assembly. There was a slight learning curve, but nothing like trying to pick up Spanish... From that I taught myself C.

If you want to learn programming Arduino the best way is to work your way through sme of the sample programs - wire up the blinkin lights, add more lights and blink them in sequence, play with the PWM pins and blink the lights. Use the Arduino REference and try the different forms of if statment and such. youw will learn the language and you will gain proficiency in 10 to 20 hours of trying. And you will learn it better than a book that spoon feeds you will ever do. Try something, look at the reference, and try it again is really a rather efficient way to learn. As human beings we learn from our mistakes. Not that we can't learn from our successes, but if we are only having success then we aren't trying anything new. An just maybe, we learn more efficiently from our mistakes.


Jun 12, 2012, 05:03 am Last Edit: Jun 12, 2012, 05:11 am by JimboZA Reason: 1

but nothing like trying to pick up Spanish... From that I taught myself C.  

Wow... that's impressive  :P

I was taught Fortran in '74 as a first-year engineering student, and then Cobol in '82 when I did a post-grad diploma in data processing. In both of those classes we learnt to chart the program first. The Fortran guy used traditional flowcharting (diamonds and boxes....), while the Cobol gal used structure charts. In both cases, to me at any rate, it helped get my mind round the language when it came to coding. In Cobol, we actually used pseudo-code; at the time I thought that was dumb, but in hindsight it's a pretty good idea I think.

But Fortran (and languages like Basic) and Cobol are "wordy" languages which aren't too bad for the beginner, while C is more difficult to absorb being more "codey".

Compare wordy code like:

Code: [Select]
FOR I = 5 TO 50 STEP 5  

with C's way of doing it....

To my point (at last.....):

Maybe a good project would be a tutorial in ArduinoC for beginners, but overcoming the shortcomings mentioned by the OP. I might give that a bash, maybe there's scope for a collaboration here.
Roy from ITCrowd: Have you tried turning it off an on again?
I'm on LinkedIn: http://www.linkedin.com/in/jimbrownza


On the matter of we and you...

(As in "could we have a decent manual" and "criticism is of help to you", my emphasis)

The first words on Arduino's web site are "Arduino is an open-source electronics prototyping platform" (my emphasis). The nature of open-source is that there is no we and you.... just we. We're all part of an Arduino community.

Yes I know Arduino is a (semi-?) commercial undertaking, with branding and whatnot, but at heart it's just a bunch of guys and gals sitting round making stuff. Then they write up what they think they should- everything written is written in the spirit that it will help other users, and isn't (necessarily) a full-fledged manual as you might expect from Microsoft Press or Sams or McGraw-Hill and so on.

I got involved in this because my 15yo daughter is interested in a career in engineering, now I'm hooked on fiddling with Arduino and LEDs and such like just as she is. A better (or maybe I should say differently focused) manual is indeed required- but in an open-source world, it's down to the community to support itself, not rely on factory reference materials as one would expect from a Microsoft. (And what's more, even in a Microsoft world, dozens of authors make a handsome living writing aftermarket manuals.)

Roy from ITCrowd: Have you tried turning it off an on again?
I'm on LinkedIn: http://www.linkedin.com/in/jimbrownza

Nick Gammon

Considering arduino is designed for people who have no prior electronics or programming experience I am astounded by the incompetence of the instruction pages.

Where to start? Arduino levers off an existing language: C++

There are many, many books on C++, plus many web sites teaching how to use it. The Arduino site could have just said "Google C++" but instead made an attempt to make an elementary instruction on how to use the language, to save beginners doing that. Perhaps their result wasn't perfect.

The thing is, programming is complex. It can't be explained fully in a few web pages. Certainly you can get a simple program going in a few minutes, like "blink".

You may as well ask for a "decent manual" on raising children. It is something for which a lot of books abound, some more or less useful than others. You have to supplement that with your own experience. The rewards for doing so are great, the more you learn the more you can achieve.

As JimboZA points out, there is no real "we" and "them" here. This isn't a huge multinational corporation making billions selling licenses for software which has all sorts of restrictions on whether or not you can share it. You could consider starting to lever off the experience of people who are already using it, and then when you feel more confident, contribute back into the community for the next generation of learners.


You may as well ask for a "decent manual" on raising children.

Oliver Twist.
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Go Up