-A +A

 

Delusions of Dialog

Jim Campbell's Essay

    Key Point:
  • Interactive media works on a spectrum from controllable to responsive
    Sensory Inputs
  • The world is continuousq, not discrete
  • Interfaces can be put on a spectrum of discrete to continuous
  • Key Point
    • In discrete interfaces the interaction is between the viewer and the interface and in continuous interfaces the interaction is between the viewer and the work or the program
  • Discrete choices generally cause the viewer to look for a logical reason to make the correct choice based on what they think the consequences will be
  • Key Point
    • If an interface has holes in it with regard to its structure, then it will be disregarded by a viewer simply as metaphorical and any interaction that does occur between a viewer and the work will get stuck at the interface
  • A transparent interface is one that is perceivably complete of its type of structure
    Memory
  • More invisible than the already invisible program
  • The difference between an interactive game and an interactive work of art is not just in the subject matter. It’s also in the program and interface which are important parts of the expression of a work. Artists working in this field will continue to be odds with the models and directions of the multimedia industry.

Tweeting Doorbell

From MacLife Magazine March Issue

 

Servos

Example

Servo Rhythms

BIG TEXT | SMALL TEXT

Download servo_rhythm01.txt file

#include <Servo.h> // Include Servo library
// Create Servo object
Servo myservo ;

// Variables
// pins
int servopin = 10;
// timers
long timer = 0;
int offset = 15;
// servo angle
int angle = 0;
int servodir = 1;

// Setup
void setup(){
  Serial.begin(9600);
  pinMode(servopin,OUTPUT);
  myservo.attach(servopin);
  myservo.write(angle);
}

// Das Loop
void loop() {
  // Check the timer
  if(timer + offset < millis()) {
    // if the timer has passed, do the swing
    doSwing();
    // reset the timer
    timer = millis();
  }
}

void doSwing() {
  //Serial.println(angle);
  if(angle == 180) { servodir = -1; }
  if(angle == 0) { servodir = 1;  }
  myservo.write(angle);
  angle = angle + servodir;
}

Servo Chaos

BIG TEXT | SMALL TEXT

Download servo_chaos01.txt file

#include <Servo.h> // Include Servo library
// Create Servo object
Servo myservo ;

// Variables
// pins
int servopin = 10;
// timers
long timer = 0;
int offset = 15;
// servo angle
int angle = 0;
int targetangle = 180;

// Setup
void setup(){
  Serial.begin(9600);
  pinMode(servopin,OUTPUT);
  myservo.attach(servopin);
  myservo.write(angle);
}

// Das Loop
void loop() {
    // Check the timer
    if(timer + offset < millis()) {
      // if the timer has passed, do the swing
      doSwing();
      // reset the timer
      timer = millis();
    }
}

void doSwing() {
  //Serial.println(angle);
  if(angle == targetangle) { 
    targetangle = random(181); 
    Serial.println(targetangle);
  }
  if (angle < targetangle)  { angle = angle + 1; }
  if (angle > targetangle)  { angle = angle - 1; }
  myservo.write(angle);
}

BIG TEXT | SMALL TEXT

Download servo_chaos02.txt file

#include  // Include Servo library
// Create Servo object
Servo myservo ;

// Variables
// pins
int servopin = 10;
// timers
long timer = 0;
int offset = 10;
// servo angle
int angle = 0;
int targetangle = 180;

// Setup
void setup(){
  Serial.begin(9600);
  pinMode(servopin,OUTPUT);
  myservo.attach(servopin);
  myservo.write(angle);
}

// Das Loop
void loop() {
    // Check the timer
    if(timer + offset < millis()) {
      // if the timer has passed, do the swing
      doSwing();
      // reset the timer
      timer = millis();
  }
}

void doSwing() {
  if (angle == targetangle) { 
    targetangle = random(181); 
    offset = random(1, 50);
    Serial.println(angle);     
    Serial.println(targetangle);  
  }
  if (angle < targetangle)  { angle = angle + 1; }
  if (angle > targetangle)  { angle = angle - 1; }
  myservo.write(angle);
}

For more, go back to class 13