Posts Tagged ‘Hüpfspiel’

Es ist vollbracht

Mittwoch, Juli 14th, 2010

Endlich konnte das Arduino Hopscotch Projekt fertiggestellt werden. Während der Code für das Arduino-Board schon seit längerem praktisch fertig und funktionsfähig war, bereitete Flash einige Probleme. So konnten die von Arduino gesendeten Werte zwar in Flash ausgegeben, aber nicht verarbeitet werden. Nach einigem Suchen wurde dann eine Lösung gefunden. Die ausgegebenen Werte im Arduino wurden Buchstaben zugeordnet und in Flash dann wie folgt abgefragt:

index = str.indexOf(“A”);

if (index != -1) {

}

Nachdem diese Hürde überwunden war, konnte auch die Flash Applikation recht schnell fertiggestellt werden, so dass nun ein völlig funktionsfähiges Arduino Hüpfspiel mit einer Flash-Visualisierung vorliegt.

Hier nun noch einmal eine Erläuterung zu Regeln und Funktionsweise des Arduino-Hüpfspiels.

Das Arduino-Programm ist autonom und kann auch ohne die Flash-Applikation genutzt werden. Um das Arduino Hüpfspiel zu spielen, muss der Nutzer einfach nur den aufleuchtenden grünen LED, die in den Platten eingelassen sind, folgen. Tritt der Nutzer auf eine nicht beleuchtete, falsche Platte oder betritt die mittig positionierte Platte, so leuchtetet die rote LED der mittig positionierten Platte auf und das Spiel wird neu gestartet. Auch wenn der Nutzer alle 5 Runden erfolgreich gespielt hat, wird ein Neustart durchgeführt und ein neues Spiel kann begonnen werden.

Die Flash- Applikation soll dem Nutzer helfen sich zu orientieren und nochmals visualisieren, was auf den Platten passiert. So soll es diejenigen unterstützen, die sich nicht mehr so recht an die Regeln des Kinderspiels erinnern können. Beim Spielen kann der Nutzer anhand der Flash-Visualisierung jederzeit erkennen, in welcher Runde er sich gerade befindet. Zudem wird durch blaue Fussspuren angezeigt wo, beziehungsweise auf welcher Platte, sich der Nutzer gerade befindet. Auch auf welche Platte als nächstes gesprungen werden soll, kann der Flash- Visualisierung entnommen werden: entsprechende Platten werden in einem helleren Grauton als die Übrigen dargestellt.

Hier ein Bild der Flash-Visualisierung, der Nutzer steht in diesem Beispiel in der Ausgangsposition außerhalb des Spielfeldes und soll nun auf die Platte mit der  Nummer 2 springen.

Flash Oberfläche

Insgesamt kann die Arbeit mit dem Arduino-Board als zufriedenstellend beschrieben werden. Nach einer kurzen Einarbeitungszeit kann man recht schnell und einfach Projekte mit dem Arduino umsetzen. Einzig die Limitationen durch das Board, wie beispielsweise die geringe Anzahl der Steckplätze verlangt bei größeren Projekten sicherlich das zeitaufwendige Finden individueller Lösungen. Positiv erwähnt werden kann aber die Tatsache, dass es möglich ist, Arduino mit Flash etc. zu kombinieren und so verschiedenen Medien und Proagramme in einem Projekt zu kombinieren.

Hier noch der Link zum abschließenden Screencasting:

hopscotch_screencast

Und wieder blinkt es

Donnerstag, Juni 24th, 2010

In den Hüpfplatten sind LEDs vebaut. Damit diese ihren Job auch aufnehmen können, wurde heute der Code, für die LED-Steuerung geschrieben. Es soll immer die Platte leuchten, auf die der Nutzer als nächstes treten muss. Dies ist, so hat sich in ersten Tests gezeigt, sehr hilfreich und macht zudem Spaß. Hier nun der Code, der dies ermöglicht:

if (benoetigteTaste == 2 ){
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPinx, LOW);
}

Verwendet werden die Variablen, die auch schon zum Überprüfen der richtigen Reihenfolge verwendet werden und so war der Code sehr schnell erstellt. Für jede LED ist ein solcher Code-Block angelegt.

