Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

Project sketch #1

24. November 2010

Für unser erstes Konzept wollten wir als Output Medium einen Projektor verwenden. Ein Charakter soll in einem Raum auf einer Wand projieziert mit dem Besucher interargieren können. Für einen ersten Prototyp verwendeten wir als Interaktionsmöglichkeit Distanzsensoren - mit diesen liessen sich beim Prototyp der Charakter drehen.
// THE ROBO
// Gian Gadient, Riccardo Lardi
// ZHdK 2010 - Interaction Design

// libraries
import processing.serial.*;
import cc.arduino.*;

// the arduino
Arduino arduino;

// the robo
Robo myRobo;

// global variables
int outRotX = 0;
int outRotY= 0;
boolean awake = false;

void setup() {

  size(1440, 900, P3D);
  frameRate(24);

  // the arduino object
  arduino = new Arduino(this, Arduino.list()[0], 57600);

  // create robo object
  myRobo = new Robo();

  // set pins
  arduino.pinMode(0, Arduino.INPUT);
  arduino.pinMode(1, Arduino.INPUT);

}

void draw() {

  background(0);

  getRot();
  drawRobo(outRotX, outRotY);

  delay(100);

}

void getRot() {

  int tmpRotX = arduino.analogRead(0);
  int tmpRotY = arduino.analogRead(1);

  tmpRotX = tmpRotX / 25;
  outRotX = tmpRotX;

  tmpRotY = tmpRotY / 25;
  outRotY = tmpRotY;

  println("X " + outRotX);
  println("Y " + outRotY);

}

void drawRobo(int inRotX, int inRotY) {

  float rotX = inRotX;
  float rotY = inRotY;

  translate(width/2, height/2, 0);

  if (awake == true) {
    rotateY(radians(rotX));
    rotateX(radians(rotY));
  }

  myRobo.drawRobo();

}

class Robo {

  Robo() {

    // nuthin'

  }

  void drawRobo() {

    beginShape();
    noFill();
    stroke(0, 255, 0);

    box(250, 250, 250);

    if (awake == true) {

      translate(-50, -50, 125);
      box(50, 50, 50);

      translate(50, 50, -125);
      translate(50, -50, 125);
      box(50, 50, 50);

      translate(-50, 50, -125);
      translate(0, 50, 125);
      box(150, 50, 50);

    }

    endShape();

  }

  void wakeUp() {

    beginShape();
    noFill();
    stroke(0, 255, 0);

    box(250, 250, 250);

    translate(-50, -50, 125);
    for (int i = 0; i <= 49; i++) {
      box(i, i, i);
    }

    translate(50, 50, -125);
    translate(50, -50, 125);
    for (int i = 0; i <= 49; i++) {
      box(i, i, i);
    }

    translate(-50, 50, -125);
    translate(0, 50, 125);
    for (int i = 0; i <= 149; i++) {
      box(i, 50, 50);
    }

    endShape();

  }

}

void keyPressed() {

  if (awake == false) {
    wakeUp();
    exec("hello world");
    awake = true;
  } else {
    goSleep();
    awake = false;
  }

}

void wakeUp() {

  myRobo.wakeUp();

}

void goSleep() {

  // nuthin'

}

void exec(String inString) {

   String[] params = {"say", inString };
   exec(params);

}