Anna S. Kroll PC

From BenningtonWiki
Jump to: navigation, search

Info

727.515.9123

akroll@bennington.edu

Final Project

Final Project

To see first proposed idea, scroll down to Research

Work

Midterm

E&A: Midterm Puppies

Tutorials

Arduino blinking LED
Arduino push button
Arduino push button
Arduino LED w/ resistor
Arduino w/ photoresistor digital input
Arduino w/ photoresistor analog
Arduino w/ servo motor & photoresistor
Arduino w/ servo motor & photoresistor
Cool Term serial reading
Processing graph from Photoresistor
Transistor to DC motor
Transistor to DC motor
H bridge to DC motor
H bridge to DC motor

Research

Art work

The Future of Memory by Troika Ranch
video/description images
Interaction: Real-Time Media Systems

I chose the dance piece The Future of Memory because it has many layers of interactivity all of which are used to effectively convey a larger concept (other than just the capabilities of computing). There are two routes to interactive dance that I am currently thinking about: audience interaction with the performer and the performer's interaction with his/her stage environment. This piece uses the latter form as the dancers generate and influence the video and music played around them.

The piece follows four fictional characters to examine the "fallible and impermanent nature of human recall, where romanticized, repressed, lost, and recreated selves are the norm." The use of live generated video that is later recalled creates common "memories" for both the audience and performers. The live manipulation of these videos then further illuminates how memories can be distorted.

The sensors used in the piece included live wireless cameras and plastic fibers on the dancers' limbs (Midi Dancer) that measure the flexion of their joints. The live wireless video cameras were placed on the sides of the stage and used to record specific moments that were then either instantly projected or stored and recalled later in the dance. The sensors on the dancers' joints were used to control different aspects at different times. At some points their movements trigger musical notes or phrases and manipulate their timbre" At other points their joint flexion controls the playback speed and intensity of the projections. Paper on Troika's technology/work

Other cool works: Play modes - people dueting with themselves 16 Revolutions
Closer To You (2)Closer To You
Semantic Thermometer
echo::system - large-scale, multi-media environments constructed for both live performance and interactive installation
Mossalibra dance game "Midi shoes" "Tactile sensations"

Types of Sensors

Old idea

Better reference than Remote Dancing This was one of my first ideas for a final project. The new idea attempts to have a stronger conceptual backbone. For this project I'm dealing with my interest in how to present filmed dance in a way that doesn't feel so flat and distant. I've also noticed a lot of dance projects putting the sensors on the performer. Instead, I want the audience to become part of the performance and cause them to have to dance as well. Thus came my idea of a duet between audience and a projected dancer.

  • Audience member interacting with recording(s) of a dancer projected on the wall
  • Video(s) of one person dancing being influenced by audience’s actions
  • Music being influenced by the audience's action
  • Audience will be encouraged to participate by a projected text prompt such as "May I have this dance?"

Kroll Remote1.jpg This project is similar to my idea, except I would like the dance video to be more autonomous. In this work, the proximity of the audience and sensor either advances or rewinds a recording which makes it appear as if the two people are approaching or walking away from each other. I'd like my version to sense more than just proximity and there to be more variations in the response of the screen dancer. I want the logic of the relationship to not be so obvious and for the dancer to continue even if the audience pauses for a few seconds. This way there is more of a rapport and dialogue between the two rather than the audience just controlling the dancer.

There are 2 options I'm considering for how to sense the audience member's actions: Sensors on the audience's body or using a camera to recognize their movement

Camera

  • Pros: Could track multiple things? Speed, location

Sensors embedded in an item of clothing that then the audience "partner" wears e.g. Audience in blazer, performer on screen in coordinating fancy dress

Tuxedo.jpg Formaldress.jpg

"Sensors on dancer influence audio & visual" "Sensors on dancer affect audio""Pressure/ flex sensor"


  • Pros: Would establish that only one person can dance at a time.
  • Cons: Would be harder to track location of dancer? Could I embed additional sensors besides flex?

Possible variables manipulated by audience movement'

  • Speed of clip correlates with speed of audience's movement (or overall motion)
  • Different clips of same dancers (so it would appear the movements changed)
  • Music tempo or type
  • Track audience's changes which clip is being shown
  • Advancement and rewinding of video
  • Can I program it so sometimes the speed of video or music matches the audience's and sometimes it counters it?

Notes

