# How do you convince people to use Arduino

So I have this friend with a problem...I swear...it's not me! I like Arduino. I wasn't sold on the concept at first but I'm firmly in the "it's awesome" camp.

Anyway, what I'm really looking for is a pitch to some (tech) friends about the benefits of Arduino over going out and rolling a different solution from scratch (or ordering a eval kit from a uC vendor). I'm also trying to convince a school that Arduino is a great way to teach kids programming over other starter kits and such. They also want to do some robotics eventually, so I figured I could sell them on that.

I have some ideas on what to tell them, but I really want to hear what others have to say. And before anyone says it, I understand the best way would be to show them. But some things need to be explained before that and that's what I hope to hear from everyone. Thanks!

I understand the best way would be to show them. But some things need to be explained before that.

I disagree, unless you have to pitch the Arduino over a phone. A small kit is portable enough that it can be brought to any meeting or chat, and even set up and played with on a small table with enough room for lunch for a lunch meeting. In fact you can bring a model than illustrates each point I'm going to make below, and it'll all still fit in a small box, lay out completely on a small table, powered by batteries, and be durable enough to be handled without breaking by the person you are pitching to.

A pitch is a conversation that is largely one-way due to you anticipating and answering all their needs and issues before they voice them, and often before they even know they have that need.

You have two audiences, technical people, and schools. You're going to have to understand their needs before you can develop the pitches, and while there will be some overlap, you'll find that the pitches will focus on fundamentally different needs/issues.

For technical friends:

• Arduino is FUN
• Arduino is EASY
• Arduino is FAST
• Arduino is CHEAP

Hobbyists are, above all, in it for the fun. Show them that it's fun to build with arduino, and the reason it's fun is that it's easy and fast. They are concerned about price, but most are willing to pay a bit more if it makes it easy to build something with complex behavior.

For schools:

• Arduino is ROBUST
• Arduino is EASY AND FUN TO LEARN
• Arduino teaches important TECHNOLOGY
• Arduino is EASY TO TEACH
• Arduino is CHEAP

Schools are not as concerned about cost as they say they are. Check out the science catalogs to see that educational products are more expensive, partly because they are more robust (last longer in a student environment) and partly because they are built into a curriculum so the teachers can spend more time teaching and less time preparing to teach.

So the school needs to know that it's hard for a student to break an arduino (intentionally or not), they need to know that it's easy for the students to learn, which is helped by the fact that it's fun. They need to know that important skills students absolutely need in the future will be taught by the process of learning about the arduino. They need to know that it's easy to teach - they don't have to send teachers to a training course, non-technical teachers will be able to solve most arduino problems (or there's a good community that will support the teacher), and that the curriculum is already in place with the suggested parts and kits. Lastly, it still has to be cheap.

Unfortunately, the arduino fails rather spectacularly at two of these tasks, and is complicated by a few others:

It's not robust. Place a stray wire between one of the pins set to output high and ground, and you may fry a single port. It might not be caught, but could 'spoil' the results of later student projects for months or years before it's noticed, diagnosed, and repaired. Damage needs to be very difficult, and when it occurs it needs to be instantly noticeable, and easily and cheaply repairable.

It's not easy to teach. There's no established curriculum. Any teacher doing this will need to make their own curriculum up as they go, which means they need to be at an advanced level of understanding with the Arduino, which requires training. Teaching may be a labor of love, but it's also a job, and the school isn't going to pay for them to learn it on school time, and they aren't going to spend their free time to learn it. There isn't enough support to get a new, untrained teacher going even if the curriculum was already set. They would constantly be stymied by small problems and would lose days trying to diagnose problems and get students re-started on their projects because they can't call a mentor (or technical support) and get an instant diagnosis and fix.

Forming a curriculum is hard, but making it teach technology principles that are general and arguably useful for the average student is very difficult work to do well. Then you have to add fun and interesting on top of it so students actually learn the principles, rather than just following instructions, getting the expected results, and moving on having gained no significant knowledge.

This doesn't even begin to touch infrastructure issues - computer lab use, safety issues, dealing with IT for the software and drivers that need to be installed, etc.

The point should not be to train them to use arduino (ie, rote memory or mere knowledge). The point should be to increase their ability to understand a system/principle (analysis), and then leap from there to new thoughts, ideas, and concepts (synthesis).

It's not trivial work. But you have to start somewhere, and showing them a 6 month cirriculum in a 5 minute presentation on a table during lunch is going to be your best bet.

The Arduino platform was my first exposure to electronics of any kind. I'm a Java developer by trade and I found the clear, self-documenting, high-level Arduino "language" (API, really) to be the key. I think anyone, even if they've never seen a line of code, can grok the following:

void loop() {
digitalWrite(LED_PIN, HIGH);
delay(1000);
digitalWrite(LED_PIN, LOW);
delay(1000);
}


I'm starting to understand that there are port registers behind those digitalWrite calls, but I don't need to. You can accomplish a lot with the AVR just by using this simple API.

Aside from the intrinsic value of having a development environment that runs out of the box on the vast majority of computing environments in use today (a la John's first comment; the openness is nice and key to the Arduino's success, but not a selling point for someone who just wants to dive in), you've also got hardware that communicates with a host PC as easily as writing to stdout. Have you seen the code behind Serial.println()? It's not intuitive or easy!

The hardware is almost couch-cushion-change cheap. If your friends are considering an eval kit from any uC vendor, they're probably looking at spending an order of magnitude more for the initial purchase over an Arduino; if they get an Arduino and don't like it, they're out like thirty bucks!

