<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>lets get physical!</title>
    <link rel="alternate" type="text/html" href="http://itp.nyu.edu/~jtd229/physcomp/" />
    <link rel="self" type="application/atom+xml" href="http://itp.nyu.edu/~jtd229/physcomp/atom.xml" />
   <id>tag:itp.nyu.edu,2006:/~jtd229/physcomp/2</id>
    <link rel="service.post" type="application/atom+xml" href="http://itp.nyu.edu/~jtd229/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2" title="lets get physical!" />
    <updated>2006-12-12T00:51:27Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.2</generator>
 
<entry>
    <title>personal range finder</title>
    <link rel="alternate" type="text/html" href="http://itp.nyu.edu/~jtd229/physcomp/2006/12/personal_range_finder.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://itp.nyu.edu/~jtd229/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=24" title="personal range finder" />
    <id>tag:itp.nyu.edu,2006:/~jtd229/physcomp//2.24</id>
    
    <published>2006-12-12T00:36:42Z</published>
    <updated>2006-12-12T00:51:27Z</updated>
    
    <summary> Personal range finder With this project I focused on making an affordable personal range finder as an assistive device....</summary>
    <author>
        <name>justin</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://itp.nyu.edu/~jtd229/physcomp/">
        <![CDATA[<p><img alt="arm.jpg" src="http://itp.nyu.edu/~jtd229/physcomp/arm.jpg" width="500" height="300" /></p>

<p><br />
Personal range finder</p>

<p> With this project I focused on making an affordable personal range finder as an assistive device. </p>]]>
        <![CDATA[<p><img alt="optional-mounts.jpg" src="http://itp.nyu.edu/~jtd229/physcomp/optional-mounts.jpg" width="500" height="350" /></p>

<p><br />
The goal was to create a portable device that could help in physically navigating different environments. There are many concerns when dealing with alternative navigation (not using your given sense for what it is commonly used for), the largest challenge is to make a usable translation from one experience to another. In making this translation it is important to consider the normative motion and logic that goes into that particular sense. If you are successful you can trigger the logical actuations that are normally linked for that sense, giving the user a much quicker learning curve. In making a device that encompasses the logic of physical space, perceived time was a important focus. I wanted to make a device that would output a specific building sensation. This sensation is akin to a surface overtaking your visual field or walking into a wall with your arm as a buffer. When doing this you calculate physically the steady bend of your arm as you move in closer to the wall or the steady relation of your size to the visual plane. Both these methods involved a constant linear progression. Information that jumps a point in perception would be no good in transferring information, every new sensation had to be fixed in terms of its previous and post-sensation.</p>

<p>I decided to use a small stepper motor to actuate the physical information, this gave me great accuracy in terms of knowing where and how much the interface is outputting. My goal was to have the output strap to the forearm of the user. After trouble shooting many methods of sensation, I came to the conclusion that the simplest and most effective force transfer was with a single point of pressure that varies according to a object distance. The closer you are to a object the more pressure is applied the farther away the less the pressure. This system works fairly reliably, but because of the lack of sensitivity of the forearm it only can describe about ten feet of space accurately. After that the rate of movement through a space is greater than the increment of information that is applied to the arm.</p>

<p>I tried to use an approach that could be versatile as possible leaving room for easy changes of use. That translated in to trying to keep the cost of production (not development!) to fewer than fifty dollars retail and have the power source as a common nine-volt battery. Also the design was for maximum simplicity and scale ability so instead of a arm mount it could easily be front mounted and could clip to a shirt and be used for crowd navigation. I am also thinking of developing a glove that would be used for small distance (6 inch or less) that could be used in industry (car mechanics, fabrication, ect.) or as assistive technology so you would always have a sense of where your hands are. Needless to say it is not a perfect interface and the resolution is not enough to use it as a sole tool of navigation but I think it does supply fifty dollars worth of help that people could use.</p>

<p><br />
This is the code it works realy well for having many steppers:</p>

<p>int rangeRead();<br />
int averager();<br />
void step();<br />
void step1();<br />
void step2();<br />
void step3();<br />
void step4();<br />
void blink(int howManyTimes);<br />
int speed = 20;<br />
int button = 0; ////////////option of button<br />
int count =0;<br />
int F1 = 0;//////////////flags in the step function to say when it is done<br />
int F2 = 0;<br />
int F3 = 0;<br />
int F4 = 0;<br />
int distance = 0;<br />
int stepperPos = 0;<br />
int buffer = 2;<br />
int RXPin  = 2; <br />
int AnalogOutPut = 0;<br />
int offset = 6;<br />
int sIn[10];<br />
int reading[2];///////numbers to be averaged<br />
int loopNumber;    // a counter<br />
int aveNumber; ///////////number to be averaged starts with zero if two then say 1<br />
int avDistance;<br />
int avDistance1;<br />
boolean loopFlag =0;<br />
//////////////////////////////////////////////////////</p>

<p>void setup() {<br />
  Serial.begin(9600);<br />
  pinMode(RXPin,OUTPUT);<br />
  pinMode(2,INPUT);<br />
  pinMode(8,OUTPUT);//////////first stepper motors out<br />
  pinMode(9,OUTPUT);<br />
  pinMode(10,OUTPUT);<br />
  pinMode(11,OUTPUT);////////end first stepper<br />
  pinMode(4,OUTPUT);//////////second stepper motors out<br />
  pinMode(5,OUTPUT);<br />
  pinMode(6,OUTPUT);<br />
  pinMode(7,OUTPUT);////////end second stepper<br />
  avDistance = 0;<br />
  count=0;<br />
  loopNumber = 0;    // a counter how many times the programs excuted<br />
  aveNumber=2; ///////////number to be averaged starts with zero if two then say 1<br />
  // start  program with a half-second delay:<br />
  delay(500);  <br />
  //stepperPos = 119;<br />
  // blink the reset LED 3 times:<br />
  blink(3);<br />
}</p>

<p></p>

<p></p>

<p>////////////////loop///////////////////////////////////////</p>

<p>void loop() {<br />
 if (loopFlag == 1){ //////////////tells if a  averaging "if" statment  occured<br />
   loopNumber = 0;<br />
   loopFlag=0; //////// resets flag<br />
 }<br />
 <br />
// Serial.println(avDistance1);<br />
  stepperPos = count; <br />
  distance = rangeRead();  <br />
   //Serial.println(distance);<br />
  reading[loopNumber] = distance; /////////// analog value getting put in an array<br />
 // Serial.println( reading[loopNumber]); <br />
  avDistance1 =( averager() / 2); /////////////divide by three to get a 80 step movment<br />
 Serial.println(avDistance1);                                                                   // button = digitalRead(2);  //////////////// button if you want to use</p>

<p>  if (avDistance1 - buffer > stepperPos) {  //Step the motor forward one step: to braket say and stepperPos is less than somthing then... <br />
        forwardStep(8,9,10,11);   //first stepper               // change all the range numbers in the if statments<br />
    //Serial.println(count);<br />
      }<br />
  if( avDistance1 + buffer  < stepperPos){ ////////// buffer gives inbetween area of no movment(gets rid of jerkyness)<br />
     backwardStep(8,9,10,11);   //first stepper<br />
      <br />
      }<br />
  if (avDistance1 - buffer > stepperPos) {  //Step the motor forward one step: to braket say and stepperPos is less than somthing then... <br />
        forwardStep(4,5,6,7);   //first stepper               // change all the range numbers in the if statments<br />
    //Serial.println(count);<br />
      }<br />
  if( avDistance1 + buffer  < stepperPos){ ////////// buffer gives inbetween area of no movment(gets rid of jerkyness)<br />
     backwardStep(4,5,6,7);   //first stepper<br />
      <br />
      }<br />
  }</p>

<p> <br />
 //////////////////////averager/////////////////////////<br />
 int averager(){<br />
    //Serial.println( reading[4]);<br />
  if (loopNumber == aveNumber){  ////////////if its taken the amount of readings we want to average<br />
    int num = 0;<br />
    for (int x = 0; x < aveNumber; x++){<br />
        num = num + reading[x];<br />
    // Serial.println(reading[x]); <br />
    }   /////////// adds analog num<br />
      //Serial.println(num);<br />
    avDistance = num / aveNumber;  ////////////////averages out added analog value by how many we looked at<br />
    loopFlag = 1;  /////////////// resets loop number to 0<br />
  }<br />
   loopNumber++;  /////////////////////how many times this loops gone <br />
  return avDistance;<br />
 }<br />
//////////////////////////backward step////////////////////////////////<br />
void backwardStep(int _w,int _x, int _y, int _z){<br />
  _w=_w;<br />
  _x=_x;<br />
  _y=_y;<br />
  _z=_z;<br />
  step4( _w, _x, _y, _z);<br />
  count--;<br />
  distance = analogRead(0);<br />
  stepperPos = count ;<br />
  delay(speed);<br />
  step3( _w, _x, _y, _z);<br />
  count--;<br />
  distance = analogRead(0);<br />
  stepperPos = count ;<br />
  delay(speed);<br />
  step2( _w, _x, _y, _z);<br />
  count--;<br />
  distance = analogRead(0);<br />
  stepperPos = count ;<br />
  delay(speed);<br />
  step1( _w, _x, _y, _z);<br />
  count--;<br />
  distance = analogRead(0);<br />
  stepperPos = count ;<br />
  delay(speed);<br />
  //Serial.println (distance);<br />
  //Serial.println (count);<br />
}</p>

<p>//////////////////// Blink the reset LED://///////////////////////////<br />
void blink(int howManyTimes) {<br />
  int i;<br />
  for (i=0; i< howManyTimes; i++) {<br />
    digitalWrite(13, HIGH);<br />
    delay(200);<br />
    digitalWrite(13, LOW);<br />
    delay(200);  <br />
  }<br />
}</p>

<p>////////////////////ez range function/////////////////////////////////<br />
int rangeRead() {<br />
  // Reads the Analog output of the MAXSonar® EZ1™ (AN Pin) and returns the target range as a Byte <br />
  int  RangeA = 0;</p>

<p>  digitalWrite (RXPin, 0);                        //' Turn off the EZ1™ just in case we started with it on <br />
  digitalWrite (RXPin, 1);                        // ' Turn on the EZ1™<br />
  delay(50);                                 // ' Wait about 50 ms </p>

<p>  RangeA = (analogRead(0) - offset);                     //' Read the ADC -6 to give a "zero" reading</p>

<p>  return RangeA;         <br />
}<br />
////////////////////////forward step////////////////////////////////////////////////////////<br />
void forwardStep(int _w,int _x, int _y, int _z){<br />
  _w=_w;<br />
  _x=_x;<br />
  _y=_y;<br />
  _z=_z;<br />
  step1( _w, _x, _y, _z);<br />
  count++;<br />
  distance = analogRead(0);<br />
  stepperPos = count ;<br />
  delay(speed);<br />
  step2( _w, _x, _y, _z);<br />
  count++;<br />
  distance = analogRead(0);<br />
  stepperPos = count ;<br />
  delay(speed);<br />
  step3( _w, _x,  _y, _z);<br />
  count++;<br />
  distance = analogRead(0);<br />
  stepperPos = count ;<br />
  delay(speed);<br />
  step4( _w, _x, _y, _z);<br />
  count++;<br />
  distance = analogRead(0);<br />
  stepperPos = count ;<br />
  delay(speed);<br />
  // Serial.println (distance);<br />
  // Serial.println (stepperPos);<br />
}</p>

<p>///////////////stepper coil set step////////////////////<br />
void step(int _w,int _x, int _y, int _z){   // clear step<br />
  digitalWrite (_w, LOW);<br />
  digitalWrite (_x, LOW);<br />
  digitalWrite (_y, LOW);<br />
  digitalWrite (11, LOW);<br />
}<br />
void step1(int _w,int _x, int _y, int _z){<br />
  if( F4= 1){<br />
    digitalWrite (_w, HIGH);<br />
    digitalWrite (_x, HIGH);<br />
    digitalWrite (_y, LOW);<br />
    digitalWrite (_z, LOW);<br />
    F4 = 0;<br />
    F1 = 1;<br />
  }<br />
}<br />
void step2(int _w,int _x, int _y, int _z){<br />
  if( F1= 1){<br />
    digitalWrite (_w, LOW);<br />
    digitalWrite (_x, HIGH);<br />
    digitalWrite (_y, HIGH);<br />
    digitalWrite (_z, LOW);<br />
    F1 = 0;<br />
    F2 = 1;<br />
  }<br />
} <br />
void step3(int _w,int _x, int _y, int _z){<br />
  if( F2= 1){<br />
    digitalWrite (_w, LOW);<br />
    digitalWrite (_x, LOW);<br />
    digitalWrite (_y, HIGH);<br />
    digitalWrite (_z, HIGH);<br />
    F2 = 0;<br />
    F3 = 1;<br />
  }<br />
} <br />
void step4(int _w,int _x, int _y, int _z){<br />
  if( F3= 1){<br />
    digitalWrite (_w, HIGH);<br />
    digitalWrite (_x, LOW);<br />
    digitalWrite (_y, LOW);<br />
    digitalWrite (_z, HIGH);<br />
    F3 = 0;<br />
    F4 = 1;<br />
  }<br />
} <br />
/////////////////////////end steps/////////////////////////////////</p>

<p></p>

<p></p>

<p></p>

<p></p>

<p></p>

<p> </p>]]>
    </content>
