As computing becomes more ubiquitous in our objects, designers need to be more aware of how to design meaningful interactions into electronically enhanced objects. At the University of Washington, a class of junior Interaction Design majors is exploring this question. These pages chronicle their efforts.

Tuesday, May 1, 2012

Reema & Jill: buzzer actuator


We started with this week’s assignment, wanting to reuse the buzzer taken from our Value-Village find. We came across problems early on. When trying to piece together two different codes, the variables were mixed up and no sound seemed to be coming from the buzzer. It turned out that our resister was too high and it fully resisted any source of power to the buzzer. After some additional help, we adjusted the sketches to permit a button use. We managed to connect that button sensor so, when pressed; it stopped the buzzer from playing its melody. Our final outcome is seen below:


























/* Buzzer Button Melody
 */ Modified from the sketch found at http://www.arduino.cc/en/Tutorial/Melody

 
int speakerPin = 9;
int val = 0; //Set the analog input to 0
int length = 15; // the number of notes
char notes[] = "ccggaagffeeddc "; // a space represents a rest
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

void playTone(int tone, int duration) {
   val = analogRead(0); // read the value from the sensor
  if (val < 100) {
  for (long i = 0; i < duration * 1000L; i += tone * 2) {
    digitalWrite(speakerPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(speakerPin, LOW);
    delayMicroseconds(tone);}
  } else {
  }
}

void playNote(char note, int duration) {
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };

  // play the tone corresponding to the note name
  for (int i = 0; i < 8; i++) {
    if (names[i] == note) {
      playTone(tones[i], duration);
    }
  }
}

void setup() {
  pinMode(speakerPin, OUTPUT);
}

void loop() {
  for (int i = 0; i < length; i++) {
    if (notes[i] == ' ') {
      delay(beats[i] * tempo); // rest
    } else {
      playNote(notes[i], beats[i] * tempo);
    }
   
    // pause between notes
    delay(tempo / 2);
  }
}

No comments:

Post a Comment