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.

01 Keyboard Hack

1. November 2011

Gruppenarbeit: Samuel Stoeklin, Patrick Pandolfo

Aufgabe

Für diese Aufgabe nehmt ihr den Tastaturcontroller aus einer handelsübliche Tastatur und verwendet unterschiedliche EIN/AUS Elemente den Controller anzusteuern. Die resultierenden Eingaben lest ihr mit Processing aus und generiert ein adäquates visuelles Feedback. So sollen Eingabe/Ausgabe Situationen entstehen, welche möglichst intuitiv und/oder emotional überraschend zu bedienen sind.

Tastatur verwenden

Um an den Controller einer Tastatur zu kommen, muss diese geöffnet werden und lediglich die kleine beinhaltete Platine herausgenommen werden. Vorsicht, dass die Kontakte und Kabel nicht zu Schaden kommen.

EIN/AUS Elemente

Die einfachste Art ist es, schon vorgefertigte Schalter und Taster zu verwenden. Dabei sind deren Form und Grösse bereits festgelegt. Manchmal lohnt es sich daher, über eine eigene Lösung zur Erfassung der Eingabe nachzudenken und diese mit einfachen Mitteln selber zu realisieren. Dies erhöht die Flexibilität und auch die Möglichkeiten zur Eingabe enorm.

Wir versuchen einen neuen Pacman-Klon zu realisieren. Der Keyboardkontroller soll zum Joystick umgebaut werden. Nach dem das Keyboard bis zur Platine zerlegt wurde, suchten wir vier Keys zur Steuerung. Es bereitete uns erhebliche Schwierigkeiten danach die ermittelten Pins mit Lizendrähten zu verbinden. Wir rauhten die Verbindungsstellen bis auf das blanke Kupfer auf und verlöteten die Drähte. Danach setzten wir mit der Klebepistole den ultimaten Halt. i => left p => up u => down t => right Gesammte Übersicht CODE
import ddf.minim.*;
import ddf.minim.analysis.*;

Minim minim;
AudioPlayer song;

int _width = 500;
int _height = 500;

int x = 250;
int y = 250;

int step = 5;
float angle = 0;
float anglestep = 0.05;

float foo = TWO_PI;
float upper = 0;
float lower = 0.7;

void setup()
{
  minim = new Minim(this);
  song = minim.loadFile("pacman_x.mp3", 2048);
  size(_width, _height);
  ellipseMode(CENTER);
  noStroke();
  fill(255,255,0,200);
  smooth();
}

void draw()
{
  background(0);
  if(angle > lower) {
    anglestep = -0.04;
  } else if(angle     anglestep = 0.04;
  }
  angle = angle + anglestep;
  arc(x,y,50,50,angle, foo-angle);
}

void keyPressed()
{
  switch(key)
  {
  case 'i':
    x = x-step;
    angle = -PI;
    upper = -PI;
    lower = -PI+0.7;
    foo = 0;
    song.play();
    break;
  case 't':
    x = x+step;
    angle = 0;
    upper = 0;
    lower = 0.7;
    foo = TWO_PI;
    song.play();
    break;
  case 'u':
    y = y+step;
    angle = -TWO_PI/2-PI/2;
    upper = -TWO_PI/2-PI/2;
    lower = -TWO_PI/2-0.7;
    foo = -PI;
    song.play();
    break;
  case 'p':
    y = y-step;
    angle = -PI/2;
    upper = -PI/2;
    lower = -PI/2+0.7;
    foo = PI;
    song.play();
    break;
  }
}

void keyReleased()
{
    switch(key)
  {
  case 'i':
  case 't':
  case 'u':
  case 'p':
    song.pause();
    song.rewind();
    break;
  }
}

void stop(){
  song.close();
  minim.stop();
  super.stop();
}