It’s officially event season! I was sorting through my calendar this afternoon and I thought I’d share a few geeky hardware/arcade/pinball/open source/hackercamp events that I’m looking forward to over the next few months.
May 18-19: Maker Faire Bay Area, San Mateo, CA. I’ll be there with a booth this year (Glowy Geiger Chimes).
May 17-19: Dayton Hamvention, Dayton, OH. I want to check out this HUGE ham radio event sometime, but my attempt to go to Dayton this year was thwarted because, yet again, it falls on the same weekend as the Maker Faire. Maybe next year.
This year I decided (in true last-minute fashion) to build a couple demos to show off my Geiger Counter kit at the Maker Faire Bay Area. One of these demos used my Geiger Counter kit to create ambient music:
(Thanks to @j_jwalrus for the interview and video!)
The PULSE output of each Geiger counter is connected to one input of a 74LS04 hex inverter on the Protoshield. Each time a Geiger counter detects a radioactive decay, it sends a 0.1ms 3V high pulse to one input of the inverter. The 74LS04 functions as a level shifter and outputs an (inverted) 5V pulse that is suitable for driving an ordinary (5V) Arduino.
Five outputs of the 74LS04 are connected to input pins on the Arduino. For convenience, I used Analog inputs 0-1 as digital input pins. The rest of the gates are connected to digital pins 10-12.
I used the PinChangeInt library on the Arduino to trigger an interrupt handler every time a falling edge is detected on one of the geiger inputs. This interrupt handler stores the pin number to a variable and sets a flag to tell the main() function that something has happened.
The main() loop polls the interrupt flag and waits for something to happen. When it detects that an interrupt has occured, it sends a “Note On” midi message to the Music Instrument Shield, using the SoftwareSerial library built in to Arduino 1.0. I had to hack the library a bit to get it to work in conjuction with the PinChangeInt library, since the SoftwareSerial library automatically installs interrupts for all pins (bad, bad SoftwareSerial!)
The value of the note depends on which Geiger counter triggered the interrupt. In the video I am using note ‘C’ over five octaves, centered around middle C (midi note 60). (I am not a musician, but this seemed to provide a pleasing sound that wouldn’t annoy me or my neighbors at the Faire too much.)
The Arduino sketch is a complete disaster right now, having been thrown together at the last minute, but I plan to clean it up and post it soon.
Things I learned while creating this demo:
Sparkfun doesn’t include stacking headers with their shields unless you buy them in retail packaging. $30 in overnight shipping fixed that.
Arduino is still a pain to program for if you do anything moderately unusual, like try to use two libraries together that both use pin change interrupts.
You can get away without issuing “Note Off” commands for midi instruments that fully decay. (I think the MIDI spec frowns on this, but it works on the Sparkfun shield, at least.) This greatly simplified programming the demo, so I took advantage of it!
I’ll be in the Maker Shed selling Geiger Counter kits. I’ll be doing a demo on Saturday at 6PM in the Shed and will also be giving a presentation about finding radioactivity in everyday objects on the Make: Demo stage in Expo Hall on Sunday at 2PM.
Two exciting events are coming up in September – the New York Maker Faire and the 2011 Open Hardware Summit. This year I’m fortunate to be traveling to New York for both events, and I’m looking forward to meeting other makers and OSHW enthusiasts.