Fifteen total n00bs can teach you a lot.

Fifteen total n00bs can teach you a lot.

Yesterday I gave (the beta version of) a class I’ve put together called “Blinky 101 with Arduino”. There were fifteen students, all adults with programming experience, ranging from some basic scripting to deeply hardcore computer science. My goal for the 90-minute class was to take these folks from “what the heck is this piece and where does it plug in?” all the way to “Hey everyone! Look at MY LED animation!”

We succeeded. See attached video clip of the proud students holding up their 20-pixel, battery-powered, Arduino Nano-driven animations.

Along the way, they learned a ton, and so did I! Some of the lessons learned were about things like which laptops need FTDI COM port drivers and which don’t. But some of what emerged was more interesting.

Everyone was OK working with RGB pixel values eg-
leds[i] = 0xFF0000;
but everyone also took much longer wrangling HSV values. And watching this, and helping people out, I realized that there is [was :slight_smile: ] a missing set of APIs in the library that would help people use HSV color a lot more easily.

So despite the fact that we’re already at RC2, I’m adding the capability to set pixel values directly from HSV colors:

leds[i] = CHSV( 90, 255, 255);

You could already achieve the same effect other ways, but they were typically 5-7 lines of source code, versus one clear, simple assignment. There will be a few different ways to do this now, all of them one-liners.

We’ve put a lot of time into support for HSV colorspace in V2 of the library, and my sense, particularly after witnessing fifteen new users in person yesterday, is that without the new simpler APIs, much of the value we’ve created in the HSV code would go unused.

What else did I learn from teaching the class? That (surprise! not!) we need more example code for users new to the library, and reference docs for people digging in deep. Both are in the works. Some users will want the tech ref doc, but all library users are new library users at some point, and as we’ve added more breadth and depth to the library APIs, we need examples of how to use it all.

I will be putting the course materials on line, as well as a bill of materials for the “Blinky kit” of parts that each student got to work with.

Paraphrasing Guy Kawasaki (who was unfortunately paraphrasing Mao), I’m helping to “Let a thousand pixels bloom.”

Kids and their toys …

I would love to see your materials for this class, I have an hacker/artists space locally I would like to run this for.

Same here, I’m keen how to animate LED strips with Arduino and unsure what software I should use like C++? Do you know of any material / video’s that have help out?

I write all my code in the Arduino IDE (which essentially is C++) and program my animations with that.

I really appreciate that Ashley, what do you think I should do to start understanding Arduino’s IDE? I’m willing to learn

Honestly, just install it, and go through the examples. If you have any kind of programming background, no matter how little, you should be able to pick it up pretty fast. If all you care to do is just manipulate LED strips, then get the FastSPI_LED2 library, install it and look at its example code.

Post questions / trouble and many of us are ready to help.

For some of these folks, writing control logic is brand new - I think what he’s talking about is more fleshed out examples in terms of ‘project’ based builds. Build an LED belt/hat/whatever that reacts to sound in some arbitrary manner, or an example using a DS1307 and a strip for a round clock effect - perhaps with a user-specified # of LEDs to display the time on. You could have 2 which would show the minutes as either 0-29 or 30-59 or, have 30 displaying 0,2,4,6,8 etc. Am I too far off base. In reality you wouldn’t need the DS1307 - you could just use millis() for a proof of concept.