Sketching08 talk: Good Hardware APIs et al

The Sketching in Hardware ’08 conference was held at RISD in Providence, Rhode Island this year. Both RISD and Providence were very welcoming and I think we had a lot of fun. Once again, Mike pulls off an awesome conference.

For my talk, since I didn’t have one big thing I’ve been working on this last year, I decided to shotgun blast a bunch of different topics out there, arranged roughly on the topics:
- Good Hardware APIs – about the evolution of BlinkM’s layout,
- USB not on Rails – an update to a previous Sketching talk of mine, and
- From 2D to 3D – experiments in 3D shapes from 2D lasercutter output

The PDF of my talk with notes:
- sketching08-talk-todekurt.pdf (5.8MB PDF)

And some screencaps of a few of the slides:

Continue reading Sketching08 talk: Good Hardware APIs et al

flattr this!

BlinkM & Arduino 3D models

Here’s a really quick 3D model of BlinkM, if anyone needs it. It’s accurate to ~0.1mm.

- blinkm.skp — BlinkM SketchUp model
- rgb_led_piranha.skp — Piranha RGB LED SketchUp model

And here it is plugged into the awesomely done Arduino Diecimila model by Jon-Paul from the Google 3D Warehouse.

SketchUp is pretty great, but I found a problem with it if you’re trying to make accurate to-scale electronic parts: it won’t create surfaces with an area of <1mm. Took me a while to figure that out. The solution is to make a 10x or 100x size version and then do a scale by 0.1 or 0.01 when you’re done.

flattr this!

How To Do Big Strings in Arduino

Arduino makes it pretty easy to store & use character strings, but those strings compete with your variables, so you can’t do as much. Here’s how to put big strings into read-only program memory and use them.

Lots of sketches can have big strings in them. Maybe you’ve built a little command-line interface or you’re storing small web pages (for net-connected Arduinos). Normally you do something like this:

char hellostr[] =  "<html><head><title>hello world</title></head>"
                   "<body><p align=center><h1>hello world</h1></p>
                   "</body></html>";

// and then sometime later

Serial.println( hellostr );

The problem with this is that “hellostr” is stored in RAM along with your variables. The ATmega chip in Arduino only has 1kB of RAM. If your code is getting complex, and you’re using big strings, and lots of libraries, you may start having mysterious problems. Arduino can’t warn you if your sketch starts using too much RAM.

Instead, you can use PROGMEM, or PROGram MEMory, to store your strings. That is, the flash ROM memory that your code lives in. Using PROGMEM strings can be tricky, but here’s a little function called “printProgStr()” to make it almost as easy.

const char hellostr[] PROGMEM = "...";     // notice added 'const' and 'PROGMEM'

// given a PROGMEM string, use Serial.print() to send it out
void printProgStr(const prog_char str[])
{
  char c;
  if(!str) return;
  while((c = pgm_read_byte(str++)))
    Serial.print(c,BYTE);
}

// and then at some point

printProgStr( hellostr );

If you have another use for the string that isn’t “Serial.print()”, just create your own function and put whatever per-character handling function in there instead.

flattr this!

Get on the BlinkM Bus with a BlinkM Cylon

BlinkMs are a lot of fun by themselves, but they’re also little network devices, each having its own address on an I2C network. Here’s where I think BlinkM can really shine since it makes controlling multiple RGB LEDs pretty easy. For Maker Faire, I wanted to show off this facet by having a single Arduino control a dozen or so BlinkMs on a single I2C bus. The result is shown in the little video below.

Read on for how this was put together.

Continue reading Get on the BlinkM Bus with a BlinkM Cylon

flattr this!

ThingM & BlinkM at Maker Faire!

ThingM (Mike and me and some friends) will be at Maker Faire Bay Area 2008 this weekend. Come by and visit us!

Our bench will be about “Experiments with Smart LEDs”. Basically we’re showing off BlinkM, the projects that led up to BlinkM, like my experiments with Smart LEDs, some future products we’re working on, and some fun projects using these gizmos.

Here’s some photos of some of the projects as they were being built:



And lots of the projects will be using various types of Arduino, if you’re into that sort of thing.

flattr this!

FunGizmo’s colorful tiny breadboards

I just received some colorful tiny mini-breadboards from FunGizmos.com. They are pretty great. Now quickie ideas prototyped with Arduino can be even smaller than the “1¢ Arduino under-shield”.

They appear to be the same quality as the other breadboards I have, just different color plastic. I can already tell the colors will help me differentiate projects, which all tend to look alike from 10 feet away. Normally when you buy these from Digikey or similar places, these little ones cost $7 a piece. FunGizmos has them for $5.40. And that’s cheap enough to get a few. Note that all these tiny breadboards don’t have the side power busses like the larger breadboards do. That’s the price you pay for tininess.

flattr this!

“WiiChuck” Wii Nunchuck Adapter Available

Want to hook up a Wii Nunchuck to an Arduino but don’t want to cut up the cord on your Nunchuck? Yeah me too. So I made some of these:

wiichuck_adapter1.jpg

wiichuck_adapter2.jpg

It’s a small PCB that adapts the Wii Nunchuck connector to standard 4-pin header. I call it the “wiichuck adapter”. It plugs directly into the Arduino, no wiring necessary. You can get one too for $4.

Available from the following wonderful shops:
- FunGizmos.com. FREE DOMESTIC SHIPPING. International shipping for $1 more.
- Tinker.it (UK)
- Little Bird Electronics (Australia)
- Sparkfun. Ships domestic & internationally. Be sure to order header pins too!
- Freduino.eu (EU)

Continue reading “WiiChuck” Wii Nunchuck Adapter Available

flattr this!