Finally gotten around to posting some pictures and video from the Flourish Conference, in Chicago IL. Flourish was a blast, Droops and I had a wonderful time with all the great people that we met.
Flourish Conf 09
Morgellon talks to Massimo Banzi, co-founder of the Arduino
WOW… Back from Outerz0ne and managed to catch up on sleep! I had a fantastic time with all the wonderful people attending Outerz0ne.
I’ve finally uploaded the video of my talk, so go check it out! You may notice that the few slides I use look very similar to the Phreaknic slides. That’s because they are the Phreaknic slides. I forgot to pack up my laptop power cord and since it’s kinda old, the battery life is non existent. Luckily, Jeremy and Brian (two FANTASTIC guys that were sharing the room with me and Irongeek) had an extra EEE PC they let me borrow. I managed to download the PDF of the slides from my server, a small bit of code, the arduino IDE… and throw “something” together.
Now that Outerz0ne is over, we should be getting back to a more “daily” feel. I received some conductive thread and some temperature sensors the day before Outerz0ne, so I’ll be doing some basic projects with them soon!
I’m also working on some LillyPad based projects, to create some wearable electronics. I’m starting to get the needlework down and I have acquired a sewing machine… now I just need to learn how to use the sewing machine…
It’s time to get out and spread the *duino love. Droops and I (Morgellon), will speaking again at various computer conferences through out this year.
Outerz0ne 5 Atlanta, GA March 6 - 7, 2009
I’ll be at Outerz0ne 5 in Atlanta, GA March 6th – 7th, 2009. (kinda short notice, as it is next weekend…)
My talk there is entitled, *Dunio-Punk! Manifesting Open Source in Physical Space. You can read more about it and the others talking at the Outerz0ne 5 Speaker Page. If you’re near the Atlanta area, be sure to swing by and say hello! Outerz0ne 5 will be at the Wellesley Inn 1377 Virgina Ave Atlanta, GA 30344 (more info at Outerz0ne 5 website) View Larger Map
Notacon 6 Cleveland, OH April 16 - 19, 2009
Droops and I will both be at Notacon 6 in Cleveland, OH April 16th – 19th, 2009. (A bit more notice here…)
Our talk there is entitled, Interactivity with Arduinos, Transducing the Physical World. You can read more about it and others talking at the Notacon 6 Speaker Page. If you’re near the Ohio area, make plans to come out and spend the weekend at Notacon 6! Notacon 6 will be held at the Wyndham Cleveland at Playhouse Square, Downtown Cleveland, OH 1260 Euclid Ave Cleveland, OH 44115. (plenty of directions and more info at the Notacon 6 site)
Don’t worry if you can’t make it out, I’ll do my best to post pictures and the video of the talk from Outerz0ne and Notacon.
Know of a conference where we should be speaking? Be sure to drop us a line and let us know!
It’s official; droops and I will be speaking at Notacon 6 in Cleveland, OH April 16th -19th 2009. Our talk is entitled “Interactivity with Arduinos, Transducing the Physical World”
The Arduino is an open source microcontroller development board that makes it easy for beginners in electronics to do crazy things. We are going to be continuing our Intro to Arduinos talk from Phreaknic, Anyone new to Arduino’s should watch that talk online. We will be discussing building your own devices to interact with the real world: making electronic musical instruments, wireless communication, networking Arduinos, controlling lights and sounds, sensing touch, RFID, building custom games with custom controllers, sensing temperature changes and ways of notification like phone calls, sms, hidden buzzers. We will also go into building clothes with embedded electronics.
I am working on having processing read and act on data from the ardunino, this is a simple test and code should be up soon, i am working on a code repo for Morgellon and I to share projects.
So here’ s my little version of the drum kit. I’ve just used sample code from arduino.cc, but it’s more than enough to get the project up and running. Expect to see it evolve over time, and if you plan on being at Phreaknic you can play with it there!
Here’s the sample code I used, with a few tweaks added:
int ledPin = 13; // led connected to control pin 13
int knockSensor = 0; // the knock sensor will be plugged at analog pin 0
byte val = 0; // variable to store the value read from the sensor pin
int statePin = LOW; // variable used to store the last LED status, to toggle the light
int THRESHOLD = 100; // threshold value to decide when the detected sound is a knock or not
// TONES ==========================================
// Start by defining the relationship between
// note, period, & frequency.
#define c 3830 // 261 Hz
#define d 3400 // 294 Hz
#define e 3038 // 329 Hz
#define f 2864 // 349 Hz
#define g 2550 // 392 Hz
#define a 2272 // 440 Hz
#define b 2028 // 493 Hz
#define C 1912 // 523 Hz
// Define a special note, ‘R’, to represent a rest
#define R 0
// SETUP ============================================
// Set up speaker on a PWM pin (digital 9, 10 or 11)
int speakerOut = 9;
// Do we want debugging on serial out? 1 for yes, 0 for no
int DEBUG = 1;
void setup() {
pinMode(ledPin, OUTPUT); // declare the ledPin as as OUTPUT
pinMode(speakerOut, OUTPUT);
Serial.begin(9600); // use the serial port
}
// MELODY and TIMING =======================================
// melody[] is an array of notes, accompanied by beats[],
// which sets each note’s relative length (higher #, longer note)
int melody[] = { C, b, g, C, b, e, C, c };
int beats[] = { 16, 16, 16, 8, 8, 16, 16, 16 };
int MAX_COUNT = sizeof(melody) / 2; // Melody length, for looping.
// Set overall tempo
long tempo = 10000;
// Set length of pause between notes
int pause = 1000;
// Loop variable to increase Rest length
int rest_count = 100; //<-BLETCHEROUS HACK; See NOTES
// Initialize core variables
int tone = 0;
int beat = 0;
long duration = 0;
// PLAY TONE ==============================================
// Pulse the speaker to play a tone for a particular duration
void playTone() {
long elapsed_time = 0;
if (tone > 0) { // if this isn’t a Rest beat, while the tone has
// played less long than ‘duration’, pulse speaker HIGH and LOW
while (elapsed_time < duration) {
// DOWN
digitalWrite(speakerOut, LOW);
delayMicroseconds(tone / 2);
// Keep track of how long we pulsed
elapsed_time += (tone);
}
}
else { // Rest beat; loop times delay
for (int j = 0; j < rest_count; j++) { // See NOTE on rest_count
delayMicroseconds(duration);
}
}
}
void loop() {
val = analogRead(knockSensor); // read the sensor and store it in the variable “val”
if (val >= THRESHOLD) {
// statePin = !statePin; // toggle the status of the ledPin (this trick doesn’t use time cycles)
digitalWrite(ledPin, HIGH); // turn the led on or off
Serial.println(”Knock!”); // send the string “Knock!” back to the computer, followed by newline
for (int i=0; i<MAX_COUNT; i++) {
tone = melody[i];
beat = beats[i];
duration = beat * tempo; // Set up timing
playTone();
// A pause between notes…
delayMicroseconds(pause);
}
delay(10); // short delay to avoid overloading the serial port
}
digitalWrite(ledPin, LOW);
}
I totally ripped this off from Morgellon, but it sounded fun and I wanted to try it. He is going to build his own version of this that I am sure is going to be cooler. I had to call him and ask some questions as he is most definitely the hardware end of our crazy love triangle. I want to dump the data into processing and have it animate the drums being hit, but that is for another day.
When a drum is struck, a knock sensor (backwards peizo) talks to the arduino and activates an led ot change the color of the drum (blue), after a delay the blue led goes out and the drum becomes orange again. I used a pullup resistor between the pins of the knock sensor, but i didnt get any different results with different values, so its probably dependent on the peizo that you use.
/*
droop's drum kit
dailyduino.com
droops - gmail
thanks for the idea josh!!
*/
int knockPin = 3; //pin for incoming knock sensor
int knockVal; //value from knock sensor
int knockLedPin = 10; //bue led
int normalLedPin = 4; //orange led
int lightBlue = 2000; //counter for keeping blue light on
int limit = 1000; //how sensitive the knock sensor is, lower = higher sensitivity based on piezo and pull down resistor
int blueTime = 2000; //how long the blue led stays on
void setup(){
pinMode(knockLedPin, OUTPUT);
pinMode(normalLedPin, OUTPUT);
pinMode(knockPin, INPUT);
Serial.begin(9600);
digitalWrite(knockLedPin, LOW);
digitalWrite(normalLedPin, HIGH);
}
void loop(){
knockVal = analogRead(knockPin); //read the knock sensor
if (knockVal < limit){
lightBlue = 0; //drop the value to activate the led
Serial.println(knockVal); //dump to serial for debugging
}
//this keeps the blue light on after a knock is registered
if(lightBlue < blueTime){
digitalWrite(normalLedPin, LOW);
digitalWrite(knockLedPin, HIGH);
lightBlue++;
} else {
digitalWrite(knockLedPin, LOW);
digitalWrite(normalLedPin, HIGH);
}
}
Several of my favorite Arduino/Freeduino stores have sent us in some giveaways for the con. We are not sure how we are going to be giving things out, as most are kits, I think we will be giving them out during our talk and during the tutorials going on during the day. Maybe get a few teams together during the talk and give them each a board to put together and do a project off of. Then give more coolness away for the team that makes the coolest stuff, I guess I need to bring a big box of parts.
Paul from Modern Device sent in 3 rBBB’s, 2 P4 RS232 to TTL Serial Adapter Kits, 2 LCD117 Serial LCD Boards, 2 16×2 blue LCD’s and a Serial Cable.