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); }