Monday, December 10, 2007

Sunday, December 9, 2007

Xylophone Send and Receive code

//boolean keyHit = false;
int potPin = 2;
int ledPin = 13;
int val = 0;
int keyHit[] = {0,0,0,0,0,0,0,0};

void setup() {
Serial.begin(9600);
for(int x=0;x<=5;x++) {
pinMode(x, INPUT);
}
for(int y=8;y<=13;y++) {
pinMode(y, OUTPUT);
}
}

void loop() {
for(int i=0; i<=7; i++){
val = analogRead(i);
// Serial.println(i);
/* if(val > 40 && keyHit == false) {
Serial.println(i);
// Serial.print(" hit");
Serial.println(val);
keyHit = true;
digitalWrite(i+7, HIGH);
delay(30);
digitalWrite(i+7, LOW);
delay(200);
break;
} */
if(val > 40 && keyHit[i] == 0) {
Serial.println(i);
// Serial.print(" hit");
Serial.println(val);
keyHit[i] = 1;
digitalWrite(i+8, HIGH);
delay(30);
digitalWrite(i+8, LOW);
delay(100);
break;
}

else if (val == 0) {
keyHit[i] = 0;
}
}
}

Saturday, December 1, 2007

Transistor Array Vs. Array of Transistors

Originally, we were working with a transistor array, also known as a Darlington Array. This was the only variety locally available. It worked for a few hours and then stop working.

Darlington Array

After looking as specs and talking to several people, it appears that this variety of transistor array is not rated to handle the amperage output of the solenoids. While the running amperage was fine, the startup was not.

This leads us to use an array of TIP120s that can handle the amperage. The TIP120s also use a 1N4004 diode.

Array of TIP120s

Refer here for more information.

Wednesday, November 28, 2007

Timelime

Wednesday and Thursday (11/28-29)
Since the transistor array cannot support the amperage output of the solenoids, we will be building arrays of TIP120s.

Friday (11/30)
Having issues with Piezo moving around. Need to determine a way to keep it beneath the Xylophone plates and maintain it's vibrati-ness.

Saturday-Sunday (12/1-2)
Working on the X-port to see if we can get two to communicate with each other.

Monday-Wednesday (12/3-5)
Debugging

Thursday-Friday (12/6-7)
Make it pretty!

Saturday-Sunday (12/8-9)
Open

Monday (12/10)
Presentation

Piezo and Solenoid testing code

boolean keyHit = false;
int val = 0; // value coming from the Piezo

void setup() {
Serial.begin(9600);
for(int x=0;x<=5;x++) { pinMode(x, INPUT); } for(int y=8;y<=13;y++) { pinMode(y, OUTPUT); } } void loop() { for(int i=0; i<=5; i++){ val = analogRead(i); if(val > 40 && keyHit == false) {
Serial.println(i);
Serial.println(val);
keyHit = true;
digitalWrite(i+8, HIGH);
delay(50);
digitalWrite(i+8, LOW);
} else if (val == 0) {
keyHit = false;
}
}
}

Monday, November 19, 2007

Mounting Sensors and Actuators

piezos mounted on xylophone
Mounted piezos onto the xylophone. Tested with simple processing code.


solenoids mounted on plexi
Mounted solenoids onto plexi glass.

Sunday, November 11, 2007

Testing Components

We are still waiting for the xylophones, but we can pre-test the components to see if they are feasible.

Ledex Miniature 12VDC Tubular Solenoid
solenoid
We powered up the solenoid and the shaft pops out when powered and drops when the power is removed. It appears that it will work with our system if we mount them on the underside of the the mallets.

To sense when a xylophone key is struck, we are testing piezos and FSRs.

FSR
fsr
Gets good readings but relies on the user hitting sensor directly, which means the sensor needs to be mounted on top of the keys and be touched by the mallet.

3 Lead Piezo Disk
piezo
The piezo seems to work better. The piezo picks up vibrations. It's drawback is that there appears to be a 3-5 seconds delay between hitting keys.