Changes

Students/Ian Petrov

7,796 bytes added, 20:51, 20 March 2010
no edit summary
I am a Visual Arts - Media major with an interest in graphic design.I was born in Europe, and moved to Canada when I was 5. I've lived in San Diego since I was 10, and graduated from University City High School before coming to UCSD as a transfer. I have been working with computers since grade school, and am highly interested in pursuing a career in the computer field. I have been in interested in electronics also since a young age and I think it will add an interesting dimension to my artistic career, and am eagerly looking forward to learning how to make art projects using them. ----http://i238.photobucket.com/albums/ff152/3pod151/School%20Stuff/DSC_0055-1.jpg Portable Heater----http://i238.photobucket.com/albums/ff152/3pod151/School%20Stuff/DSC_0051.jpg Generator? ----http://i238.photobucket.com/albums/ff152/3pod151/School%20Stuff/DSC_0050.jpg Air Conditioner ----http://i238.photobucket.com/albums/ff152/3pod151/School%20Stuff/DSC_0049.jpg Cell Phone ----http://i238.photobucket.com/albums/ff152/3pod151/School%20Stuff/DSC_0046.jpg Car Keys ---- == Midterm Proposal ==My proposal is a hat which contains a cooling fan enabled by a switch. The switch will hang down from the inside of the hat to about shoulder length, enabling the wearer to turn on and off the fan. This is a crude implementation of a warm weather cowboy hat which provides cooling apart from shade. It will be powered by a 9v battery, and connected by a normally open switch. In order to operate the fan, you must hold down the button.  http://i238.photobucket.com/albums/ff152/3pod151/School%20Stuff/MidDiag.jpg ---- == Final Proposal ==My final project will be called "Punch a Celebrity". It will consist of a punching pad with a picture of a celebrity on it. The pad will have an impact sensor attached to a arduino/breakout board, which is attached to a speaker. This will enable a wav or mp3 file to play at the moment of impact, and simulate that you are actually hitting a celebrity. http://i238.photobucket.com/albums/ff152/3pod151/School%20Stuff/proposal.png Code----<pre>//Ian Petrov VIS147A Final//code edited from Adafruit Wave Shield Site#include <FatReader.h>#include <SdReader.h>#include <avr/pgmspace.h>#include "WaveUtil.h"#include "WaveHC.h"  SdReader card; // This object holds the information for the cardFatVolume vol; // This holds the information for the partition on the cardFatReader root; // This holds the information for the filesystem on the cardFatReader f; // This holds the information for the file we're play WaveHC wave; // This is the only wave (audio) object, since we will only play one at a time #define DEBOUNCE 100 // button debouncer // this handy function will return the number of bytes currently free in RAM, great for debugging! int freeRam(void){ extern int __bss_end; extern int *__brkval; int free_memory; if((int)__brkval == 0) { free_memory = ((int)&free_memory) - ((int)&__bss_end); } else { free_memory = ((int)&free_memory) - ((int)__brkval); } return free_memory; }  void sdErrorCheck(void){ if (!card.errorCode()) return; putstring("\n\rSD I/O error: "); Serial.print(card.errorCode(), HEX); putstring(", "); Serial.println(card.errorData(), HEX); while(1);} void setup() { // set up serial port Serial.begin(9600); putstring_nl("WaveHC with 6 buttons"); putstring("Free RAM: "); // This can help with debugging, running out of RAM is bad Serial.println(freeRam()); // if this is under 150 bytes it may spell trouble! // Set the output pins for the DAC control. This pins are defined in the library pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); // pin13 LED pinMode(13, OUTPUT); // enable pull-up resistors on switch pins (analog inputs) digitalWrite(14, HIGH); digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH); digitalWrite(18, HIGH); digitalWrite(19, HIGH); // if (!card.init(true)) { //play with 4 MHz spi if 8MHz isn't working for you if (!card.init()) { //play with 8 MHz spi (default faster!) putstring_nl("Card init. failed!"); // Something went wrong, lets print out why sdErrorCheck(); while(1); // then 'halt' - do nothing! } // enable optimize read - some cards may timeout. Disable if you're having problems card.partialBlockRead(true); // Now we will look for a FAT partition! uint8_t part; for (part = 0; part < 5; part++) { // we have up to 5 slots to look in if (vol.init(card, part)) break; // we found one, lets bail } if (part == 5) { // if we ended up not finding one :( putstring_nl("No valid FAT partition!"); sdErrorCheck(); // Something went wrong, lets print out why while(1); // then 'halt' - do nothing! } // Lets tell the user about what we found putstring("Using partition "); Serial.print(part, DEC); putstring(", type is FAT"); Serial.println(vol.fatType(),DEC); // FAT16 or FAT32? // Try to open the root directory if (!root.openRoot(vol)) { putstring_nl("Can't open root dir!"); // Something went wrong, while(1); // then 'halt' - do nothing! } // Whew! We got past the tough parts. putstring_nl("Ready!");} void playcomplete(char good) { // call our helper to find and play this name playfile("GOOD.WAV"); while (wave.isplaying) { // do nothing while its playing } // now its done playing}  void loop() { //putstring("."); // uncomment this to see if the loop isnt running switch (check_switches()) { //this is the loop which cycles the arnold sounds based case 1: //on which switch you connect to. playcomplete("STOP.WAV"); break; case 2: playcomplete("SOB.WAV"); break; case 3: playcomplete("DONT.WAV"); break; case 4: playcomplete("LACK.WAV"); break; case 5: playcomplete("FIST.WAV"); }} byte check_switches(){ static byte previous[6]; static long time[6]; byte reading; byte pressed; byte index; pressed = 0;  for (byte index = 0; index < 6; ++index) { reading = digitalRead(14 + index); if (reading == LOW && previous[index] == HIGH && millis() - time[index] > DEBOUNCE) { // switch pressed time[index] = millis(); pressed = index + 1; break; } previous[index] = reading; } // return switch number (1 - 6) return (pressed);}  // Plays a full file from beginning to end with no pause.void playcomplete(char *name) { // call our helper to find and play this name playfile(name); while (wave.isplaying) { // do nothing while its playing } // now its done playing} void playfile(char *name) { // see if the wave object is currently doing something if (wave.isplaying) {// already playing something, so stop it! wave.stop(); // stop it } // look in the root directory and open the file if (!f.open(root, name)) { putstring("Couldn't open file "); Serial.print(name); return; } // OK read the file and turn it into a wave object if (!wave.create(f)) { putstring_nl("Not a valid WAV"); return; } // ok time to play! start playback wave.play();}</pre>----http://i238.photobucket.com/albums/ff152/3pod151/School%20Stuff/DSC_0229.jpg http://i238.photobucket.com/albums/ff152/3pod151/School%20Stuff/DSC_0232.jpghttp://i238.photobucket.com/albums/ff152/3pod151/School%20Stuff/DSC_0241.jpg----http://i238.photobucket.com/albums/ff152/3pod151/School%20Stuff/DSC_0246.jpghttp://i238.photobucket.com/albums/ff152/3pod151/School%20Stuff/DSC_0253.jpg
25
edits