Portfolio
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Vivien Bardosi<br />
Svenja Dittrich<br />
Lukas Ponikowski<br />
<strong>Portfolio</strong><br />
Interface Design I & II<br />
Inhalt<br />
Einführung in die Arduino-Welt .............................................................................................................. 2<br />
Ideenfindung ........................................................................................................................................... 2<br />
Spielprinzip .............................................................................................................................................. 3<br />
Wer ist BMO? .......................................................................................................................................... 3<br />
Umsetzung .............................................................................................................................................. 4<br />
Resultat ................................................................................................................................................... 7<br />
Programmcode ....................................................................................................................................... 8<br />
Quellen .................................................................................................................................................... 9<br />
1
Einführung in die Arduino-Welt<br />
In den ersten Stunden des Blockseminars wurden wir mit dem Arduino Mikrocontroller vertraut<br />
gemacht und erhielten eine Einführung in ElektrSotechnik, in der wir mit Widerständen, LEDs und<br />
Servos umzugehen lernten. Mithilfe der Arduino Library for Processing wurde uns außerdem die<br />
Möglichkeit eröffnet, das Arduino-Board in der Programmiersprache Processing zu programmieren.<br />
So konnten wir bereits in den ersten Semestern erlangtes Wissen direkt auf das Blockseminar<br />
übertragen.<br />
Ideenfindung<br />
Kurz darauf galt es sich als Gruppe Gedanken über eine Projektidee zu machen. Das Arduino-Board<br />
sollte den Kern des Projekts darstellen. Bei der Ideenfindung haben wir großen Wert auf<br />
fortlaufende Interaktion mit dem Benutzer gelegt. Nachdem wir die Idee eines über Gamepads<br />
gesteuerten elektro-mechanischen Fußballkickers aufgrund der Umsetzbarkeit wieder verwarfen,<br />
hat sich das Geschicklichkeitsspiel „Heißer Draht“ als gute Idee erwiesen.<br />
2
Spielprinzip<br />
Beim „Heißen Draht“ geht es darum, einen Stab mit einer Drahtöse durch einen Parcours aus<br />
gebogenem Draht zu führen. Dabei darf die Öse den Draht nicht berühren. Der Einfachheit halber<br />
haben wir uns für die umgekehrte Variante entschieden, in der ein leitender Stab dauerhaft mit dem<br />
Draht verbunden sein muss. Wird der Draht los gelassen, ist das Spiel zu Ende.<br />
Wer ist BMO?<br />
Bei der gestalterischen Umsetzung unseres Projekts bedienten wir uns an<br />
der US-amerikanischen Zeichentrickserie „Adventure Time“, die seit 2010<br />
auf Cartoon Network ausgestrahlt wird. In der Serie wird neben den<br />
beiden Protagonisten Finn und Jake, ihre sprechende Videokonsole BMO<br />
(Beemo) thematisiert. BMO wurde programmiert, um Gefühle zu<br />
empfinden und Spaß verstehen zu können. Sie bildet die Vorlage für die<br />
Gestaltung unseres Projekts.<br />
3
Umsetzung<br />
Der Nachbau von BMO erfolgte mithilfe zweier Keilrahmen, die wir für das Gerüst verwendeten. Die<br />
Rahmen wurden auseinander gebaut, zu einem Holzgestell zusammen genagelt und anschließend<br />
mit dünnen MDF-Platten versehen.<br />
Mithilfe von Acrylfarbe haben wir der Konstruktion den passenden Anstrich in BMO-Optik verliehen.<br />
Die Level stickten wir mit dünnem Kupferdraht durch die MDF-Platte. Eingebaute Glühbirnen sollten<br />
dem Spieler signalisieren, in welchem Level er sich befindet.<br />
Beim Level-Design achteten wir auf einen angemessenen Schwierigkeitsgrad, indem wir Hindernisse<br />
einbauten. Mithilfe von Servos haben wir z.B. Abschnitte installiert, die auf und ab wippten. In<br />
4
gepflegter Adventure-Manier wurde außerdem ein Level umgesetzt, in dem es galt drei Schalter zu<br />
drücken, bevor man fortfahren konnte. Außerdem sollte der Spieler in einem in einem der Level den<br />
kleinen Mini-BMO mit einem am Stab befestigten Haken „retten“ und in einen dafür vorgesehenen<br />
Korb fallen lassen.<br />
Das Spiel integrierten wir daraufhin in das Display von BMO, von wo aus der Großteil der Interaktion<br />
mit dem Spieler stattfinden sollte.<br />
5
Als besondere Herausforderung hat sich das Kabelmanagement auf der Rückseite des Spielfelds<br />
herausgestellt. Um die vielen LEDs und Servos steuern zu können, sind eine Menge Kabel notwendig<br />
gewesen, die ebenfalls auf dem Steckboard untergebracht werden mussten.<br />
BMO wurde zuletzt noch um eine Vorrichtung erweitert, die das Spielfeld vor Spielbeginn verdeckte.<br />
Bei Münzeinwurf sollte diese Klappe dann mechanisch herunter gefahren werden. Aufgrund des<br />
knappen Zeitrahmens haben wir diese Idee allerdings nicht mehr im Programmcode umsetzen<br />
können. Insgesamt haben wir uns deshalb auf die wesentliche Spielfunktion beschränkt.<br />
6
Resultat<br />
7
Programmcode<br />
import org.firmata.*;<br />
import cc.arduino.*;<br />
import processing.serial.*;<br />
import cc.arduino.*;<br />
Arduino arduino;<br />
void setup()<br />
{<br />
size(360,200);<br />
arduino = new Arduino(this, "/dev/cu.usbmodem1411", 57600);<br />
}<br />
arduino.pinMode(9, Arduino.INPUT); // level 1<br />
arduino.pinMode(7, Arduino.INPUT); // level 2<br />
arduino.pinMode(8, Arduino.INPUT); // level 3<br />
arduino.pinMode(6, Arduino.INPUT); // level 4<br />
arduino.pinMode(3, Arduino.OUTPUT); // LED level 1<br />
arduino.pinMode(5, Arduino.OUTPUT); // LED level 2<br />
arduino.pinMode(4, Arduino.OUTPUT); // LED level 3<br />
arduino.pinMode(2, Arduino.OUTPUT); // LED level 4<br />
void draw()<br />
{<br />
}<br />
if (arduino.digitalRead(9) == 1){ // level 1<br />
arduino.digitalWrite(3, Arduino.HIGH); // LED level 1<br />
} else {<br />
arduino.digitalWrite(3, Arduino.LOW); // LED level 1<br />
}<br />
if (arduino.digitalRead(7) == 1){ // level 2<br />
arduino.digitalWrite(5, Arduino.HIGH); // LED level 2<br />
} else {<br />
arduino.digitalWrite(5, Arduino.LOW); // LED level 2<br />
}<br />
if (arduino.digitalRead(8) == 1){ // level 3<br />
arduino.digitalWrite(4, Arduino.HIGH); // LED level 3<br />
} else {<br />
arduino.digitalWrite(4, Arduino.LOW); // LED level 3<br />
}<br />
if (arduino.digitalRead(6) == 1){ // level 4<br />
arduino.digitalWrite(2, Arduino.HIGH); // LED level 4<br />
} else {<br />
arduino.digitalWrite(2, Arduino.LOW); // LED level 4<br />
}<br />
8
Quellen<br />
http://2.bp.blogspot.com/-<br />
o4bo40gAoHc/TkLLQ7UfDsI/AAAAAAAAAwM/jKf6irTi1Sc/s1600/beemo.png<br />
http://i1106.photobucket.com/albums/h376/masalya9940/beemo_dancing_by_norrlingd5afmpo_zps90296e75-1_zps208021b7-1_zps34ad7b87.jpg<br />
http://playground.arduino.cc/interfacing/processing<br />
http://de.adventuretime.wikia.com/wiki/BMO<br />
http://de.wikipedia.org/wiki/Adventure_Time_%E2%80%93_Abenteuerzeit_mit_Finn_und_Jake<br />
9