Announcements

November 24, 2007
Reading for November 27th, are now posted. Enjoy!

October 2, 2007
To upload your thoughtless acts, create a new assignment page like any other lab. You'll see "Thoughtless Acts" listed as one of the assignment options.

May 24, 2008
This site has been archived and is no longer editable. Stay tuned for the next version, coming in the fall!


Happy Halloween! Ghost

Project Members: 
Aylin Selcukoglu

Description

With Halloween coming up at the end of the month, I thought I would do a little festive October project. I explored motion as an output focusing on the vibration caused by the DC motor with a cork eccentric weight attached to it. The goal was to make one of those spooky door decorations so if someone came to my front door and stepped on the mat on the ground in front the FSR would read in this pressure and then in response the ghost would glow red and move about as a spooky tune played in the background. The only problem was that the FSR I soldered to longer wires broke already, so I had to use my FSR that was connected directly to the breadboard, unfortunately.

Components Used

red LED (Light Emitting Diode)
20-ohm resistor (red, red, brown, gold)
1k resistor
DC motor
diode
transistor
FSR 
piezo speaker 

Arduino Code

/*
 * Happy Halloween! Ghost
 */

int potPin = 1;   // select the input pin for the potentiometer
int motorPin = 9; // select the pin for the Motor
int redPin = 10;  // select the pin for the red LED
int speakerOut = 7; // select the pin for the piezo speaker
int val = 0;      // variable to store the value coming from the sensor
byte names[] = {'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C'};  
int tones[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956};
//byte melody[] = "2d2a1f2c2d2a2d2c2f2d2a2c2d2a1f2c2d2a2a2g2p8p8p8p";
// thanks to John Ward for helping me come up with the spooky melody.
// I attempted to use the E minor triad followed by the D minor triad (minus the a)
// so e g b d f
//byte melody[] = "4e4g4b3e3g3b2e2g2b1e1g1b2p8p8p8p4d4f4a3d3f3a2d2f2a1d1f1a2p8p8p8p";
//byte melody[] = "4e4g4e4g4e4g4e4g4e4g4e4g4d4f4d4f4d4f4d4f4d4f4d4f4d4f4d4f2p";
//byte melody[] = "4e4g4b4e4g4b4d4f4d4f4e4g4b4e4g4b4d4f4d4f4e4g4b4e4g4b4d4f4d4f2p";
//byte melody[] = "4e4g4e4g4e4g4e4g4d4f4d4f4d4f4d4f4d4f4d4f4d4f4d4f2p";
byte melody[] = "4e4g4b4e4g4b8d8f4e4g4b4e4g4b8d8f4e4g4b4e4g4b8d8f2p";
// count length: 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
//                                10                  20                  30
int count = 0;
int count2 = 0;
int count3 = 0;
int MAX_COUNT = 24;
int statePin = LOW;

void setup() {
  pinMode(redPin, OUTPUT);     // sets the pin as output
  pinMode(speakerOut, OUTPUT); // sets the pin as output
  Serial.begin(9600);
  analogWrite(redPin, 0);
}

void loop() {
  val = analogRead(potPin);    // read the value from the sensor, between 0 - 1024
  Serial.println(val);
  //if the FSR detects pressure then that means
  // someone is stepping on the mat
  if(val > 50) {
    // send full power to the motor to make the ghost move
    analogWrite(motorPin, 255); // analogWrite can be between 0-255
    analogWrite(redPin, 255);
    
    digitalWrite(speakerOut, LOW);     
    for (count = 0; count < MAX_COUNT; count++) {
      statePin = !statePin;
      //digitalWrite(ledPin, statePin);
      for (count3 = 0; count3 <= (melody[count*2] - 48) * 30; count3++) {
        for (count2=0;count2<8;count2++) {
          if (names[count2] == melody[count*2 + 1]) {       
            digitalWrite(speakerOut,HIGH);
            delayMicroseconds(tones[count2]);
            digitalWrite(speakerOut, LOW);
            delayMicroseconds(tones[count2]);
          } 
          if (melody[count*2 + 1] == 'p') {
            // make a pause of a certain size
            digitalWrite(speakerOut, 0);
          }
        }
      }
    }
  }
  // no one is on the mat
  else
    analogWrite(redPin, 0);
    analogWrite(motorPin, 0);
    //digitalWrite(speakerOut, 0);
}

 

Item

lab6bread

breadboard

 lab6ghost

ghost setup

video: 


Comments

Comments from TAs

Very nice project! You brought together a lot of different components from different labs and also worked in the physical form of your project. It's too bad that the FSR under the floor mat didn't work out! If you bring your project to the Halloween party on Tuesday, we could work on hooking it up.


Powered by Drupal - Design by Artinet