What do I need to know before i can begin an Arduino project?

All I know are the basics of Java and I don't know anything about circuits or their components (pins, digital pins, analog pins, etc...). So what exactly do I need to learn and if you know of any learning resources, that'd be great.

Thanks

Your Java will come in useful, but Arduinos are programmed in C++.
The IDE comes with a number of examples built-in, covering many devices and topics.
For more information, have a look around the Playground.

There are also lots of good books based on the Arduino in the market. Some place more emphasis on software, others on hardware. If you know Java, you're already familiar with OOP and the syntax difference between C++ and Java isn't that difficult to figure out. My guess is that you would want to buy a book that places more emphasis on the hardware elements. Amazon has a "Look Inside" feature for most books. Pick a book that looks promising and then take a "look inside" at a topic that interests you and see if that book suits your needs. With enough poking around, you'll find what you feel you need.

I feel that there are a lot of -bad- books on learning Arduino programming. In fact, I've not found one yet that I consider a good book on Arduino programming for beginners. Why? Their copious use of the delay() function. This is really useless when it comes to debouncing switch presses. All it tells you is that the switch is down again at the end of the delay, it could be merely noise that happens to hit again at just the right time, not whether or not the switch has been pressed during the delay period.

Look around the Arduino.cc website. Forget the books for now. Ignore the "Blink" sketch, instead learn the "Blink Without Delay" and "Debounce" examples that come with the Arduino IDE.

http://playground.arduino.cc/Code/AvoidDelay

Note: The Blink Without Delay sketch makes the mistake of using a long integer for the variable previousMillis, when it may be called upon to store the value from millis(), which is an unsigned long.

Try some online video tutorials first. Some are better than books.

My recently released book,"Arduino for Teens", was written to cover your situation. Someone with some programming experience getting into the world of embedded programming.
Available at amazon.com
http://www.amazon.com/gp/product/1285420896/ref=s9_simh_gw_p14_d2_i1?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=0WVRW6ATR3CJJPP8WGV4&pf_rd_t=101&pf_rd_p=1630072222&pf_rd_i=507846

CrossRoads:
My recently released book

I saw two authors :wink:

Good (team) work!

I can't see the content of the book on amazon but just the TOC. I really like the fact that you included chapters on reading spec sheets, debugging, and how to use forums. Seems to be something more than "just one more book on arduino". I'll see if I can request my library to hold a copy :slight_smile:

In fact I am planning on a book too but it is going to be a formal physical computing textbook. I'll read through yours before I start my TOC for sure.

Do you mind if I PM you a few questions on how to handle the trade mark "arduino" in your book?

Yes, no content yet, pages thru the TOC so far. Lot more than they had a few weeks ago.
I don't think we did anything to handle the trademark arduino.
Think the publisher did, chased down copyright permissions. Fair use for the name & stuff. Took all our own pictures so no issues there.
I know we had to chase Atmel down to get permission to use part of their datasheet in the book, filled out a permission request form and prompted them repeatedly to get it signed.

liudr:
In fact I am planning on a book too but it is going to be a formal physical computing textbook.

Get going on that then please 8)

My daughter's just finishing her 2nd last year of school (school year = calendar year here) and after school plans either a degree in mechatronics or an apprenticeship as a millwright. She job shadows at an industrial robot company; might get a summer job there (Southern side of the equator, summer here whoo hoo). She's dabbled in Arduino although that took a back seat to school work this year (full academic honours, top ten in the school, maths olymiad. TourDeMaths etc etc (oh and she does art which is huuuuuuge effort for the same marks as an English essay or a science report))

So anyway, you have a year. Get writing dammit!

But back on topic....

Probably best to get a starter kit, do the examples in there. I'd work through the tutorials here or also there are good ones at adafruit. Read the forums though: there are a few errors in some tutorials, like powering a servo from the Arduino 5v.

Then I'd say think up a "real" project, and go through the process of planning, designing and implementing it. A wheeled robot's always a good thing to have, since it gives a platform for all sorts of sensors and actuators.

Do
Find a sample code requiring minimal hardware , such as Blink.
Than use SoftwareSerial library and add code to Blink.
Than go thru Language Reference and learn how it is used.
Learn how to interact with your program, check functions return values, use logic expressions, if ... then, #if... etc.
Build simple "push button / see the results" application.
And for graduation - add to this simple app more buttons, LCD and build "traffic controller", but build the interface ( read the spec) to LCD (graphic?) from scratch! No library!

Don't
Copy somebody else "cool" project.

Hi,
Take a look at the how-to stuff HERE: to get started.

Comparison of several Starter sets HERE:

DISCLAIMER: Mentioned stuff from my own shop...

Uck. SKIP the Blink example. Go right to the Blink Without Delay and Debounce examples.

Long delays are just about the worst way to learn. As soon as you want to do more than blink an LED or two, you have to unlearn and relearn a different way. And delay is useless for debouncing.

polymorph:
Uck. SKIP the Blink example. Go right to the Blink Without Delay and Debounce examples.

Long delays are just about the worst way to learn. As soon as you want to do more than blink an LED or two, you have to unlearn and relearn a different way. And delay is useless for debouncing.

You and I are both out in the left field.
The question was "what do I have to know..."
Basic math, physics, basic electronics ( what does resistor do...) , Boolean algebra, usage of Boolean algebra - logic, basic computer structure ( memory, I/O, ALU etc) , very basic about computer programing - (if. when, loop etc.) ,etc.
Pick up K& R "The C programing language" and read it as a novel!
Definitely skip any books which are more than 228 pages (K&R), they are just full of pictures and click this and click that instructions..
Find out what "idiot diode" is for.
Have fun.
Cheers
Vaclav

Definitely skip any books which are more than 228 pages (K&R), they are just full of pictures and click this and click that instructions..

Kelley and Pohl is considerably longer than K&R, but I'd recommend it as a much easier read, has better examples, and isn't full of pictures.