All About Microcontrollers

  • High Level Controllers=less work, more $
  • Low Level Controllers=more work, less $. If you break one it will be less heartbreaking, however you need to buy a programmer & compiler ($).
  • Arduino connects directly to the programming computer which is real nice

Arduino Nano

  • Each of the 14 digital pins on the Nano can be used as an input or output
  • The Nano has 8 analog inputs, each of which provide 10 bits of resolution (i.e. 1024 different values)
  • Some pins have specialized functions & functionality

Digital Input & Output

  • Digital inputs have two states: off and on. If voltage is flowing, the circuit is on. If it’s not flowing, the circuit is off. To make a digital circuit, you need a circuit, and a movable conductor which can either complete the circuit, or not.
  • On an Arduino module, you declare the pin an output at the top of the program, then in the body of the program you use the commands HIGH and LOW to set the pin high or low

The Art of Interactive Design

  • Interactivity: listen, think speak -- 2 (or more) actors
  • Metaphors for creating algorithms

Understanding Electricity

  • R(resistance)=V(voltage)/I(current)
  • V=R x I
  • I = V/R
  • Watts = Volts x Amps
  • The amount of current going into any point in a circuit is the same as the amount coming out of that point.
  • Current follows the path of least resistance to the ground

Analog Output

  • "The Arduino, the PIC, BX-24 and other digital microcontrollers can’t produce a varying voltage, they can only produce a high voltage (in our case 5V) or low (in our case 0V). So instead, we "fake" an analog voltage by producing a series of voltage pulses at regular intervals, and varying the width of the pulses. This is called pulse width modulation (PWM). The resulting average voltage is sometimes called a pseudo-analog voltage."
  • On Ardino: analogWrite(pin, pulsewidth);
  • Pulsewidth is a value from 0 – 255. 0 corresponds to 0 volts, and 255 corresponds to 5 volts. Every change of one point changes the pseudo-analog output voltage by 5/255, or 0.0196 volts.
  • PWM uses: speed of motor, dim of LED, tones,
  • "Filter circuits are circuits which allow voltage changes of only a certain frequency range to pass. . . This means that if the voltage is changing more than a certain number of times per second, these changes would not make it past the filter, and only an average voltage would be seen."

Serial to the Desktop

  • Only one program can use a serial port at a time
  • When exchanging sensor data with a microcontroller, it's often the case that you need to continually gather a series of bytes from the controller representing the values of various sensors attached to the microcontroller. As mentioned in the interpreting serial data notes, this can sometimes be tricky, since you need to make sure all the bytes arrive, and are read in the right order. There are two common ways of dealing with this problem: punctuating the data string with a constant byte at the start, or setting up a "call and response" system, so that the microcontroller sends only one set of data at a time.
  • Constant Header- Create header that will never appear in the data and always follow it with the same amount of bytes
  • Call & Response - The microcontroller is programmed to listen for a byte from the computer (a call), and to send one set of readings in response. The computer, in turn, is programmed to send the call byte, then continue to receive bytes until it gets as many as should be in the data string, then to interpret them, then to send out another call.

Interpreting Serial Data

  • Rate : Generally, 8 bits, no parity, one stop bit is a good standard, and somewhere between 2400 and 9600 baud is a decent rate for small amounts of data
  • raw value --> ASCII "Serial.print(myVar, DEC);"
  • punctuating:
 char A;
char B;
char C;
char headerByte = 101;

void setup() {
  Serial.begin(9600);
}
void loop() {
  // generate values for A, B, and C here

  Serial.print(A, BYTE);
  Serial.print(B, BYTE);
  Serial.print(C, BYTE);
  Serial.print(headerByte, BYTE);
}
101 is a number out of the inputs' ranges
  • call & response:
// Find out if anything is in the queue.
if (Serial.available() > 0) {
// If there is data in the input buffer,
// get the first byte of it:
char inByte = Serial.read();
        if (inByte == 'A') {
            // send bytes out here:
            Serial.print(A, BYTE);
            Serial.print(B, BYTE);
            Serial.print(C, BYTE);
        }

} 
  • Serial communication is tricky, in that you need to have both sides properly grounded to a common ground, and both receive and transmit wires properly connected and insulated. all kinds of electrical noise can get in the system and interfere with your transmission.

