
The Making of Arduino - Tsiolkovsky
http://spectrum.ieee.org/geek-life/hands-on/the-making-of-arduino
======
danilocampos
Arduino is really something special. As a kid I'd always been fascinated by
electronics but didn't really know what to do with that energy. And then I
grew up and just assumed that, well, that's over.

And then Arduino comes along and, with its simple little IDE, convinces me
that this isn't so different from the rest of my programming.

And now I get to build stuff. With my hands. Makes me feel like a kid again.

It's amazing how much you can accomplish, as Banzi has, when you can reduce
something to solving a user experience problem.

~~~
Volscio
I'm a student at NYU's Interactive Telecommunications Program where Tom Igoe
(from the article) teaches. One of our intro courses is physical computing,
which is all Arduino. It really is fun to play and build and learn circuitry
for a master's program. :) Especially after mind-numbing analyst work before
coming here... So yes, I'd say a lot of people are getting that giddy playful
experience through Arduino!

------
briancary
I was literally unboxing my Arduino Uno when I refreshed the page and saw this
link. Nice to read how the Arduino got started and where it comes from,
because I really didn't expect to see a 'Made in Italy' sticker that holds the
packaging together. Time to start building some robots....

------
joejohnson
Those guys are awesome. Anyone who's anyone in CS/EE has an amazing beard.

------
nobody3141
To misquote Clinton - "It's the software stupid"

You can buy an MSP430 dev board form TI for $5 with more features but the
thing about the Arduino is that somebody with NO knowledge of embedded
programming can go from box to flashing LED in <5mins.

I have spent longer than that trying to work out which target configuration I
have on some embedded systems (Yes Keil I'm talking about you!)

~~~
inportb
I don't know, but I'd love to hack on an Arduino in C. Or Python, if people
want to be noob-friendly.

~~~
larve
Arduino is C++. Plain and simple. Just like Processing is java.

the arduino GUI just adds some lines in front of your code, and passes it over
to avr-g++ along with some flags.

It links the whole thing to what it calls "arduino cores" and of course the
additional libraries. You can find all that stuff inside the Arduino folder
(or on macosx inside the Arduino.app) in the
Resources/Java/hardware/arduino/cores/arduino folder. After that, it just
does:

int main(void) { init(); setup(); for (;;) loop(); return 0; }

The one thing that is slightly annoying with arduino is how terribly
inefficient the libraries are. For example, digitalWrite is like half a
gazillion cycles (I remember counting, it was well in the 3 digits), while
it's one cycle if you use the normal approach (port |= _BV(bit)). Also, the
initialization code snips one timer interrupt from you, which can be annoying
as well. The way around that, because I actually like the fact that I can just
reuse some library for whatever chip is around (something that is definitely
not common in the embedded world) is to just remove the call to init() in the
main.cpp file.

The rest is really just C++, with all the avr includes and co available. You
also just need to dump whatever source you have available into your library
folder as well.

~~~
sudont
A good guide for BSD users is here:

<http://arduino.cc/playground/OpenBSD/CLI>

Most of the non-IDE toolchains I've encountered were horrific monsters,
including several TextMate bundles. I wonder how worthwhile it would be to
create a simple wrapper a la dotcloud's deploy utility, or Rails' initial
project build.