</entry>
<entry>
    <title>srf range finders with arduino</title>
    <link rel="alternate" type="text/html" href="http://itp.nyu.edu/~jtd229/physcomp/2006/11/srf_range_finders_with_arduino.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://itp.nyu.edu/~jtd229/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=23" title="srf range finders with arduino" />
    <id>tag:itp.nyu.edu,2006:/~jtd229/physcomp//2.23</id>
    
    <published>2006-11-25T16:45:59Z</published>
    <updated>2006-11-25T17:13:23Z</updated>
    
    <summary> The tricky part to using the srf series range finder with the arduino is the I2c bus interface it is a fairly straightforward protocol (a good reference is at http://www.robot-electronics.co.uk/htm/using_the_i2c_bus.htm) but would take a lot of typing if you...</summary>
    <author>
        <name>justin</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://itp.nyu.edu/~jtd229/physcomp/">
        <![CDATA[<p><img alt="atmel1.jpg" src="http://itp.nyu.edu/~jtd229/physcomp/atmel1.jpg" width="500" height="489" /></p>

<p>The tricky part to using the srf series range finder with the arduino is the I2c bus interface it is a fairly straightforward protocol (a good reference is at http://www.robot-electronics.co.uk/htm/using_the_i2c_bus.htm) but would take a lot of typing if you did it from scratch. It is basically a handshake method where the arduino slaves the srf range finder to its clock pulses and tells it when and from where the rangefinder will send information. It sends out info on the leading edge of the clock pulse and receives it on the falling edge, but the signals state (bit passing) never changes while the clock state is high, except to signal a start or stop to a communication. So the easiest way to communicate with your range finder is to use the code found on the Wiring web site (it is the sibling of arduino but even more user friendly it seems) and use the “wire” library (here’s the link http://wiring.org.co/reference/libraries/Wire/index.html). I took that code and modified it to include changing the address, the sensitivity and the range settings for the srf range finder (it should be talked about although maybe a bit muddled in the pamphlet that comes with the range finder). Also be sure to use the arduino 06 platform when implementing the <Wire.h> library or it won’t compile, that was a big problem for me. So either use the code on the Wiring web site or take a look at mine (in the extended entry along with the pins to use) I hope this helps. Good luck! <br />
Ps it took me a really long time to do the water colors so i hope you enjoy them.</p>]]>
        <![CDATA[<p><img alt="atmel.jpg" src="http://itp.nyu.edu/~jtd229/physcomp/atmel.jpg" width="468" height="312" /></p>

<p><br />
#include  Wire.h<br />
////////////////////use below pins for input and out put/////////////////////////<br />
/////////*************On the Arduino, SDA is on analog input pin 4, and SCL on analog input pin 5.****************///////////////////////</p>

<p></p>

<p>	<br />
// I2C SRF10 or SRF08 Devantech Ultrasonic Ranger Finder <br />
// by Nicholas Zambetti <http://www.zambetti.com> <br />
// and James Tichenor <http://www.jamestichenor.net> </p>

<p>void setup() <br />
{ <br />
  Wire.begin();                // join i2c bus (address optional for master) <br />
  Serial.begin(9600);<br />
            // start serial communication at 9600bps <br />
} <br />
 <br />
int reading = 0; <br />
 <br />
void loop() </p>

<p><br />
////////////////sensitivity adjust/////////////////////////////////////////////<br />
{  Wire.beginTransmission(0x70); // transmit to device #112 (0x70) <br />
                               // the address specified in the datasheet is 224 (0xE0) <br />
                               // but i2c adressing uses the high 7 bits so it's 112 <br />
  Wire.send(0x01);             // sets register pointer to the command register (0x01)  reg 1<br />
  Wire.send(0x21);             // command sensor to analog gain (sensitivity of sensor) <br />
                               // use 0x51 for centimeters <br />
                               // use 0x52 for ping microseconds <br />
  Wire.endTransmission();      // stop transmitting <br />
//////////////////////range select////////////////////////////<br />
Wire.beginTransmission(0x70); // transmit to device #112 (0x70) <br />
                               // the address specified in the datasheet is 224 (0xE0) <br />
                               // but i2c adressing uses the high 7 bits so it's 112 <br />
  Wire.send(0x20);             // sets register pointer to the command register (0x10)  reg 2<br />
  Wire.send(0x00);             // command sensor to analog range (distance) <br />
                               // use 0x51 for centimeters <br />
                               // use 0x52 for ping microseconds <br />
  Wire.endTransmission();      // stop transmitting <br />
 <br />
  //////////////////////////// step 1: instruct sensor to read echoes ///////////////////////////////////////<br />
  Wire.beginTransmission(0x70); // transmit to device #112 (0x70) <br />
                               // the address specified in the datasheet is 224 (0xE0) <br />
                               // but i2c adressing uses the high 7 bits so it's 112 <br />
  Wire.send(0x00);             // sets register pointer to the command register (0x00) write  <br />
  Wire.send(0x50);             // command sensor to measure in "inches" (0x50) <br />
                               // use 0x51 for centimeters <br />
                               // use 0x52 for ping microseconds <br />
  Wire.endTransmission();      // stop transmitting <br />
 <br />
  //////////////// step 2: wait for readings to happen ///////////////////////////////////////////////<br />
  delay(70);                   // datasheet suggests at least 65 milliseconds <br />
 <br />
  ////////////// step 3: instruct sensor to return a particular echo reading ////////////////////////////<br />
  Wire.beginTransmission(0x70); // transmit to device #112 <br />
  Wire.send(0x02);             // sets register pointer to echo #1 register (0x02) <br />
  Wire.endTransmission();      // stop transmitting <br />
 <br />
  //////////////// step 4: request reading from sensor /////////////////////////<br />
  Wire.requestFrom(0x70, 2);    // request 2 bytes from slave device #112 <br />
 <br />
  /////////////// step 5: receive reading from sensor ////////////////////////////<br />
  if(2 <= Wire.available())    // if two bytes were received <br />
  { <br />
    reading = Wire.receive();  // receive high byte (overwrites previous reading) <br />
    reading = reading << 8;    // shift high byte to be high 8 bits <br />
    reading |= Wire.receive(); // receive low byte as lower 8 bits <br />
    Serial.println(reading);   // print the reading <br />
  } <br />
 <br />
  delay(250);                  // wait a bit since people have to read the output<br />
} <br />
 <br />
 <br />
/* <br />
 <br />
// The following code changes the address of a Devantech Ultrasonic Range Finder (SRF10 or SRF08) <br />
// usage: changeAddress(0x70, 0xE6); <br />
 <br />
void changeAddress(byte oldAddress, byte newAddress) <br />
{ <br />
  Wire.beginTransmission(oldAddress); <br />
  Wire.send(0x00); <br />
  Wire.send(0xA0); <br />
  Wire.endTransmission(); <br />
 <br />
  Wire.beginTransmission(oldAddress); <br />
  Wire.send(0x00); <br />
  Wire.send(0xAA); <br />
  Wire.endTransmission(); <br />
 <br />
  Wire.beginTransmission(oldAddress); <br />
  Wire.send(0x00); <br />
  Wire.send(0xA5); <br />
  Wire.endTransmission(); <br />
 <br />
  Wire.beginTransmission(oldAddress); <br />
  Wire.send(0x00); <br />
  Wire.send(newAddress); <br />
  Wire.endTransmission(); <br />
} <br />
 <br />
*/ <br />
</p>]]>
    </content>
</entry>
<entry>
    <title></title>
    <link rel="alternate" type="text/html" href="http://itp.nyu.edu/~jtd229/physcomp/2006/11/post_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://itp.nyu.edu/~jtd229/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=21" title="" />
    <id>tag:itp.nyu.edu,2006:/~jtd229/physcomp//2.21</id>
    
    <published>2006-11-20T19:28:54Z</published>
    <updated>2006-11-20T19:41:19Z</updated>
    
    <summary> I had many hours working with these guys especially the srf10 in the above picture; I had to learn about the I2c bus communication to get it running. I did find code for it finally on the wiring website...</summary>
    <author>
        <name>justin</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://itp.nyu.edu/~jtd229/physcomp/">
        <![CDATA[<p><img alt="ez-sensor.jpg" src="http://itp.nyu.edu/~jtd229/physcomp/ez-sensor.jpg" width="400" height="322" /><br />
<img alt="srf10.jpg" src="http://itp.nyu.edu/~jtd229/physcomp/srf10.jpg" width="400" height="300" /></p>

<p>I had many hours working with these guys especially the srf10 in the above picture; I had to learn about the I2c bus communication to get it running. I did find code for it finally on the wiring website there is code from the wire. class that makes bus communication a snap but you have to down load the arduino 06 if you want to call the class in arduino. the other sensor the sense ez is a real plug and play sensor and the focal area of the sound cone is very narrow and really accurate i can't recommend this sensor enough. i will post the code when i finish writing it but it is very simple to use. the srf10 has a much bigger range but it detects anything in a 180 degree sweep from center up to three feet on the sides and below it so you have to either really point it up or raise it three feet off the ground. not so good for my application.</p>]]>
        
    </content>
</entry>
<entry>
    <title>ranging device</title>
    <link rel="alternate" type="text/html" href="http://itp.nyu.edu/~jtd229/physcomp/2006/11/ranging_device.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://itp.nyu.edu/~jtd229/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=20" title="ranging device" />
    <id>tag:itp.nyu.edu,2006:/~jtd229/physcomp//2.20</id>
    
    <published>2006-11-20T19:20:26Z</published>
    <updated>2006-11-20T19:42:31Z</updated>
    
    <summary> i got the servo working finally, although i couldn&apos;t get the port addressing to work from tom igoes code example. just allot of repeat typing. it runs off of 12 volts and sinks about 250mA under a load so...</summary>
    <author>
        <name>justin</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://itp.nyu.edu/~jtd229/physcomp/">
        <![CDATA[<p><img alt="servo.jpg" src="http://itp.nyu.edu/~jtd229/physcomp/servo.jpg" width="500" height="361" /></p>

<p>i got the servo working finally, although i couldn't get the port addressing to work from tom igoes code example. just allot of repeat typing. it runs off of 12 volts and sinks about 250mA under a load so if i use a battery it won't be running for that long. ill have to think about that i am using a hbridge right now i can't decide if i need the enable pin or if i should switch to a darlington array for easier wiring.</p>]]>
        
    </content>
</entry>
<entry>
    <title>notes</title>
    <link rel="alternate" type="text/html" href="http://itp.nyu.edu/~jtd229/physcomp/2006/11/notes.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://itp.nyu.edu/~jtd229/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=19" title="notes" />
    <id>tag:itp.nyu.edu,2006:/~jtd229/physcomp//2.19</id>
    
    <published>2006-11-17T23:42:08Z</published>
    <updated>2006-11-17T23:42:53Z</updated>
    
    <summary>some observations...</summary>
    <author>
        <name>justin</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://itp.nyu.edu/~jtd229/physcomp/">
        <![CDATA[<p>some observations</p>]]>
        <![CDATA[<p>Observations<br />
TV and UPS</p>

<p>Taken from notes and attempted to make semi readable.</p>

<p>My observations deal with TV’s in public or social spaces and ups package-tracking devices. First the TVs; I watched the interactions that took place between the audience in a laundry mat and the TV that was mounted on the wall. The audience watches the TV as a group, everyone is aware of the reactions that are accruing. As social information comes in off the TV it is gauged and agreed upon by the viewers in the room mostly with the help of laugh tracks. People also look to the TV to deemphasize their own psychic space in the room to turn from being judged to judging. It is not viewed as a machine not even as a surrogate. To change the channel is a bold move.</p>

<p>The specific information might be questioned but the role of the TV in space is solid, it is the center of decisions. It gets an objective placing in the social thought processes, it doesn’t have a personality it is personality. It is seen as a fixture, a unilateral place of reference. The only interaction possible is a change of reference by switching channels, you can’t say what is, but only choose what reference you will listen to from the ones presented. This causes a full emersion with the TVs space, it is hard to use the laundry mats references and the TVs at the same time. Why are people less willing to use the laundry mats reference over the TVs, the shows are not that exiting? You are not in the TV space so you are not required to participate or rather you don’t have the power to change it so you don’t have responsibility to do anything. What if you did have an impact on the physical/ mental space?</p>

<p>Ups package tracking devices. The tracking devices that are used by the ups guys are very interesting. The interface on them is one of the most dynamic that I have seen. I asked to take a quick look at the device last time I was getting a package. The face of the device was very simple but was used for many functions. The interface was based on the doubling up of buttons when performing different functions. Very much like telephone buttons with the letters and numbers. The button functions were very intuitive on the ups device and configured as needed from a general to specific input that automatically changed with the progression of the interaction. The functions I saw were scheduling, location and package data entry, they all were either chosen or ran automatically based on the last entry. The data retrieval was streamlined to take the most pertinent info for the best results first and then if that didn’t generate an answer more specific data could be added to the request. Also the physical layout was very nice in terms of the inputs, it had a lcd read write screen and then a QWERTY input board and four other scroll and search buttons that allowed you to sort and look at information in different ways. It got me thinking about how the functionality of a personal device changes with an adequate interface and cuts down on processing and programming. I think it will be a very large issue with the advent of the “all in one devices” that are becoming what our personal organizers cameras and telephones are now. Physical design is more a representation of idea than the software inside; the thing in terms of what it is to you and what it can do must inform you. A shoe can also hammer in a nail. Lines denote time linear progression with a start and end circles give you a unlimited scroll but no reference points a grouping of buttons denote their function as much as whats on the button. Are you able to be hit two at a time or can they only function individually<br />
</p>]]>
    </content>
</entry>
<entry>
    <title>relay specs</title>
    <link rel="alternate" type="text/html" href="http://itp.nyu.edu/~jtd229/physcomp/2006/10/relay_specs.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://itp.nyu.edu/~jtd229/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=18" title="relay specs" />
    <id>tag:itp.nyu.edu,2006:/~jtd229/physcomp//2.18</id>
    
    <published>2006-10-27T06:03:54Z</published>
    <updated>2006-10-27T06:09:13Z</updated>
    
    <summary> Here are some basic &quot;circuits&quot; I used to function as switches for ac current controlled by the arduino. The arduino puts power to a transistor, which controls the relays. The resistors are used to drop the base voltage because...</summary>
    <author>
        <name>justin</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://itp.nyu.edu/~jtd229/physcomp/">
        <![CDATA[<p><img alt="relay.jpg" src="http://itp.nyu.edu/~jtd229/physcomp/relay.jpg" width="500" height="624" /></p>

<p>Here are some basic "circuits" I used to function as switches for ac current controlled by the arduino. The arduino puts power to a transistor, which controls the relays. The resistors are used to drop the base voltage because the transistors need a good voltage differential between base and emitter to operate.</p>]]>
        
    </content>
</entry>
<entry>
    <title>tvs talk all the time we just choose to think they are not.</title>
    <link rel="alternate" type="text/html" href="http://itp.nyu.edu/~jtd229/physcomp/2006/10/tvs_talk_all_the_time_we_just.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://itp.nyu.edu/~jtd229/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=17" title="tvs talk all the time we just choose to think they are not." />
    <id>tag:itp.nyu.edu,2006:/~jtd229/physcomp//2.17</id>
    
    <published>2006-10-27T06:02:14Z</published>
    <updated>2006-10-27T06:02:55Z</updated>
    
    <summary></summary>
    <author>
        <name>justin</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://itp.nyu.edu/~jtd229/physcomp/">
        <![CDATA[<p><img alt="tvscmtic.jpg" src="http://itp.nyu.edu/~jtd229/physcomp/tvscmtic.jpg" width="500" height="562" /><br />
</p>]]>
        <![CDATA[<p>This is the project I did with Patricia and Stefanie for physcomp it is a TV that we rewired to listen to the amplitude of noise in a room. The above is a schematic of the final wiring we did for the TV. The basic interaction is triggered by the TV’s noise threshold being reached; it then turns the TV programming off and tells everyone to pay attention. We originally wanted to deal with the content of the program as well as the physical interaction that takes place when a TV is present, but due to time constraints we decided to emphasize the physical aspect. We were looking at what the mechanizes that defined the interaction of the user and the TV. We wanted to reveal the implicit nature that lies behind the TV medium and the forceful interaction that it demands when it is present in a room. This interaction often times takes over the language of everyday interpersonal relationships supplanting the everyday lexicon with one of its own choosing, making you speak “TV.” and hear in broadcasting. This can function because of the space that we relegate the TV to. It inherently has fewer barriers than talking to a person because it appears to be non-partial and objective. So at the very least the project is a bit funny because our TV becomes very partial in a very dumb way hopefully reminding you of what the object is and what its role can be. And at the most it will help to watch other TVs with the same skills you use when talking to a person.</p>]]>
    </content>
</entry>
<entry>
    <title>op amp</title>
    <link rel="alternate" type="text/html" href="http://itp.nyu.edu/~jtd229/physcomp/2006/10/post.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://itp.nyu.edu/~jtd229/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=16" title="op amp" />
    <id>tag:itp.nyu.edu,2006:/~jtd229/physcomp//2.16</id>
    
    <published>2006-10-27T04:29:01Z</published>
    <updated>2006-10-27T06:12:13Z</updated>
    
    <summary> View image...</summary>
    <author>
        <name>justin</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://itp.nyu.edu/~jtd229/physcomp/">
        <![CDATA[<p><img alt="opamp.jpg" src="http://itp.nyu.edu/~jtd229/physcomp/opamp.jpg" width="500" height="400" /><br />
<a href="http://itp.nyu.edu/~jtd229/physcomp/opampcrcit1.html" onclick="window.open('http://itp.nyu.edu/~jtd229/physcomp/opampcrcit1.html','popup','width=500,height=369,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">View image</a><br />
</p>]]>
        <![CDATA[<p>click view image to see the circuit diagram.</p>

<p>This opamp seemed to work better than the lmn356 I got more gain and the output numbers didn’t fluctuate as much. The circuit is just two op amps in series the first cleans the ac voltage from the mic with a capacitor and then "rides" it on a 2.5 volt dc current so you get 0 as the base value and not a negative number.  The second takes that signal and grounds the base voltage and then amplifies it so you get an output value of 0 to ~ 4v if you yell into the mic. The basics of an op amp is a comparator circuit, the circuit takes two positive voltages into an inverted and non-inverted input then compares them. If the non-inverted voltage is higher then it saturates to a positive voltage if the inverted is larger then it saturates negative or “low”. The key to the amplifier circuit is a feedback resistor (R2, R3) between the output of the circuit and the inverted input. This sends back a “dampening” voltage to the input not allowing it to fully saturate and controls the output voltage. This signal is ok but there are kits out there that give you a great range (the super snooper kit) and you don’t have to worry about trouble shooting them, but this opamp gives numbers that seem to be smoother than other op amp circuits so it worked well for the microcontroller application. to see the schematic click on view image.</p>]]>
    </content>
</entry>
<entry>
    <title>voicechip</title>
    <link rel="alternate" type="text/html" href="http://itp.nyu.edu/~jtd229/physcomp/2006/10/voicechip.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://itp.nyu.edu/~jtd229/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=11" title="voicechip" />
    <id>tag:itp.nyu.edu,2006:/~jtd229/physcomp//2.11</id>
    
    <published>2006-10-18T16:26:28Z</published>
    <updated>2006-10-27T04:58:11Z</updated>
    
    <summary> entries&gt; voicechip/voicechip.html&quot; onclick=&quot;window.open(&apos;http://itp.nyu.edu/~jtd229/physcomp/lets get physical! &gt; entries&gt; voicechip/voicechip.html&apos;,&apos;popup&apos;,&apos;width=600,height=456,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&apos;); return false&quot;&gt;View image...</summary>
    <author>
        <name>justin</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://itp.nyu.edu/~jtd229/physcomp/">
        <![CDATA[<p><img alt="voicechip.jpg" src="http://itp.nyu.edu/~jtd229/physcomp/voicechip.jpg" width="400" height="346" /><br />
<a href="http://itp.nyu.edu/~jtd229/physcomp/lets get physical! > entries> voicechip/voicechip.html" onclick="window.open('http://itp.nyu.edu/~jtd229/physcomp/lets get physical! > entries> voicechip/voicechip.html','popup','width=600,height=456,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">View image</a><br />
</p>]]>
        <![CDATA[<p>this is the isd voicechip record/playback device we are using it's really  easy to use and it is from carl's electronics. it has about 40 seconds of record time. if you want the schematic click on veiw image.</p>]]>
    </content>
</entry>

</feed> 