Motors

  • Most all motors work on the electrical principle of induction: induce a magnetic field by putting current through a wire, use it to attract or repulse a magnetic body. However, the principle works in reverse as well. When you spin a wire in an existing magnetic field, the field induces a current in the wire, blowback, which is stopped from traveling back to their other electronics using a diode.
  • Voltage: Plan on the motor’s top speed being at rated voltage, and slowest speed at no more than 50% less than the rated voltage
  • Current: More load = more current. Stall current = current it draws when it’s stopped by an opposing force which is greater than the unopposed running current. Your power supply for a motor should be able to handle the stall current with extra amperage to spare. Motors may draw near the stall current for a brief period of time when starting up, to overcome their inertia.
  • Speed: Motor speed is given in revolutions per minute (RPM’s).
  • Torque: Torque is the measure of a motor’s pulling force. It’s measured by the force a motor can pull when the opposing force is attached to a shaft attached to its center rod. Ex: ft.-lb., lb-ft., oz.-in, in.-oz., g-cm
  • DC Motors: Fast; Reverse the polarity, reverse the direction
  • Gearhead: Subset of DC; They have a box on the top of the motors containing a series of gears that slow the rotational speed of the motor down and increase the torque.
  • Servo: Like a DC except it knows what position it is in and it can be set to a certain position due to its potentiometer. Unlike other DC motors, you do not have to reverse the polarity of a servo’s power connections to reverse its direction. A servo needs to see a pulse every 18-20 ms even when it is not turning, to keep it in its current position, so once you’ve moved the motor to a new position, it’s essential to keep pulsing it with the same pulsewidth to keep it there.
  • Stepper: Stepper motors are different than regular DC motors in that they don’t turn continuously, but move in a series of steps. More precise than DC motors but often slower. Stepper motors have very high torque when stopped, since the motor windings are holding the motor in place like a brake.

Stepper coils.jpg

  • To control the stepper, apply voltage to each of the coils in a specific sequence. These phasing sequences differ for different types of steppers, but for a 4-phase unipolar stepper like the one described above, the phasing would go like this:

Stepper voltage.jpg

Controlling DC Motors

Direction

  • To change direction you change polarity using an h bridge

Hbridge.jpg When switches 1 and 4 are closed and 2 and 3 are open, voltage flows from the supply to 1 to the motor to 4 to ground. When 2 and 3 are closed and 1 and 4 are open, polarity is reversed, and voltage flows from the supply to 3 to the motor to 2 to ground.

Speed

  • A DC motor’s speed is proportional to the supplied voltage. If the voltage drops too far, the motor won’t get enough power to turn, but within a certain range, usually 50% of the rated voltage, the motor will run at varying speeds.
  • A DC Motor's speed can be adjusted using pulse width modulation

Controlling High-Current Circuits

Relays

  • A relay is a switch that’s controlled by a small electric current. The current needed to move the shaft in the coil is very low (less than 10 milliamps) so the coil can be energized by an output pin of our microcontroller. The current that can flow through the switch, however, is much higher. The circuit powering the lamp is mostly separate from the micro controller except that it is opened or closed by it.
  • Relays are also useful when you want to replace a switch in an existing electronic device. If you replace the switch with the coil of a relay, the microcontroller can control the device just as if the button were pressed.
  • Relays are slow and shouldn't be used if you want something to switch on and off rapidly.

Transistor

  • Transistors can be used as switches or amplifiers
  • Unlike a relay, a transistor is not mechanical, and can operate much faster than a relay.
  • There are several types of transistors and they come in two major classes: bipolar transistors, and field-effect transistors, or FETs.
  • They all have three connections, referred to as the base, the collector, and the emitter (on FET transistors, the three connections are the gate, the source and the drain). By putting a small voltage/current on the base of a transistor, you allow a larger current to flow from the collector to the emitter.
  • Among bipolar transistors, there are two types: NPN transistors, and PNP transistors. NPN transistors require a small positive voltage on the base relative to the voltage on the collector to turn on, whereas PNP transistors require a small negative voltage on the base.
  • The basic circuit for using a transistor to control a high-current load is simple. You connect a DC power source to one terminal of the load, then connect the second terminal of the load to the collector of the transistor. The emitter is then connected to ground, and the base is connected to the output of your microcontroller through a resistor (the transistor only needs a small voltage, about 0.7V, to turn on, so the resistor limits the voltage to the base). When you take the output pin of the microcontroller high, the base gets a voltage, allowing current to flow through the load, through the transistor, and to ground.
  • Generally, if you are switching DC motors, solenoids, or other high-current DC devices which create motion, it’s better to use a switching transistor than a relay. (An H-bridge is a series of transistors)