Plattenbau

Samstag, Juni 12th, 2010

Gemeint ist nicht das aus Betonfertigteilen gefertigte Gebäude, sondern die Herstellung der trittsensitiven Felder für das Arduino Hüpfspiel. Insgesamt drei Wochenenden nahm diese in Anspruch.
Die ursprüngliche Idee, Taster für die Messung in den Platten zu verbauen, stellte sich schnell als unpraktikabel heraus: Die kleinen Taster halten einer Belastung, wie sie beim Hüpfen zustande kommt, nicht stand. Auch sind sie zu hoch, um wie geplant, in den Platten eingelassen zu werden. Ein weiteres Problen ist, dass die Kontakte der Taster auf der Unterseite angebracht sind, wodurch beim Hüpfen viel Druck auf die Lötstellen eingewirkt hätte. Nach dieser Feststellung wurden zunächst größere Taster auf ihre Tauglichkeit hin untersucht und was die Stabilität betrifft für geeignet befunden. Diese Taster waren aber deutlich zu groß.
Schnell wurde deutlich, dass eine eigene Lösung gefunden werden musste, um die Anforderungen, die das Spiel stellt, zu erfüllen.
Nach langem Durchsuchen der Werkstatt, dann ein Fund: Alte Telefonrelais. Diese wurden dann zerlegt und pro Hüpfplatte, die aus zwei Holzplatten besteht, wurden jeweils zwei flache und zwei federnde Kontakte aus den Relais eingelassen.

Die beiden Holzplatten werden durch eine dünne, schmale Leiste auf einer Seite der Platten von einander getrennt, sodass die Kontakte nicht aufeinander liegen. Gegenüber der Leiste, ist auf der anderen Seite der Platte ein Steifen Fensterdichtung aus Schaumstoff angebracht, um eine sanftes Federn der Hüpfplatten zu gewährleisten. Zudem wurde in jeder der insgesamt sechs Platten eine LED eingelassen. Fünf der Platten sind Hüpfplatten und haben eine grüne LED, eine Platte hat eine rote LED und soll vom Spieler nicht betreten werden.

Auch darüber, wie das Danebentreten beim Hüpfspiel gemessen werden könnte, wurden sich Gedanken gemacht. Dass eine vollkommene Umrandung der Hüpfplatten mit einer oder mehereren “Daneben-Platten” nur sehr schwer umzusetzten wäre, wurde recht schnell klar. Diese Platte/Platten würden sehr groß und schwer werden und im Vergleich zu ihrem relativ geringen Nutzen extrem viel Herstellungsaufwand bedeuten. Daher wurde über Alternativen zu Platten nachgedacht. Eine interessante Idee war es, einen Wasserzulaufschalter aus einer Waschmaschine an einen Schlauch anzuschließen und den beim Betreten des Schlauchs entstehenden Luftdruck zu verwenden, den Schalter umzulegen. Ein Schlauch als “Daneben-Platte” wäre leicht und flexibel gewesen und hätte sich mit Klebeband o.ä. leicht in jede gewünschte Form bringen lassen. Leider scheiterte die Umsetztung aber daran, dass kein Schlauch, der weich und dick genug war, zu finden war. Daher wird nun die Platte mit der roten LED, die im Zentrum des Hüpfspiels ihren Platz finden wird, als alleinige “Daneben-Platte” dienen.

Der große Schritt…

Sonntag, Juni 6th, 2010

Ziemlich lange wurde die Programmierung des Hopscotsch Spieles nun hinausgezögert. Doch an diesem Wochenende war es so weit, die Aufgabe wurde angepackt. In erstaunlich kurzer Zeit kam so ein Programm zustande, dass prüft, ob der Spieler die Platten des Spiels in der richtigen Reihenfolge betätigt. Einzig Feedback per LEDs etc. ist noch nicht programmiert, da der parallel zur Programmierung erfolgte Bau des Spielfeldes doch etwas langsamer voran ging als erwartet und erst die Fertigstellung der Platten erfolgen soll.

In einem mehrdimensionalen Array ist die richtige Reihenfolge der Tasten gespeichert . Hier ein Ausschnitt aus dem Code:

