Changes

Students/Tung Mach

7,447 bytes added, 21:27, 22 September 2011
Field Research
== Electronic Technologies for Art I ==
In the quarter of Winter 2010, Lance registered for a class called Electronic Technologies for the Art with Robert Twomey, due to his passion for electronics. Lance finds the class intriguing because he likes the work behind electricity and the process of assembling. Though, Lance doesn't have any knowledge nor previous experience with electronics, he hopes to gain the intelligence to strengthen his creative mind in the art and perhaps acquire a new hobby.
 
== Field Research ==
http://www.stockmarketinvesting.com/wp-includes/images/stock-market-exchange.jpg
Stock Market
 
http://brucefong.files.wordpress.com/2009/02/flight-delayed.jpg
Airport Terminal
 
http://www.trekexchange.com/images/NYC_Times_Square.jpg
New York Time Square
 
http://www.ultimatesolutions.com/engineering/images/computer-chip.jpg
Processor
 
http://www.blisstree.com/playlibrary/files/2008/07/disney-wall-e-remote-control-robot-toy.jpg
Wall*e
 
== Midterm Project Proposal ==
When it comes to looks, my first idea would probably look like a CD case, or some kind of box. Being a closed switch, if one was to open it, a button would be released, allowing the circuits to connect to set off the alarm. Upon looking inside the box, you can see all the mechanics that are made up into this anti-theft system. My second idea would simply be a mouse trap, probably with lights and sounds coming out of it. My third idea would probably involve the most work, building a small elevator and having at least two floors with a switch."
http://photos-f.ak.fbcdn.net/hphotos-ak-snc3/hs421.snc3/24329_1288317681297_1030830148_30803190_4434777_n.jpg
== The Midterm Project ==
When I wrote my project proposal, I had a lot of ideas that I wanted to do, but not everything went well. I decided to start off with some new ideas from scratch. Then suddenly, I came up with something. I decided to make a netbook cooler, as no company has made one yet. The purpose of this cooler is to decrease the temperature of the netbook by fanning below . This project is simple, but yet simple. The cooler will have two features, an automatic switch so when a netbook is placed on top, the cooler will automatically start fanning, and a turning knob to adjust the speed of the fan. The cooler was easy to make, I placed the red switch on top of the box, so that way when something is pressed against it, it would connect the circuit all together, making the fan spin. I placed the knob on the back so adjust the volume of the fan, which is also connected to the circuit. The turning knob is also known as a potentiometer, it can be treated as a resistor as you can change the volume of the electricity flowing through the motor that is rotating the fan. The box is actually made out of a cereal box, wrapped with black construction paper. Inside the box, the circuit board is placed in the back, which is also connects the wire from the battery, potentiometer (turning knob), and the switch button.Upon use, this product actually works. Though, it will only fit netbooks only, it still cools down the netbook slightly. The unique feature about this cooler is that it doesn't require USB to connect to a netbook, as it could run on either battery for high mobility or simply through AC power. 
http://hphotos-snc3.fbcdn.net/hs240.snc3/22779_1263308816091_1030830148_30747202_990259_n.jpg
Front View
http://hphotos-snc3.fbcdn.net/hs240.snc3/22779_1263308856092_1030830148_30747203_6125969_n.jpg
Back View
http://hphotos-snc3.fbcdn.net/hs220.snc3/22779_1263308896093_1030830148_30747204_5043710_n.jpg
Netbook placed on top of the cooler
 
== Final Project Proposal ==
For my final, I would like to propose a project that is related to the topic of Bionic Arduino. The definition on bionic means having normal biological capability or performance enhanced by or as if by electronic or electromechanical devices. I would like to get a 3-axis accelerometer that would be able to control a robot by just tilting and or rotating the accelerometer. With the accelerometer, I will be able to measure proper acceleration, detecting magnitude and direction of the acceleration as a vector quantity, and can be used to sense orientation, vibration and shock.
 
I will be using Arduino to produce the code that will work with my robot. The robot won't actually have any movement to move, it will be stationary. However, I will controlling the robot's body, like moving the body for an example. I will also probably add lights and sounds to the robot, so a button would probably activate the lights.
 
http://photos-a.ak.fbcdn.net/hphotos-ak-snc3/hs401.snc3/24329_1288317641296_1030830148_30803189_5324550_n.jpg
Illustration of Project
http://photos-d.ak.fbcdn.net/hphotos-ak-snc3/hs421.snc3/24329_1288317721298_1030830148_30803191_3231918_n.jpg
 
== Final Project Documentation ==
Presented on March 11 (Thursday), 2010.
 
For my final project, I made a bionic puppet. Instead of controlling a puppet with your hands, you can now control your puppet using a controller. Using the Nintendo Wii Nunchuck as a 3-axis accelerometer, you control the puppet by tilting, rotating, and pushing buttons. Tilting down and up controls the Y-axis, moving the head up and down, and rotating it left and right controls the X-axis, moving the head left and right. Pressing the "C" button will make the puppet beep, pressing the "Z" button will hold the head in its place. I would like to name him Spazzy, because he likes to twitch a lot.
 
http://hphotos-snc3.fbcdn.net/hs482.snc3/26393_1294431994151_1030830148_30814980_6621906_n.jpg
http://hphotos-snc3.fbcdn.net/hs482.snc3/26393_1294432034152_1030830148_30814981_863787_n.jpg
http://photos-b.ak.fbcdn.net/hphotos-ak-ash1/hs482.ash1/26393_1294432074153_1030830148_30814982_2379686_n.jpg
http://hphotos-snc3.fbcdn.net/hs502.snc3/26393_1294432114154_1030830148_30814983_5056626_n.jpg
http://hphotos-snc3.fbcdn.net/hs502.snc3/26393_1294432154155_1030830148_30814984_2240416_n.jpg
Spazzy: BEEP! BEEP!
 
Arduino Sketch
<pre>
#include <Wire.h>
#include <string.h>
#include <stdio.h>
 
uint8_t outbuf[6];
int cnt = 0;
int ledPin = 13;
int servoPin = 7; // Control pin 7 for servo motor
int servoPin2 = 6; // Control pin 6 for servo motor
int pulseWidth = 0; // Amount to pulse the servo
int pulseWidth2 = 0;
long lastPulse = 0;
long lastPulse2 = 0;
int z_button = 0;
int c_button = 0;
int refreshTime = 20; // The time in millisecs needeed in between pulses
int minPulse = 1000; // Minimum pulse width
int minPulse2 = 500;
int dtime=10;
 
#define pwbuffsize 10
long pwbuff[pwbuffsize];
long pwbuffpos = 0;
long pwbuff2[pwbuffsize];
long pwbuffpos2 = 0;
 
void setup()
{
beginSerial (19200);
Wire.begin ();
nunchuck_init ();
pinMode(servoPin, OUTPUT); // Set servoPin as an output pin
pinMode(servoPin2, OUTPUT); // Set servoPin2 as an output pin
pulseWidth = minPulse; // Set the motor position to the minimum
pulseWidth2 = minPulse2;
Serial.print ("Finished setup\n");
}
 
void nunchuck_init()
{
Wire.beginTransmission (0x52);
Wire.send (0x40);
Wire.send (0x00);
Wire.endTransmission ();
}
 
void send_zero()
{
Wire.beginTransmission (0x52);
Wire.send (0x00);
Wire.endTransmission ();
}
 
int t = 0;
void loop()
{
t++;
long last = millis();
if( t == 1) {
t = 0;
Wire.requestFrom (0x52, 6);
while (Wire.available ()) {
outbuf[cnt] = nunchuk_decode_byte (Wire.receive ());
digitalWrite (ledPin, HIGH);
cnt++;
}
 
if (cnt >= 5) {
// printNunchuckData();
int z_button = 0;
int c_button = 0;
if ((outbuf[5] >> 0) & 1)
z_button = 1;
if ((outbuf[5] >> 1) & 1)
c_button = 1;
 
switch (c_button) {
case 1:
switch (z_button) {
case 0:
break;
case 1:
muovi();
break;
}
break;
case 0:
switch (z_button) {
case 0:
delay(10000);
break;
case 1:
delay(3000);
break;
}
break;
}
}
cnt = 0;
send_zero();
} // if(t==)
updateServo // Update servo position
delay(dtime);
}
 
 
void updateServo() {
 
if (millis() - lastPulse >= refreshTime) {
digitalWrite(servoPin, HIGH);
delayMicroseconds(pulseWidth);
digitalWrite(servoPin, LOW);
digitalWrite(servoPin2, HIGH);
delayMicroseconds(pulseWidth2);
digitalWrite(servoPin2, LOW);
lastPulse = millis();
}
}
 
int i=0;
void printNunchuckData()
{
int joy_x_axis = outbuf[0];
int joy_y_axis = outbuf[1];
int accel_x_axis = outbuf[2]; // * 2 * 2;
int accel_y_axis = outbuf[3]; // * 2 * 2;
int accel_z_axis = outbuf[4]; // * 2 * 2;
int z_button = 0;
int c_button = 0;
if ((outbuf[5] >> 0) & 1)
z_button = 1;
if ((outbuf[5] >> 1) & 1)
c_button = 1;
if ((outbuf[5] >> 2) & 1)
accel_x_axis += 2;
if ((outbuf[5] >> 3) & 1)
accel_x_axis += 1;
if ((outbuf[5] >> 4) & 1)
accel_y_axis += 2;
if ((outbuf[5] >> 5) & 1)
accel_y_axis += 1;
if ((outbuf[5] >> 6) & 1)
accel_z_axis += 2;
if ((outbuf[5] >> 7) & 1)
accel_z_axis += 1;
Serial.print (i,DEC);
Serial.print ("\t");
Serial.print ("X: ");
Serial.print (joy_x_axis, DEC);
Serial.print ("\t");
Serial.print ("Y: ");
Serial.print (joy_y_axis, DEC);
Serial.print ("\t");
Serial.print ("AccX: ");
Serial.print (accel_x_axis, DEC);
Serial.print ("\t");
Serial.print ("AccY: ");
Serial.print (accel_y_axis, DEC);
Serial.print ("\t");
Serial.print ("AccZ: ");
Serial.print (accel_z_axis, DEC);
Serial.print ("\t");
Serial.print (z_button, DEC);
Serial.print (" ");
Serial.print (c_button, DEC);
Serial.print ("\r\n");
i++;
}
 
char nunchuk_decode_byte (char x)
{
x = (x ^ 0x17) + 0x17;
return x;
}
Still in progress.void muovi (){ float tilt = (700 - outbuf[3]*2*2); float tilt2 = outbuf[2]*2*2; tilt = (tilt); pulseWidth = (tilt * 5) + minPulse; tilt2 = (tilt2-288); pulseWidth2 = (tilt2 * 5) + minPulse2; pwbuff[pwbuffpos] = pulseWidth; pwbuff2[pwbuffpos2] = pulseWidth2; if( ++pwbuffpos == pwbuffsize ) pwbuffpos = 0; if( ++pwbuffpos2 == pwbuffsize ) pwbuffpos2 = 0; pulseWidth=0; pulseWidth2=0; for( int p=0; p<pwbuffsize; p++ ){ pulseWidth += pwbuff[p]; pulseWidth2 += pwbuff2[p]; } pulseWidth /= pwbuffsize; pulseWidth2 /= pwbuffsize;}</pre>
47
edits