|
|
Elektronischer ZauberwuerfelDer "Elektronische Zauberwürfel" ist die elektronische Variante des aus den 80er-Jahren bekannten Rubik's Magic Zauberwürfels. Es entsteht zunächst eine Studie/Prototyp, die zeigen soll, ob die Spielidee des mechanischen Zauberwürfels auf eine elektronische Variante übertragbar ist und durch zusätzliche Features sinnvoll ergänzt werden kann.
[Bearbeiten] Idee und MotivationDie gängigen Rubiks Zauberwürfel haben 3x3x3 Steine. Neben dem Rubiks Revenge (4x4x4) und dem Rubiks Professor (5x5x5) gibt es keine käuflichen größeren Zauberwürfel - vermutlich aus mechanischen Gründen. Die virtuellen Würfel (PC-Software) lassen sich nicht in die Hand nehmen und auf natürliche Weise begreifen und lösen. Daher dachte ich zunächst einen 8x8x8 Würfel zu bauen, der ähnlich wie ein mechanischer Zauberwürfel lösbar sein sollte (In die Hand nehmen, drehen und die Farben suchen...). Nach kurzer Überlegung, wie viele Lampen und Taster ich dazu brauchen würde, habe ich die Idee gaaanz schnell aufgegeben und mich auf einen 3x3x3er konzentriert. (8x8x8: 512Felder zu je 6LEDs -> 3000LEDs) Nachtrag: 8x8x6(Seiten)zu je 6 LEDs sind "nur" 2304LEDs! Der Reiz den mechanischen Zauberwürfel überhaupt lösen zu können, verfliegt nach ein paar Tagen und es stellt sich die Frage: "Wie schnell kann ich den Zauberwürfel lösen?". Aus dem anfänglichen neugierigen Spiel wird eine technische Sportart, die auf folgende Punkte Wert legt:
Der Elektronische Zauberwürfel soll diese Dinge vereinfachen.
[Bearbeiten] FeaturesFolgende Funktionen sollen umgesetzt werden:
[Bearbeiten] MechanikBeim elektronischen Zauberwürfel gibt es keine beweglichen Teile. Jede der sechs Seiten des Würfels besteht aus einem feststehenden 3x3-Feld aus LEDs. An allen Kanten sind Taster, die die gedachten beweglichen Teile in der gewünschten Drehrichtung weiterdrehen, d.h. die angezeigten Felder ändern ihre Farben. Übertragen auf einen mechanischen Würfel, würde sich diese Ebene bei einem Tastendruck dann um 90° in die gedrückte Richtung drehen.
In der Mitte jeder Seite ist das 3x3-LED-Feld. Jedes Feld besteht aus 6 farbigen EinzelLEDs, von denen immer nur eine leuchtet.
[Bearbeiten] Elektronik[Bearbeiten] Konzept mit dimmbaren RGB-LEDs (verworfen)Zunächst habe ich versucht die Anzahl der LEDs gering zu halten, und für jedes Feld eine RGB-TrueColor-LED vorgesehen. Der Vorteil dabei ist, es ist nur eine LED zu bestücken und es müssen nur 3 Ausgangskanäle (statt 6) verwendet werden - aber diese müssen dann auch dimmbar sein. Und da fing das Problem an... Kurze Überschlagsrechnung für 162 dimmbare Kanäle (= 6 Seiten x 9 Felder x 3 LEDs) über 8Bit-SPI-Schieberegister (andere Ansteuermöglichkeit sehe ich nicht):
Ergebnis: D.h. es bleibt dem System genau 20µs, um zu berechnen, welches Byte als nächstes per SPI zu verschicken ist. In dieser Zeit müssen die Helligkeitswerte von 8LEDs in eine binäre Information umgesetzt werden (z. B. LED0: 80%; LED1: 100%...). Die hierfür entwickelte Testroutine (Lookuptable, zur Erhöhung der Ausgabegeschwindigkeit...) benögte dafür 45µs auf dem Zielsystem (HCS12C32@50MHz) und ist damit um den Faktor 2.25 zu langsam. Nebenbei sollte ja noch andere Dinge erledigt werden, wie z. B. Züge berechnen usw. Damit ist das Konzept erst mal auf Eis gelegt.
[Bearbeiten] Konzept mit sechs Einzel-LEDs pro FeldNachdem das DimmKonzept aus Timinggründen nicht umsetzbar war, plante ich die Umsetzung von 6 Einzel-LEDs pro Feld. Jede Seite hat 9x6 EinzelLEDs -> pro Würfel sind das dann 324 zu verbauende LEDs, die über Schieberegister angesteuert werden und statisch leuchten sollen. Elektrische Features:
[Bearbeiten] Schaltplan/Layout
|
[Bearbeiten] Technische DatenProzessor: Freescale HCS12C32 (50MHz); 5V; 32k Flash (12k benutzt); 2k RAM (600Bytes benutzt) |
Fotos der Elektronik
| Jede Seite des Würfels besteht aus einer dieser Platinen. Die Außenseite ist mit Tastern und LEDs bestückt... | ... auf der Innenseite sitzt die Elektronik. Nur eine der sechs Platinen ist mit einem eigenen Prozessor ausgestattet - alle anderen tragen nur die Schieberegister. |
| So sieht der Würfel aus, wenn er zusammengebaut ist. |
|
Statt der Verwendung von RGB-LEDs könnten auch 6 Einzel-LEDs verbaut werden, die allerdings nicht gedimmt werden, sondern mit verschiedenen zuschaltbaren Vorwiderständen angesteuert werden. Vorteil: LED in einem Gehäuse; kein "Versatz" bei unterschiedlichen Farben; zu prüfen, ob RGB-LED auch ohne Streuscheibe verwendet werden kann; sind Farben noch als solche erkennbar oder nur die 3 LED-Grundfarben?
Als Tasteralternative könnten eventuell auch Sensortasten in Frage kommen?! QT1106 (Datenblatt) (3,55€ bei Farnell); evtl. zwischen den LEDs angeordnet...
Die Software besteht aus den Modulen/Teilen für:
Zusammengehalten wird die Software von einem Scheduler, der einen 10ms-Task und einen 100ms-Task zyklisch bedient. Der 100ms-Task wird als 500ms-Task benutzt (nur jeden 5.Durchgang ausführen), um folgende Aufgaben abwechselnd auszuführen:
Der 10ms-Task erledigt folgende Aufgaben:
Download der Sourcen Sourcen Rev.111
Die PC-Software dient nur zur Kontrolle und Simulation des elektronischen Würfels. Es können Drehbewegungen an den realen Würfel gesendet werden, die dieser dann ausführt und seine aktualisierten Aufkleberfarben zurückschickt. Zudem zeigt die PC-Software die Lösungszeit an.
Als zusätzliches Feature war geplant eine Tutoriumsfunktion in die Hardware einzubauen. Nachdem ich mich etwas intensiver mit Konzept/Implementierung beschäftigt hatte, wurde mir schnell klar, dass das aus Ressourcengründen nicht autark in der Würfelelektronik abgehandelt werden kann (Laufzeit und/oder ROM/RAM-Bedarf). Darum beschäftige ich mich derzeit mit der Implementierung eines Autosolving-Algorithmus im PC, der aus jeder Situation heraus, den Zug vorschlägt, der einen Schritt in Richtung gelöster Würfel führt.
Es gibt Lösungsalgorithmen, die versuchen mit möglichst wenig Zügen den Würfel zu lösen. Derzeit geht man davon aus, dass jede Würfelpermutation mit max. 20 Zügen gelöst werden kann (bewiesen ist das Maximum mit 23 Zügen). Das ist aber alles sehr theoretisch und die vorgeschlagenen Züge sind vom Menschen unmöglich nachzuvollziehen. (Zunächst kommen einem die ersten 12..15 Züge vollkommen willkürlich vor, danach "fallen" dann alle Steine innerhalb weniger Züge in ihre richtige Lage).
Um auch einen praktischen Nutzen aus dem Autosolver zu ziehen, habe ich mich entschieden die "Spiegelmethode" (erstmalig im Spiegel 1981 veröffentlicht) als Tutorium zu implementieren. Beschreibung der Methoden auf Mathematische Basteleien und Kantenkreuz. Oder für diejenigen, die sich das lieber als Youtube-Video reinziehen: Teil1, Teil2, Teil3.
Der Vorteil dieser Methode ist, dass es viele Zwischenstationen gibt, die der Reihe nach zu erreichen sind, und die nur ein paar wenige Züge auseinander liegen. Dabei sind intuitive Züge (die jeder mehr oder weniger intuitiv durchführen kann, ohne genau zu wissen, was er tut) mit "vorgefertigten" Zugfolgen zu kombinieren. Die vorgefertigten Zugfolgen sollen ja hiermit eingeübt werden. Für einen Autosolver stellen die, für Menschen intuitiven Züge, natürlich ein Problem dar. Irgendwie müssen diese in einen Algorithmus gepackt werden. Der einfachste Algorithmus hierfür ist "God's algorithm", der stur alle Möglichkeiten durchprobiert. Bei 1019 verschiedenen Permutationen (beim 3x3x3 Würfel) ist dies natürlich in endlicher Rechenzeit nicht möglich. Aber wenn nur 4..6 Züge in die Zukunft gerechnet werden soll, so kann das in <1s errechnet werden (Werte meiner Implementierung). Und das reicht dann auch meist aus, um zur nächsten Zwischenstation zu kommen und hierfür Zugvorschläge zu machen.
Um die Zugfolgen dann mechanisch/motorisch einzuüben, wird ein Wegpunkt gesetzt, von dem aus dann die Folge geübt werden kann. Auf Knopfdruck springt dann der Würfel wieder in die abgespeicherte Stellung zurück. Mit dem mechanischen Zauberwürfel ist das "geringfügig" aufwendiger.
Zusätzlich zur "Spiegel-Methode" könnte man auch ein Blind-Folding-Tutorium einbauen. Blind-folding kann ich nämlich selbst (noch?) nicht.
Beim Blind-Folding wird der Würfel verdreht, anschliessend darf der Würfel eine beliebig lange Zeit betrachtet werden und muss dann blind gelöst werden. Während des Lösungsvorganges darf der Würfel nicht mehr betrachtet werden (Augenbinde). Die Lösezeit ist die Summe aus Einprägephase und anschliessender Drehzeit. Beschreibung eines Blind-folding-Verfahrens auf CubeFreak. (Beispiel-Video)
Folgende Probleme sind bei der Planung/Erstellung aufgetreten:
Der größte Nachteil an diesem Prototypen ist die schwierige Erkennung wo die Farben liegen, da diese zu weit im "Innern" entfernt von den Kanten liegen und somit nicht (ohne längere Übungszeit) auf einen Blick erkannt werden können. Beim mechanischen Zauberwürfel grenzen die farbigen Aufkleber direkt aneinander. Hier ist ein Abstand von 35mm bis zur Würfelkante.
Beim "normalen" Speedcubing werden Zugfolgen trainiert, die dann nur noch mechanisch/motorisch abgerufen werden, ohne bewusst darüber nachzudenken. Gleiches konnte ich nach einiger Zeit auch in Bezug auf das Drücken der Tastenfolgen beobachten - das geschieht ebenso "natürlich" wie beim mechanischen Würfel - hätte ich so nicht unbedingt erwartet.
Die Idee mit dem elektronischen Zauberwürfel habe ich zuvor im Internet noch nicht gesehen... naja, also wohl gute Idee gehabt, dachte ich mir. Bis ich zwei Monate nach Fertigstellung des Projekts, dieses Video fand (Fentix) - aber das spielt auch in einer ganz anderen Liga. :-)
Der elektronische Zauberwürfel in Aktion: {{#ev:youtube|G6SVoK5OG90}} http://www.youtube.com/watch?v=G6SVoK5OG90
Kontakt: André; and_ref (at) canathome.de