There's an interesting ecosystem where you see a Lego-like set of modular building blocks (shields) that lets you build things without ever lifting a soldering iron; buy, build, visualize, play. If you want to get your hands dirty, you can start breadboarding, and when you run out of breadboards, it's time to start protoboarding and then designing your own boards. That's the route I've taken. :-)

The barriers to entry are almost non-existent: just a willingness to learn.

A great point about the Arduino platform is made by Dave Jones on his Electronics Engineering Video Blog.

His opinion is from a professional standpoint and he even dares to mock the Arduino name to prove that he is not a fanboy. He states that the Arduino is very interesting because it doesn't make use of some sort of strange parallel development environment, like the PICAXE. Even beginners are learning to program the Arduino platform in real C, albeit somewhat simplified. If you want you can actually program AVR C directly from the Arduino IDE and the step from Arduino to AVR studio is not that big either.

• I usually program my boards from the command line. You can compile Arduino sketches or C/C++ using a makefile or shell script. I use EMACS to edit and make to compile. It is very quick. – jluciani Jan 6 '10 at 16:36
• Is it just a C/C++ Mode or is there a separate Arduino Sketch Mode? – Amos Jan 6 '10 at 20:48
• The Arduino team wrapped the Java based editor for the "Processing" programming environment (from which the whole "sketch" thing originated) together with AVR-GCC (a freely available version of the GNU C/C++ compiler for AVR microcontrollers) and written an easy to use library on top of that. So it's all just C/C++ but instead of writing : PORTB |= (1<<PB2) you write: digitalWrite(10,HIGH) which is somewhat easier to understand. You can still use the "hardcore" AVR syntax in the sketch if you want. An Arduino "sketch" is a C++ program that is to be wrapped into a library before compilation. – bpijls Jan 7 '10 at 7:32
• I was actually referring to EMACS, does it have a separate Arduino Sketch mode or is jluciani just using the existing modes for C/C++? – Amos Jan 7 '10 at 23:04

The main advantage of Arduino over other platforms is the community of users and developers that openly share and advance the platform. Currently no other platform has that breadth and depth of support.

Here are some bullets --

• The software tools are free and run on Linux, MAC and PC. Easy programming using a USB port.
• Software is open and easily modified to create custom examples.
• The schematics of the boards and numerous peripherals are freely available. There are a wide variety of compatible boards available that can be tailored to specific applications.
• Plenty of mentoring on arduino.cc and sites like chiphacker Lots of local user groups.

I make some standard Arduino/Sanguino compatible boards that integrate a variety of peripherals (Zigbee (XBee), RTC, DAC). I also do custom designs. My application hints and documentation are at http://www.wiblocks.com If you have specific questions about my boards or want to discuss your program further please send me an email.

By far the best way is to get Silicon Chip magazine to support it. The PICAXE is a classic example - it's far more popular in this part of the world than anywhere else - even in the UK where it was developed - because an enthusiastic PICAXE user (Stan Swan) got Silicon Chip interested and starting writing articles about it. So if there is a real Arduino nut out there who can write good articles he/she should write a beginner's guide to Arduino and send it to the magazine. If it is good enough/interesting enough, they will publish it (and I speak from experience!). You might not make a fortune but you will help spread the Arduino gospel.

As a teacher for 17 years (Maths not Technology or ICT) in the UK, if I wanted schools to focus on using Arduinos to teach basic electronics then I would need to do one of two things (or both):

1. Convince the School Improvement Officer/Advisor who deals with Technology teaching for a particular Local Authority that the Arduino was the best match for his Schools' Electronics needs, in fact I would probably need to convince a number of them which means getting to them at a conference. The people who would need to be doing this convincing would themselves probably need to be experienced Technology Teachers who may or may not have used Arduinos in a classroom situation and are able to provide practical demonstrations as well as field what-if questions. Unfortunately if there weren't experienced people demonstrating to me, I would just assume that the demonstrators were salesmen and that at most 50% (and that's being generous) of what they were telling me was doable. The Advisors/School Improvement Officers are the people who in England at least organise much of the In Service Training so getting them on board would be a first step. If you manage to sell them on the idea of Arduinos then they would need to organise more demonstrations/training at a more regional level to disseminate ideas/techniques/suggested course content to the teachers themselves. It might be worth showing people how to build there own Arduino clones too so that they can get started with little monetary cost.

2. Another route would be to persuade either the Government's Key Stage 3 Technology people or one or more of the Major Exam boards that Arduinos are the thing that has been missing from Electronics teaching all these years. Again this would involve demonstrations to relevant people first, which would then need to result in training for the actual teachers "at the chalk face" (I haven't had a blackboard in my room in 7 years but it's still know as being at the chalk face).

In practical terms at the school where I work each Key Stage 3 pupil will get about 12-18 weeks of electronics education, which revolves around basic circuits, basic soldering, and designing an electronic game which uses a PCB designed by each pupil (a technician handles the actual etching). That's it for the first 3 years of secondary school technology, there might be some work on circuits in science too, there are no microcontrollers involved. If they want to pupils who choose to take Technology at GCSE can create a more complex version of this electronic game for their GCSE coursework, but that's it. In ICT the focus is on using various software packages to solve common problems, with a brief whistle stop tour of flow charts and simple programming. If they do anything more complicated than LOGO I'd be surprised.

Other schools may do more electronics but I'm not actually sure how far they take it, much of the Technology curriculum seems to be focused on Design techniques and using skills which are taught to solve specific problems rather than saying lets equip people to use these specific tools or pieces of technology.