int ablauf [6][8] = {
{1,1, 0, 0, 0, 0, 0, 0}, // aktueller Status… aktuelle Runde, aktuelle Position!
{1,3, 4, 5, 6, 5, 4, 3}, // runde 1, usw….   erste zahl rundennr, dann zu betaetigende tasten in richtiger reihenfolge
{2,2, 4, 5, 6, 5, 4, 2},
{3,2, 3, 5, 6, 5, 3, 2},
{4,2, 3, 4, 6, 4, 3, 2},
{5,2, 3, 4, 5, 4, 3, 2}

};

Ob die jeweils betätigte Taste korrekt ist, wird, wie hier für Taste zwei, wie folgt geprüft:

if (val2 == LOW && val2 != oldVal2){
Serial.println(“zwei_1″);

int gedrueckteTaste = 2;

int runde = ablauf [0][0];
int aktuelleTaste = ablauf [0][1];

int benoetigteTaste = ablauf [runde][aktuelleTaste];

Serial.println(“es muss gedrueckt werden:”);
Serial.println(benoetigteTaste);

if(benoetigteTaste == gedrueckteTaste){
if(aktuelleTaste == 7 && runde == 5){

Serial.println(“Gewonnen! Gewonnen! Gewonnen!”);

ablauf[0][0] == 1;
ablauf[0][1] == 1;
}
else if(aktuelleTaste == 7){
ablauf[0][0]++;
ablauf [0][1] = 1;
Serial.println(“naechste Runde!”);
Serial.println(ablauf[0][0]);
}
else{
ablauf[0][1]++;
Serial.println(“naechste Taste”);
}
}
else{
ablauf[0][0] == 1;
ablauf[0][1] == 1;
Serial.println(“falsche Taste! – Neustart”);
}
}

Aus dem Leben einer LED

Samstag, Mai 15th, 2010

Als LED hat man es in diesen Tagen nicht leicht: Auch am heutigen Tage wurden erneut zwei unschuldige LEDs für Tests missbraucht. Getestet wurde, wie der Aufbau einer einzelnen Platte aus dem Hopscotch-Spiel aussehen und wie das Betreten und Übertreten selbiger gemessen werden könnte. Das Übertreten einer Platte wurde durch Druck auf einer der Taster, die an den vier Seiten der Platte angebracht wären simuliert. Bei einem Auslösen der Taster wurde eine rote LED zum Leuchten gebracht, während eine grüne LED anzeigte, dass die “Platte” mittels eines Drucksensors ausgelöst wurde.

Das Video zum Tests gibt’s unten.

Weiteres zum Konzept

Freitag, Mai 7th, 2010

Das Konzept zum Hüpfspiel wurde nochmals überarbeitet und es wurden weitere Überlegungen zur Umsetzung angestellt.

Multiplayermodus: Ein Brettchen mit vier Tastern bietet bis zu vier Nutzern, die Möglichkeit durch einen Drücken des entsprechenden Tasters anzugeben, welcher Spieler an der Reihe ist. Dazu ist jede Taste mit einer der Ziffern von Eins bis Vier beschriftet und jeder der Spieler bekommt eine dieser Nummern zugeordnet. Durch Aktivierung eines Tasters wird dem System mitgeteilt, dass dieser nun am Zug ist und einen Durchgang absolvieren will. Durch die Aktivierung des Tasters wird zudem auf einem Display der aktuelle Punktestand des Spieles angezeigt.

Sound: Es ist noch nicht entschieden, ob und wie Sound ausgegeben wird. Denkbar wäre eine Soundausgabe bei korrektem Hüpfen auf ein Feld, ein Sound bei erfolgreichem Beenden eines Durchgangs, ein Sound, wenn der Spieler neben das Spielfeld tritt und ein Sound für den Gewinner.

Punktesystem: Das Spielen erfolgt, nicht wie beim Original, ohne Stein. Das Feld, auf dem der Stein bei normalem Spielverlauf liegen würde, leuchtet stattdessen. (Erste Runde – erste Platte leuchtet, zweite Runde – zweite Platte leuchtet…) Zum Abschließen der Runde darf der Spieler dann auf das Feld treten und bestätigt so, dass er die Runde vollendet hat. Für jede komplett vollendete Runde erhält der entsprechende Spieler einen Punkt. Ein Spieler kann so maximal 6 Punkte erreichen.

