Inhaltsverzeichnis:

Stapler Arcade-Spiel - Gunook
Stapler Arcade-Spiel - Gunook

Video: Stapler Arcade-Spiel - Gunook

Video: Stapler Arcade-Spiel - Gunook
Video: "Where's my stapler?" Penny Arcade Game Trailer 2024, November
Anonim
Stapler Arcade-Spiel
Stapler Arcade-Spiel

Hallo Leute, heute möchte ich mit Ihnen dieses erstaunliche Arcade-Spiel teilen, das Sie mit einer Reihe von Ws2812b-LEDs und einem Mikrocontroller / FPGA erstellen können. Siehe Stack Overflow - unsere Hardware-Implementierung eines klassischen Arcade-Spiels. Was als Schulprojekt begann, wurde schnell zu einer Herzensangelegenheit, da wir immer mehr Zeit damit verbrachten, unser Spiel zu entwickeln und mehr daraus zu lernen (und dabei unser Studium zu vernachlässigen xD). Am Ende war unser Spiel so gut gebaut und wurde von unserer Schule so gut angenommen, dass es beschlagnahmt wurde (als Demomaterial für die nächste Schülergruppe). Nun, wir können immer einen zweiten bauen. Lass uns anfangen!

Online-Version des Spiels:

Schritt 1: Was brauchen Sie?

Was brauchst du?
Was brauchst du?
Was brauchst du?
Was brauchst du?
Was brauchst du?
Was brauchst du?
Was brauchst du?
Was brauchst du?

Materialien:

1. ein Mikrocontroller/Mikrocomputer/FPGA - Das FPGA wird verwendet, um die Logik unseres Spiels zu implementieren. Wählen Sie Ihr Board aus, für unser Projekt müssen wir das Mojo FPGA-Board verwenden. Für Uneingeweihte ist es eine Art von Board, das Hardware verwendet, um seine Funktionen statt Codes zu implementieren. Daher würde ich sagen, dass es eher niedrig ist und völlig anders ist, als wenn Sie Arduino oder Pi verwenden. Wenn Sie andere Boards verwenden, müssen Sie Ihren eigenen Code schreiben, aber dieses Spiel ist ziemlich einfach zu programmieren und hey! Jetzt können Sie auch Programmieren lernen!

2. Ws2812b LEDs - Hier verwenden wir die LEDs, um das Display für unser Spiel zu konstruieren. Kann kein Hersteller sein, wenn Sie Ws2812b nicht vor xD berührt haben. Es ist einzeln adressierbar, was bedeutet, dass Sie einzelne LEDs abschneiden und in jede beliebige Formation einfügen können. Und es ist RGB, was bedeutet, dass Sie jede gewünschte Farbe ausgeben können. Außerdem ist FastLED - die Arduino-Bibliothek zur Steuerung von Ws2812b sehr gut entwickelt. Ich würde den Leuten empfehlen, Arduino anstelle des FPGA zu verwenden, wenn Sie keinen haben. Sie können die LEDs von Taobao/Amazon kaufen, aber wir haben unsere vom Sim Lim Tower in Singapur gekauft.

3. Holz - Für das Außengehäuse haben wir 1 cm dickes Sperrholz und für die LED-Matrix 0,3 cm dickes Sperrholz verwendet. Wir fanden unseren Vorrat an Altholz aus dem Fab-Lab unserer Schule.

4. Lichtstreuendes Acryl – Für unseren Bildschirm haben wir verschiedene Arten von Acryl ausprobiert und dieses mattierte Acryl namens PL-422 gefunden, das sich wirklich gut zum Streuen von Licht eignet. Wenn Sie das genaue Modell nicht finden können, suchen Sie nach gefrosteten Acrylfarben. Wir haben unsere bei Dama Plastics in Singapur gekauft.

5. Schaumstoffplatte - Um jedes einzelne Lichtpixel zu trennen, brauchten wir eine Gitterstruktur und dieser Schaumstoff ist das ideale Material dafür. Wir haben in unserer Schulbuchhandlung 0,5 cm dicke Schaumstoffplatten gekauft.

6. Großer roter Knopf - Ok, es ist nicht notwendig, einen so großen roten Knopf zu haben, aber es ist immer gut, einen Knopf zu haben, mit dem die Leute zuschlagen können! xD Wir haben es im Sim Lim Tower in Singapur gekauft.

Werkzeuge:

1. Holzkleber

2. Lötkolben

3. Löten

4. Drähte. Es ist am besten, wenn Sie weiche Drähte im Vergleich zu den steiferen haben. Und Single-Core im Vergleich zu Multicore.

5. Abisolierzange

6. Drahtschneider

7. Bohren Sie mit 1-mm-Bohrern

8. Dekupiersäge

9. Bandsäge

Debuggen:

1. Variables Netzteil

2. Oszilloskop

Schritt 2: Rapid Prototyping

Rapid-Prototyping
Rapid-Prototyping
Rapid-Prototyping
Rapid-Prototyping
Rapid-Prototyping
Rapid-Prototyping
Rapid-Prototyping
Rapid-Prototyping

