Where to start and where to go from there?

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

I have been facing the "how to learn/experiment" with Arduino for a while now. Anyhow, I just started a project on KickStarter that would help bring Arduino easily into the classroom or club.

If you would like to help, Please see ArduinoKit.US and share the link with your friends. I'm hoping to have these in my classroom soon.

Dan

I need your help. I am a long-term teacher and have really enjoyed learning and using the Arduino platform. However, I've had a difficult time working this in to club and classroom because all the parts get lost and are difficult to read values etc.

I have a project in KickStarter to develop a classroom learning pack and I need your support. Even a $1 pledge or just by sharing the link. Hopefully I can get enough funds to make this project a reality.

See it at www.DuinoKit.com
Dan

For more-than-beginner programing, this is good:

Programming Arduino "Getting started with Sketches*- Simon Monk - Excellent start to programming

Hi everyone,
recently i found arduino on the internet and started reading and watching videos of what it can do so i decided to give it a try, i have always wanted to build "semi-robots aka remote operated not automated" but never had any education on programing or electronics.

That said, im complete and total noob when it comes to this, i just hope with time i would be able to learn enough to build a humble sea raw robot with hand held controller with small screen.

I am aware that this isnt a one day thing, infact i see it as never ending learning process and really it doesn't matter how much it will take but i want to learn to program and learn about electronics. If i ever get to a point of working prototype i would love to share it with everyone and try to make a small plug and play hobiest open source rov for everyone with hopes the code and "design" could be refined as much as possible cost and performance wise.

So i'm hopeing you guyz could advise me what i should get first, what arduino board and what extras for first basic beginner "projects" in arduino begginer books, links would be of a great help. Really appriciate your help and time you take to help me out.

P.S. i plan to learn about electronics and programing from moste simple basics to more advance stuff

Take care

Support a new Arduino based product to learn / teach the Arduino platform. Currently on KickStarter. www.DuinoKit.com

Focalist has it right. If you need to eat an elephant, you do it one bite at a time. Same with programming. Virtually any software task is a five step process (i.e., The Five Programming Steps). They are:

  1. Initialization Step-- things you must do to create the environment in which the program will run. On a PC, it might be to set up a database connection, a printer port, etc. For the Arduino, it might be as simple as setting the baud rate for the serial communications for the serial monitor. Quite often, this step is done in the setup() loop.

  2. Input Step -- this is where you get the data that needs to be acted upon. Programs usually take data in one form (e.g., from a sensor) and transform it into another form (e.g., save it on an SD card).

  3. Process Step -- this is where you transform the data from the Input Step in some way.

  4. Output Step -- this is where you show the results of your process. It might be sending data to Serial.print() or storing the data on an SD card, or...whatever.

  5. Termination Step -- this is sort of a cleanup process...releasing any resources the program used (e.g., file handles, ports, etc.) Quite often, it's the Initialization Step in reverse. For Arduino type of programs, there might not even be a termination process, although usually there is some "bail out" path if things go very badly.

The point is, take your programming task and divided it down into manageable chunks like Focalist suggested. Having done that, you can use Sideways Refinement to flesh out additional details that each of the Five Programming Steps might require. For example, if the Input Step is using sensors to get the raw data, you might refine this as InitializeSensors(), ReadSensorData(), and ParseSensorData(). Having done that, you are ready to hand the raw data off to the Process Step. This Divide-and-Conquer process can often help answer the "The-problem-is-so-big-I-don't-know-where-to-start" issues.