Übertreten der Platten: Die Entscheidnung, ob das Übertreten der Platten tatsächlich mit Lichtschranken oder beispielsweise doch durch Taster etc. gemessen wird, muss anhand von Tests mit den verschiedenen Messarten noch getroffen werden.

Erste Scribbles

Montag, April 12th, 2010

Die ersten Scribbles sind erstellt.

Das erste Scribble zeigt das gesamte Spielfeld und die Positionierung der Lichtschranken, die nötig sind, um zu überprüfen, ob der Nutzer neben die Platten tritt. Zudem ist zu sehen, dass die Beschriftung der einzelnen Felder eventuell durch leuchtenden LED gelöst wird, die ausgeschaltet werden, wenn der Stein auf dem entsprechenden Feld landet.Schranken und LED

Hier erste Überlegungen zu den Platten und der Unterbringung der Drucksensoren: Wenn der Drucksensor zwischen zwei festen Platten (Linoleum, Sperrholz, etc.) gelegt wird, die durch Schaumstoffstreifen an den Seiten auseinander gehalten werden, so genügt eventuell ein Drucksensor pro Platte. Um sicher zu gehen, dass der Sensor auslöst, wenn die Platte belastet wird, kann an der Unterseite der oberen Platte eine Erhöhung gegenüber des Drucksensors angebracht werden.

Platte Querschnitt

Viele Fragen und ein Konzept

Montag, April 12th, 2010

Die Entscheidung für das Hüpfspiel war getroffen und genauere Überlegungen zum Konzept des Projektes wurden angestellt. Im Zuge dessen ergaben sich allerlei Fragen die diskutiert werden wollten. So zum Beispiel:

  • Werden erwachsene Personen überhaupt durch das Spiel angesprochen?
  • Sollen eventuell verschiedene Spiele angeboten werden, zwischen denen der Nutzer wechseln kann?
  • Wie erhält der Nutzer Feedback? Sound, Licht?
  • Genügt es, einen Drucksensor pro Platte zu verwenden?

Die meisten Fragen werden wohl erst nach praktischen Tests mit dem Arduino beantwortet werden können und so wurde eine Entscheidung bezüglich dieser Detailfragen erst einmal vertagt. Immerhin lieferten all diese Fragen Ideen und Anregungen zum Erweitern des Spiels.

Die Grundzüge des Projektes konnten aber bereits definiert werden. Mögliche Erweiterungen können dann später, wenn der Grundaufbau für tauglich befunden ist, ergänzt werden.

Festgehalten wurde:

  • Das Spielfeld besteht aus einzelnen Platten, unter denen sich Drucksensoren befinden
  • Lichtschranken stellen sicher, dass der Nutzer nicht einfach um das Spielfeld läuft, um auf eine Platte zu gelangen
  • Es wird ein Wurfstein eingesetzt
  • Mehrere Spieler können zusammen spielen
  • Der Punktestand für jeden der Nutzer wird auf einer LED-Tafel angezeigt

Die Entscheidung ist getroffen

Mittwoch, April 7th, 2010

Eine Woche nach dem Zusammentragen der Ideen wurde, nach reiflicher Überlegung, Abwägen der einzusetzenden Medien und dem Einschätzen der Machbarkeit, eine Entscheidung getroffen. Die Mehrzahl der Ideen wurde mit einem „Heute haben wir leider kein Foto für Dich!“ leider für immer unter den virtuellen Teppich gekehrt. Nur eine Idee konnte die Chance auf Umsetzung erkämpfen. Dabei handelt es sich um *trommelwirbel* das Hüpfspiel!

Auch erste Rahmenbedingungen für das Projekt konnten festgehalten werden. So wurde entschieden, dass die Spielfläche wohl nicht mit Hilfe eines Projektors auf den Boden gebracht wird. Stattdessen soll es feste Platten geben, die gemeinsam die Spielfläche bilden. Zudem wurde der Einsatz von Drucksensoren und Lichtschranken für das Projekt beschlossen.