Für unser Projekt haben wir Rapid Prototyping eingesetzt, bevor wir unsere LED-Matrix gebaut und unser Spiel programmiert haben. Der Grund dafür ist, dass wir die LED-Matrix nicht bauen wollen, nur um zu erkennen, dass unsere Codes nicht funktionieren oder unsere Spiellogik irgendwie fehlerhaft ist.

Hardwareseitig haben wir in der ersten Phase nur unsere Logik zum Verschieben der Lichtmuster auf unserer eigenen einfachen LED-Matrix getestet. Nachdem wir getestet hatten, dass die Logik gut funktioniert, haben wir Streifen mit 5 Ws2812b-LEDs ausgeschnitten, um unsere Spiellogik mit verschiedenen Reihen zu testen. Sobald dies geklappt hat, fahren wir mit der Herstellung der LED-Matrix in vollem Umfang fort.

Wir haben auch verschiedene Acrylproben mit der LED getestet, bevor wir uns für PL-422 als den besten Lichtdiffusor entschieden haben. Und für die Separatorstruktur haben wir auch verschiedene Höhen getestet, damit die LED vollständig diffus ist. Am Ende haben wir festgestellt, dass ein Quadrat von 3 cm * 3 cm mit einer Höhe von 4 cm das beste für die Diffusion ist. Basierend auf dieser optimalen Größe haben wir auch entschieden, wie groß das Sperrholz für eine 5 x 11 LED-Matrix ist, indem wir 0,5 cm Abstand für den Schaumstoff zwischen den Quadraten lassen.

Auf der Softwareseite versuchen wir, so modular wie möglich zu sein - wir testen zuerst, ob die LEDs aufleuchten können, bevor wir die Shift-Funktion hinzufügen, und dann andere. Die Ergebnisse könnten katastrophal sein, wenn Sie dies nicht tun. Wir haben das auf die harte Tour gelernt, als wir versuchten, das ganze Spiel in einem großen Stück zu programmieren, bevor wir merkten, dass wir es nicht debuggen konnten. Autsch!

Schritt 3: Herstellung des Gehäuses

Herstellung des Gehäuses
Herstellung des Gehäuses
Herstellung des Gehäuses
Herstellung des Gehäuses
Herstellung des Gehäuses
Herstellung des Gehäuses
Herstellung des Gehäuses
Herstellung des Gehäuses

Für unser Gehäuse haben wir uns für die Haptik und das Aussehen eines klassischen Arcade-Automaten entschieden. Zuerst schneiden wir etwas dünnes Sperrholz, um die Form schnell zu prototypieren, da es einfacher und schneller ist, dünnes Sperrholz zu schneiden und zu testen. Als wir mit unseren Abmessungen und unserer Form zufrieden waren, begannen wir, dickeres Sperrholz zu verwenden, um das Gehäuse zu bauen. Wir benutzten eine Bandsäge, um das dickere Sperrholz zu durchschneiden, und eine Dekupiersäge, um die dünneren zu durchschneiden. Danach haben wir Holzleim verwendet, um sie zusammenzukleben.

Für die Rückseite des Sperrholzes wollten wir leicht auf die Elektronik im Inneren zugreifen, daher haben wir es zu einem einrastenden Stück gemacht, das Sie jederzeit leicht entfernen können.

Um den Knopf zu befestigen, haben wir zuerst einen Kreis in der Größe des Mikroschalterdurchmessers des Knopfes (der untere lange Teil des Knopfes) gezeichnet. Wir haben dann ein Loch in der Nähe der Kante gebohrt und mit der Dekupiersäge einen Kreis durchgesägt. Dann haben wir den Knopf platziert und eingeschraubt.

Wir schneiden auch ein dünnes Stück Sperrholz als Basis unserer LED-Matrix nach den zuvor berechneten Größen.

Hinweis: Ich entschuldige mich für die fehlende Schritt-für-Schritt-Anleitung. Wir haben die Schritte nicht vollständig dokumentiert und als wir erkannten, dass wir die Schritte dokumentieren müssen, war das Gehäuse bereits fertig. Das Diagramm ist auch nicht die endgültigen Abmessungen.

Schritt 4: Erstellen der LED-Matrix

Herstellung der LED-Matrix
Herstellung der LED-Matrix
Herstellung der LED-Matrix
Herstellung der LED-Matrix

Mit dem dünnen Stück, das wir zuvor ausgeschnitten haben, markieren wir zunächst die Position jeder LED, indem wir ein Quadrat basierend auf unserer Schaumstruktur zeichnen und ein Kreuz in die Mitte des Quadrats als die Stelle zeichnen, an der wir die LED kleben sollen. Dann bohren wir auch 3 kleine Löcher auf jeder Seite der LED, damit die Drähte durchkommen und löten sie an jede LED.

