What was your biggest struggle or revelation?

All,

I'm trying to develop an Arduino workshop for artists. In order to develop a useful program, it would help me tremendously to hear from the non-technical folks who work with the Arduino.

What concepts did you struggle with when beginning to use the Arduino? What information or resources was the most helpful?

I appreciate all of your advice, stories, and anecdotes!

Thanks,

MAL

This sounds like a job interview question :slight_smile:

LOL!

The most annoying part is gettign the code to work and be small enough to fit on the arduino.

Keeping the Arduino IDE from writing all that red sh*t in the bottom window when I try to compile or upload. It sure is fussy about details :wink:

Lefty

If the intended audience are newcomers to electronics, then a topic that will be very usefull for them to understand is pull up / down resistors and switch debouncing.

My understanding of these topics increased by orders of magnitude after reading Lady Ada's tutorials:

http://www.ladyada.net/learn/arduino/

Other topicis could be current limiting resistors for LED's, driving DC motors and other high current loads with transistors or H bridges:

http://itp.nyu.edu/physcomp/Tutorials/HighCurrentLoads

All the above topics are popping up in the forum over and over and over.

Making operations occur on a time schedule while still performing other tasks. In short the efficient and effective use of millis().

Finally a question I can answer! Woot!

Yeah; what Sam said. More from reading the forums than actual experience, having come into things from the other direction, but... understanding "fast" but "not concurrent" is a big thing.
Switch bounce, and receiving character from a serial port, are both issues where you need to understand that the Arduino is MUCH faster than external human-scale events, but that doesn't mean that the Arduino can do other things while it is doing delay()...

Well I am not exactly a beginner but I have taught a fair few, and important concepts I have found are:-

  1. A program will only do what you say not what you want.

  2. The instructions never stop being executed or wait until an input is ready, you have to instruct it to wait.

  3. It's a just binary bits, what gives it meaning is the construct you put on the bits. This means a value can represent a number a printed character or a series of on and off states, the bit pattern is no different but the construct you put on it defines it's meaning.

  4. Before you code draw a flow diagram to get the sequence of things right.

  5. These are humbling devices, if it doesn't work then YOU are doing something wrong, or understanding something wrong. So be modest.

  6. If you find you self writing the same piece (or very similar) section of code over and over again there is a better way of doing it.

The other day, a friend whom I showed the clock I made, asked me "Can't you build something useful?" "Like what?" I asked. "Like a garage door opener" he answered back. That was my biggest revelation.

"Can't you build something useful?" "Like what?" I asked. "Like a garage door opener" he answered back. That was my biggest revelation.

;D

Biggest struggle: IDE versus structs/enums

Biggest revelation: Arduino is c++

Another good thing to teach beginners is that almost no matter what you connect to Arduino you have to connect it's ground to Arduinos ground. This has had me stumbeled on a few ocasions and it is a frequently recurring issue in forum posts.

This shoud go together with explaining that the reason is that the ground is the common reference, and if you don't compare voltage levels to the same "0" it won't work as expected.

When something doesn't work, you did something wrong.

People new to hobby electronics will often assume "there must be a bug in the chip, the software, problem with the board, etc."

Rarely is the problem anyone else's fault, except the person putting it all together.

My biggest struggle was and is to keep my programs low profile to fit in the space of the arduino..
I come directly from C# and Windows API Programming and had never any experience in doing any code which is small, reusable and fast at the same time... that was the hardest thing to struggle with...

My biggest struggle was and is to keep my programs low profile to fit in the space of the arduino..

I don't understand how people run out of space unless it's something major like reprap. Then again, I remember $10,000 computers with 32k of ram, and right before Arduino I was doing PIC assembly, so to me 16k seems pretty expansive.

Maybe if you're trying to store long text strings or LED animation patterns there's a problem :slight_smile: