Let's back up a bit. What exactly is "Arduino". At first glance, it's a family of open source boards each featuring an Atmel AVR processor. Nothing really unusual here. They generally have a simple connection to a host development PC. Yeah, that's been done before. More importantly, it's a complete development environment that makes it really easy to get something running. The IDE (integrated development environment) is pretty rudimentary - nothing particularly ground breaking there. Serious developers will decry the lack of debug support - "print statements are so 70's". But, the real strength of the Arduino is in all the libraries that are available. Want to do PWM, got it. Want to read analog, got it. Want to talk to x, y or z IC, probably got it. No more staring at intimidating datasheets to figure out what registers to twiddle. Lots of libraries for this or that and tons of sketches showing how to use them. A wet behind the ears newbie blasts their ego stroking beacon, blinking out "I got it to work" with almost no effort.
So what is Arduino? It's EASY. Simple. Friendly. Fun. and, oh so gratifying.
Snapping back to the topic at hand. Here comes Andy Artist who want to put a bunch of RGB LEDs in his mobile "True North". He wants the color of the balanced acrylic balls to turn blue when pointing north, red when pointing south and fading to different colors in between. With the new magneto sensors, this is a pretty easy concept and actually not very hard to do. Andy hears that Arduino is really easy so he goes looking on line. He finds someone that has done something similar to what wants. From that he figures out he needs to order an Uno, some RGB LEDs and a module based on an HMC6352 compass (magneto sensor, in the parlance). He found lots of code to drive it and has read enough to have confidence he can actually make it work.
The package arrives and he pulls everything out. The first thing he needs to do is download "Arduino" (the IDE). He gets it installed and is soon talking to the Uno. He starts playing with the RGB LEDs and in short order he's making all sorts of color. His confidence soars! Then he hooks up the HMC6352 and loads up the example code which supposedly works. He presses "verify" ('cause in Arduino, you don't compile) and BLAM! he gets slaughtered with a ton of error messages, all very confusing and obscure. After all, Andy is an artist, not a propeller head. His confidence falls through the floor. He might give up at this point, victim to some obscure dogma that the Arduino team has adopted.
Hopefully, Andy isn't the quitting type and digs a bit deeper. What he discovers is that the example code he got isn't up to date with Arduino 1.0 and the developer needs to fix it. "Please check with the author for an updated version." Maybe he finds the author. Maybe he doesn't have a clue who that is. Maybe some kind soul sends him an updated version. Maybe he just gives up. No matter what the outcome, do you think Andy is a big proponent of Arduino? "Man, I got it working but it was really hard."
What happened here? The Arduino developers decided that they needed to makes some changes for the 1.0 "final" version. They renamed an internal file "WProgram.h" to "Ardunio.h". Also, "Wire", a key library, was changed to make some of the function names more "correct". Unfortunately, a lot of code was written that included "WProgram.h" and used the old Wire names. In 1.0, they all broke! So, how hard would it have been to preserve the old wire interfaces? Or leave WProgram.h alone instead of renaming it Arduino.h? (Or even just including Arduino.h in Wprogram.h???) Yes, Arduino is free and the developers can do anything they want but these changes indicate a total lack of understanding what they have created. And the trivial issue of WProgram.h vs Arduino.h indicates more interest in adhering to some techie dogma than making it easy for the Andys of the world to create using Arduino. What is really distressing is to see the invective being heaped on people who point out this rather obvious issue. I hope that the Arduino team is learning from all this. I certainly hope that Arduino has NOT left the building.
No comments:
Post a Comment