Wir verketten jede LED-Reihe mit ihren Data In- und Data Out-Pins und löten jeden GND und VCC an einen gemeinsamen Draht. Der führende Data In generiert die Lichtmuster für jede Reihe und wir haben sie mit der Pinbelegung des Mikrocontrollers / FPGAs verbunden. Sie können auch den letzten Data Out einer Reihe mit dem führenden Data In einer anderen Reihe verlöten. Die Funktionsweise der Ws2812b-LED besteht darin, dass jede LED einen IC enthält, der die erforderlichen Daten vom Draht übernimmt und den Rest in der Kette weiterleitet. Wir basierten unsere LED auf einem anderen fantastischen Instructables (Tatsächlich haben wir es genau kopiert! xD)

Auch hier möchten wir auf die Bedeutung der Verwendung weicher Drähte hinweisen. Wenn Sie starre, harte Drähte für den führenden Data In-Pin verwenden, kann jedes Mal, wenn Sie an dem Draht ziehen, die Kupferpolsterung Ihres Ws2812b herausgezogen werden, wodurch es zerstört wird. In diesem Projekt haben wir, bevor wir auf weiche Drähte umgestiegen sind, insgesamt 40 LEDs zerstört, was 1/3 der für unser Projekt benötigten LEDs entspricht.

Instructable:

Schritt 5: Schreiben der Spielcodes und Debuggen der Hardware

Schreiben der Spielcodes und Debuggen von Hardware
Schreiben der Spielcodes und Debuggen von Hardware
Schreiben der Spielcodes und Debuggen von Hardware
Schreiben der Spielcodes und Debuggen von Hardware
Schreiben der Spielcodes und Debuggen von Hardware
Schreiben der Spielcodes und Debuggen von Hardware

Mojo läuft auf Lucid HDL, was nicht die beliebteste Sprache auf dem Markt ist. Wir können in Lucid keine Ws2812b-LED-Bibliotheken finden, daher haben wir auf das Schreiben unserer eigenen Bibliothek zurückgegriffen, was eine sehr interessante Erfahrung ist. Dazu haben wir zuerst das Signal analysiert, das mit der FastLED-Bibliothek von Arduino ausgegeben wird, und Codes geschrieben, um dies zu replizieren. Hier ist ein Trick zum Hardware-Debugging. Das Oszilloskop ist sehr, sehr nützlich, um Signale zu analysieren, sei es beim Debuggen Ihres eigenen Signals, bei dem Sie sich nicht sicher sind, oder beim Überprüfen und Kopieren anderer Signale.

Nachdem wir die Bibliothek für den Ws2812b geschrieben haben, gehen wir dann zum Code für das Spiel über, wir haben die Bit-Shift-Funktionen verwendet, um jeden Block nach links und rechts zu verschieben und die Quadrate jeder Reihe bitweise UND zu UND zur vorherigen Reihe zu verwenden. Sie können auch daran denken, dies in Arduino zu implementieren, was nicht so schwer sein sollte. Wir haben sogar Spielbildschirme zum Spaß programmiert!

Unser Spiel hatte 2 Level, nämlich das sichtbare Stapelspiel (Grün) und das zweite Level unsichtbares Stapelspiel (Blau).

Selbst nachdem wir einen funktionierenden Code und eine funktionierende LED-Matrix hatten, haben wir manchmal immer noch Probleme wie Lichter, die flackern oder aufleuchten, wenn sie nicht aufleuchten. Das Problem liegt normalerweise an einer unsachgemäßen Erdung, einem Spannungsversorgungspegel oder einer Störung. Hier benötigen Sie weitere Hardware-Debugging-Tools wie ein variables Netzteil, um zu überprüfen, ob die Stromversorgung des Mojo/Arduino ausreichend oder zu hoch ist. Meiner Erfahrung nach hat der Ws2812b einen ziemlich breiten Arbeitsspannungsbereich von 2,8 V - 5 V. Hier habe ich ein Video, das zeigt, wie die Lichter verrückt werden, nachdem ich die Leistung erhöht habe.

Eine weitere Überprüfung ergab jedoch, dass wir einige falsche Lötmittel hatten, nachdem wir sie erneut gelötet hatten, war unser Problem gelöst. Es könnte auch ein Problem mit Interferenzen oder Übersprechen geben, aber glücklicherweise waren wir nie mit einem davon konfrontiert.

Github-Codes:

Arduino Bitwise Shift:

Arduino Bitwise UND:

Schritt 6: Alles zusammenfügen

Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen

Sie haben das Gehäuse und die LED-Matrix. Jetzt ist es an der Zeit, alles zusammenzustellen. Zuerst platzieren wir den Schaumstoff auf der Vorderseite und die LED-Matrix dahinter und justieren die Position. Da Schaum eine sehr hohe Reibung hat, wurde er nur reibungsmontiert, während die LED-Matrix heiß verklebt ist. Danach platzierten wir den Bildschirm vor dem Gitter. Wir haben dann den Pin jeder Reihe an den Mikrocontroller angeschlossen und angefangen zu spielen!:D

Eine Sache, die ich an diesem Projekt mag, ist seine Flexibilität. Sie können den Mikrocontroller jederzeit neu programmieren, um Teil eines anderen Spiels zu sein und etwas wie das Erstellen von Animationen oder ein Reaktionsspiel ausprobieren. Ich hoffe, Sie genießen es, dies zu machen, und lernen etwas, um dies zu machen. GgEz!

Empfohlen: