Where to start and where to go from there?

Hello everyone! I want to ask you guys, how did you learn Arduino and coding? Now, if you went to school for it, in my opinion you cheated! lol! Really though,I want to know, out of the people that didn't go to school for any kind of programing language and maybe do this as a hobby or just love it. How did you start learning it all.

I have a ton of books that I have either purchased or downloaded on my Kindle. I started by reading that book "Getting Started With Arduino 2nd Edition" cover to cover and did most of the projects in there. Once I finished the book, I had no clue where to go from there. I figured I would have a shot at getting down the language but I just found myself very overwhelmed. There is just to much to try to remember, and god only knows when you would need a segment of that information. I figured I was taking a wrong approch to it and decided to just think up a project and try to do it. Now that I started working on my project I can't figure out how to make it work through the programing.

If someone can give me a hand and maybe let me know what you did to learn the Arduino codes and get projects working, I would love to hear it. If you have any input on what would be a good next step for me to take to get a nice firm grip on writing working sketches, please, please, please share your input. Thank you in advanced for any help you are willing to give and taking the time to reply to my noob post!

Thanks again,
-Pete

don't try to memorize it, we have books and the internet now.

really the best way to get in deep is to think of something you would love to make and dive on in, nothing will make it stick more than banging your head against the wall a few days just to know it was really that simple once you accomplished your goal and move onto something harder

]:slight_smile:

Call me a cheater 8)
4 year BS EE degree, design engineer for a living. Coding experience from classes, projects, reading other programs, starting with BASIC in high school.
Arduino IDE seems like more capable version of BASIC to me at this point, but I think classes in FORTRAN, Assembly language, PASCAL, other classes I don't even remember taking now, programmingTRS-80s and Commodore 64s, and reading other programs here in the forum for quite a while now, have all merged to help in my programming.
Then asking questions here from the real programmers for details that weren't clear how to get to.

Well, I have started a project and I have a goose egg on my forhead from bouncing my head off of my bench. I'm trying to make a turret and in the firt stage of programing a servo as a trigger function has proven itself to be a GREAT challange. I have a different post right now, asking for help on that as well. I'm trying to have a servo go from position = 0 to 180 and back to 0 from a hit of a push button. This is why I feel like I once again I'm taking a wrong approch to learning the Arduino because I don't know the function codes. Please don't take this as me complaining, beause I'm really not I just need a little direction. I'm a hardware kind of guy and the setup is very easy to me, I'm just having a problem figuring out how to learn all the coding. Anyways, thank you to both of you guys for your posts and taking the time to respond!

Are you using the Servo library to control the servo?

Yes, I'm using the servo library, the servo sweep sketch to be exact. My problem is that I need to sweep only once from start = 0 to 180 and then back to 0 on command of a push button. I just can't seem to get it to work, but then again, I don't know what I'm doing... lol!

I don't want to clog up this thread with my personal issues that I'm having with a single project. If you wouldn't mind I have posted my sketch (that is still a work in progress) here: http://arduino.cc/forum/index.php/topic,108375.0.html
I'm hoping this thread will get a little more attension and people that are just starting or got threw a book and don't know where to go from there, could maybe find a little direction on this from the more experienced members.

I started programming BASIC for fun on the ZX spectrum when i was very young. That more than anything else is i think of the most use.
It got my brain thinking in the right way. I stopped when i got to about 13/14. I started copying the code from the back of manuals at the age of 6. From 13 onwards i made/make electronic music. I wasn't really that musical it was a smooth transition from programming to music via samplers and electronics. I started programming again when i was 20 as i thought i might get a job with it ( i didn't ). I could still remember most of what i had done as a kid and decided a couple of night classes twice a week in C++ for dos would bring me back up to speed. (It didn't). I realised that programming for windows was so far from the original world i knew that i didn't really like it. It wasn't or didn't seem very creative. I did very well in my C++ class the teacher worked for a company called Pace that built set top box's and most of what i learnt was geared for embedded systems. cash points/ISBN scanners and other stuff. At the time i didn't see any use for it beyond getting a basic grounding in C++. I have always like electronics but not really been that good at the understanding of it. Worked for a company called Calrec putting circuit boards together for mixing desks when i left school and got very good at putting stuff together.
I've never had a problem with thinking up what to do i always have more ideas than i do time or money. A couple of years ago i found the Arduino and suddenly i had a platform to leverage all my skills, from electronic construction to programming and coupled with a lot of creativity. I find learning relatively easy as long as it's something i really want to do.

I started programming BASIC for fun on the ZX spectrum when i was very young. That more than anything else is i think of the most use.

It was a BBC in my case, but you are quite right. It is a real shame that there is nothing with the same 'switch on, start programming instantly' available now. Compiled languages obviously have their place, but the 'boot straight to interpreted BASIC' machines were a great way to get started.

That is one thing I'd love to see implemented, and I think it's been done in parts. I think the 328 is a bit light for it, but a Mega with it's extra RAM (that being the critical item usually) could do it. What I have envisioned is using the PS/2 keyboard lib, TVout Lib, and some implementation of BASIC interpreter/console. Black and white composite video out done with two resistors.

I think Nick Gammon has implemented something, and others probably also, involving a bootloader variant that looks to an SD card to see if there's new firmware to flash, and if found, flashes. By the way, I think in general, I am going to look into this idea further, as it seems to me that would be a great way to handle reflashing sometimes. No computer needed, just carry a SD card with the updated firmware, reboot, and it flashes the new software. Kinda reminiscent of Cartridges (ROM) from the old Atari systems of my youth. Come to think of it, I would love to have that on a shelf to grin at now and then.. Atari ROM BASIC.

I think there are several BASIC implementations out there that could probably fit the bill and could be compiled under GCC, yes?

In any case, to the Original Poster..

You are doing great. Nothing is going to teach you more than getting something wrong and having to figure out what you need to do to fix it.. no better way to understand a thing than doing it. I'm dangerously undertrained and drawn to exceedingly foolish ideas. I consider physical laws an attempt by the Man to keep me Down. When I see something that works well, I know in my heart that I can do it less efficiently, in a more costly manner, and probably with significant risk to innocent children. In other words, I'm the guy every real engineer hates. Arduino is made for us.

Your best resource is these forums and the people that populate them. It's really simple here, actually- as long as it's a reasonably intelligent question, and you've attempted to understand it or search out an answer- ask away! Most of us here are in the same boat as you.. we are learning. We're NOT professional engineers.. we are the target audience of the Arduino project- students, artists, and others that have a need or interest in using embedded systems, but in all honesty don't want to have to get neck-deep in registers and interrupts to do so. Just a simplified version of "C", the most fundamental of all modern programming languages. You really can't choose a better language (IMO) for this type of work, and what's great is that what you learn here applies to languages that are used throughout the IT world. You learn C, you basically have also gotten a good grasp of ALL structured languages, including C++ and Java... and since Arduino is "C" with training wheels, take some time to read through the code in the examples provided with the IDE. They for the most part show how many of the commands are used, in real working programs.. I often will start with one of the examples and then build my code out from the skeleton framework provided from the example.

Happily, there is a BIG contingent of absolute engineering geniuses who jump in when they see someone who really is trying to understand and needs some assistance.. and as time goes on, these noobies rapidly start answering questions as they also learn. It really is a very interesting dynamic, welcome to it!

If there's a core truth to the Arduino project it is this: "Arduino is what you make of it...."

Thank you for the reply! I have found myself getting very comfortable with the Arduino in the past few weeks. I have neglected the grass and the beautiful weather to sit in my office hunched over my work bench with parts around me!

Now, when you stated that you normally take a skeleton of a sketch and work it around what you're doing, that basicly what I did however, I felt like I was cheating or stealing. But as I make my project more advanced and it evolves into what I thought up, these sketch skeletons have merged into something very unique. At the time that I posted this, I really just didn't have much direction and I was hoping this thread would stay alive to help the people like me who are asking the same question. You have to stop doing the "safe" projects in the book and think up something that you can use, from stuff around your house. Maybe something else that you have a passion in. Once you have an idea as to what you want to make. Everything really comes natural from there. I have been stuck and I asked in the fourm, I have asked questions just to get ideas. For the most part every person on this fourm is willing to help (except for the few that just make you want to feel like your an idiot for not knowing something), but if you don't give up and understand that these are "projects" that will not come together overnight but will take weeks, months maybe years to complete. Just being acceptable to the learning experence is all you have to do to really fall in love with the Arduino. You really have no limits so run with it! Again, thank you for all the posts, I think this would be a great post to read to anyone that is starting out, and have tryed to go by the book.... Ditch the book, and get your hands dirty!

That is actually one of Arduino's biggest strengths, also.. the fact that Arduino isn't what a lot of these sites are, what I call "Nerd Barbecues". All you find at a Nerd Barbecue are Weenies and Flamers.

It just simply doesn't play here. First, it gets really clear who the real engineers and the helpful folks are, and who is just trying to troll.. and trolls just don't get fed. I find the lack of trolls here amazing, the general "feel" of the forums is one of positive collaboration in most cases, and not "I know more than you". I think it's really a function of the population here, it's not a bunch of twelve year olds (or adults acting like twelve year olds) bickering over who has the biggest nerd badge...

Couldn't have said it better!!!!!

Now, when you stated that you normally take a skeleton of a sketch and work it around what you're doing, that basicly what I did however, I felt like I was cheating or stealing.

Don't! Those are there specifically for this purpose... in my opinion, there should be more of them! In programming parlance, these are called Skeletons or Stubs. Basic framework for a working but simple implementation of a particular function. From there, you customize and expand upon it. Just be sure to use "Save As....", and if you feel strongly, virtually every example and stub has comments indicating who the author was- just leave those comments in, and add a comment referencing that you built off their work. Fact is, 99.999% of things published here have been done before, and better, by a professional at some point. There are some exceptions of course, but more often than not, Arduino projects really do revolve around a fairly tight set of ideas-- sense/react, motor control, blinking lights. I'd say those three cover 80% of Arduino projects.

The point of Open Source is that hopefully you don't have to re-invent the wheel a hundred times, you can instead select from a bunch of wheels folks have made. When you are done with your project, it too becomes a wheel if you publish it (which you should). Someone else may have a need for what you did.. not exact replica, but close... they may then add their own whatever to it, and so on and so forth.

Even if you DO reinvent the wheel (I have, in an easy to carry triangular shape) your particular approach is likely to be unique.. and at a minimum, you learn something while having fun. Can't beat that with a stick!

I took the more basic things like the servo and IR library and that's about it to be honest with you, I had to look at a couple of different sketches becuase I did everything in steps like I started with the servo on sweep then I added a push button along with edits to the servo's range of motion. Then I removed the button and put an IR on it, followed by a series of relays, Then I had to assign the remote signals to a single function, along with adding some extras to the project.

Now my problem about sharing what I have made is that it's not the safest thing and has to do with a firarm and I don't want that to be in the hands of the wrong people because I have morals. But on the other hand I can hardley contain my excitment about how cool this project is and I want to share it and show it off. But, I really don't thing it would be a good idea to share this.

See, I'm an amputee and it's hard for me to shoot some of my guns so I made this to help me get some use out of my toys that I can't part with. You know it's like you said. I'm not reinventing the wheel, I'm just putting my own spin on it. I know there are similar items out there but to be able to build it, the way I want it, is what makes the difference. On top of it, I'm combining two of my favorite hobbies and making something that will go along with my "never let anything hold you back" attitude in regards to my disability. I don't like that word "disability", by calling yourself disabled, it's close to saying "I give up". Where there is a will there is a way and at any point I come across something that posses a challange, I go for it, and will not stop until I bring home the W!

Anyways, once I'm done with this project, I'm looking forward to my next big idea. At least I have a little background into the software, hell I have even learned some hardware tricks as well in this process. None the less, this fourm is awesome and there are a lot of good people on here and there is a big community type feel to it. Again, thank you for the replies on this fourm! Just out of curriosity what kind of projects have you done using the Arduino?

much of nothing and everything, some goofy stuff like drawing pictures on my o-scope, large led matrices, and a video game or 2, Though most of my applications are just boring things, timers, interfaces and whatnot

Hahahaha, did you really say drawing pictures on your oscilloscope? That's excellent,you have me strongly considering putting a hault on my project just to get the old Tektronix to be a purdy lil display for some artwork! Hahahaha, really that's AWESOME! I'm intrigued, please tell me more!

Peter9DO:
Hahahaha, did you really say drawing pictures on your oscilloscope?

I sure did

warning its totally ghetto

Thanks for the link! I might have to set up pong as well! Thank you for putting a delay in my project!!!! hahaha!

Hi, The Arduino QuickRef pages have quite a bit of what you are looking for, and the schematics are somewhat more readable than the originals (especially the Mega2560 one): http://arduino-info.wikispaces.com/QuickRef

Also look at some practical limitations here: http://arduino-info.wikispaces.com/ArduinoPinCurrent