Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung | Nächste Überarbeitung Beide Seiten, nächste Überarbeitung | ||
projekte:2023:1d-pong [2023/12/02 03:32] pixtxa |
projekte:2023:1d-pong [2023/12/02 05:07] pixtxa Projektdokumentation |
||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
Kontakt: [[user: | Kontakt: [[user: | ||
- | Projektstatus: | + | Projektstatus: |
[[regeln: | [[regeln: | ||
Zeile 10: | Zeile 10: | ||
Ich bekam 44x [[https:// | Ich bekam 44x [[https:// | ||
- | {{: | + | {{: |
- | {{: | + | {{: |
- | {{: | + | {{: |
Schnell war klar, dass sie aufgereiht irgendwie toll aussehen und es ein Spiel werden soll. | Schnell war klar, dass sie aufgereiht irgendwie toll aussehen und es ein Spiel werden soll. | ||
Zeile 19: | Zeile 19: | ||
===== Umsetzung ===== | ===== Umsetzung ===== | ||
==== Planung ==== | ==== Planung ==== | ||
+ | Die LED-Leuchten können nicht nur als Anzeige genutzt werden, sondern haben einen eingebauten Summer. | ||
+ | Dieser kann mit kurzen Impulsen versorgt werden, um genau dort zu piepen, wo gerade etwas passiert. | ||
+ | Ein eindimensionales Spiel bedeutet schließlich nicht, dass es mit nur Mono-Tonausgabe auskommen muss. | ||
+ | |||
Als Tasten wurden [[https:// | Als Tasten wurden [[https:// | ||
Zeile 24: | Zeile 28: | ||
Die Wahl fiel auf einen Pixelabstand von 40 mm (≈ 0.635 dpi) und einen Kabelkanal mit 60 mm x 40 mm, welcher auf 1845 mm gekürzt wird. | Die Wahl fiel auf einen Pixelabstand von 40 mm (≈ 0.635 dpi) und einen Kabelkanal mit 60 mm x 40 mm, welcher auf 1845 mm gekürzt wird. | ||
- | {{: | + | {{: |
==== Montagelöcher ==== | ==== Montagelöcher ==== | ||
- | {{: | + | {{: |
- | {{: | + | {{: |
Die LED-Leuchten haben ein Gehäuse mit abgeflachten Seiten, welches sich im passenden Loch nicht verdrehen lässt. | Die LED-Leuchten haben ein Gehäuse mit abgeflachten Seiten, welches sich im passenden Loch nicht verdrehen lässt. | ||
Zeile 44: | Zeile 48: | ||
Aber das 3D-Modell der Planung konnte schnell ein CAD-Modell einer Schablone ausgeben, welches frisch geliced an den [[ausstattung: | Aber das 3D-Modell der Planung konnte schnell ein CAD-Modell einer Schablone ausgeben, welches frisch geliced an den [[ausstattung: | ||
- | {{: | + | {{: |
=== Side-Quest: Endkappen === | === Side-Quest: Endkappen === | ||
Zeile 56: | Zeile 60: | ||
3D Druck entnommen, neuen Druck gestartet und die Schablone klemmte perfekt im Deckel des Kabel-Kanals. | 3D Druck entnommen, neuen Druck gestartet und die Schablone klemmte perfekt im Deckel des Kabel-Kanals. | ||
- | {{: | + | {{: |
- | {{: | + | {{: |
Die Schablone lässt sich also nur mit etwas Kraft verschieben und auch nur in einer Richtung, während die anderen beiden Richtungen fest sind. | Die Schablone lässt sich also nur mit etwas Kraft verschieben und auch nur in einer Richtung, während die anderen beiden Richtungen fest sind. | ||
Die Löcher wurden entsprechend leicht größer designt, sodass man sie mit einem Bündigfräser am [[ausstattung: | Die Löcher wurden entsprechend leicht größer designt, sodass man sie mit einem Bündigfräser am [[ausstattung: | ||
- | {{: | + | {{: |
Bis alle Löcher gemacht waren, war die erste Endkappe gedruckt. | Bis alle Löcher gemacht waren, war die erste Endkappe gedruckt. | ||
Zeile 68: | Zeile 72: | ||
Durch Fertigungstoleranzen wurde der Kabelkanal ca. 0,1 % (≈ 2 mm) länger als geplant, zusammen mit den 1,5 mm starken Endkappen ergibt sich somit eine Länge von 1850 mm. | Durch Fertigungstoleranzen wurde der Kabelkanal ca. 0,1 % (≈ 2 mm) länger als geplant, zusammen mit den 1,5 mm starken Endkappen ergibt sich somit eine Länge von 1850 mm. | ||
- | {{: | + | {{: |
- | {{: | + | {{: |
==== Arcade Buttons ==== | ==== Arcade Buttons ==== | ||
Zeile 88: | Zeile 92: | ||
Die 3D-Modelle sind hier zu finden: [[https:// | Die 3D-Modelle sind hier zu finden: [[https:// | ||
- | {{: | + | {{: |
Die Ansteuerung für den Test erfolgte erstmal nur per [[https:// | Die Ansteuerung für den Test erfolgte erstmal nur per [[https:// | ||
Ein paar Zeilen für die MicroPython-Kommandozeile reichen hierfür. | Ein paar Zeilen für die MicroPython-Kommandozeile reichen hierfür. | ||
- | {{ : | + | {{ : |
<file python> | <file python> | ||
import color, time, ws2812, gpio | import color, time, ws2812, gpio | ||
Zeile 118: | Zeile 122: | ||
Matrix-Schaltung geht nicht wirklich, da sonst die Helligkeit abnimmt, was ich nicht möchte. | Matrix-Schaltung geht nicht wirklich, da sonst die Helligkeit abnimmt, was ich nicht möchte. | ||
- | {{: | + | {{: |
Die Versorgung erfolgt über einen M12-Stecker, | Die Versorgung erfolgt über einen M12-Stecker, | ||
Zeile 136: | Zeile 140: | ||
==== PCB-Design ==== | ==== PCB-Design ==== | ||
- | {{ : | + | {{ : |
Die Anforderungen waren schnell klar: | Die Anforderungen waren schnell klar: | ||
* Alle 4 cm einen Abgriff für eine LED-Leuchte | * Alle 4 cm einen Abgriff für eine LED-Leuchte | ||
Zeile 177: | Zeile 181: | ||
Da im Space Zweifel aufkamen, bestätigte ein Test, dass das gut genug hält. | Da im Space Zweifel aufkamen, bestätigte ein Test, dass das gut genug hält. | ||
- | {{: | + | {{: |
Die Leiterplatten wurden Nutzenweise bestückt, geteilt, mit Jumper-Leitungen versehen und aneinandergereiht. | Die Leiterplatten wurden Nutzenweise bestückt, geteilt, mit Jumper-Leitungen versehen und aneinandergereiht. | ||
Ein Controller mit [[https:// | Ein Controller mit [[https:// | ||
- | {{: | + | {{: |
- | {{: | + | {{: |
Anschließend wurden die LED-Leuchten verbunden und der Aufbau testweise in den Kabelkanal gepackt. | Anschließend wurden die LED-Leuchten verbunden und der Aufbau testweise in den Kabelkanal gepackt. | ||
Zeile 190: | Zeile 194: | ||
Eine kleine Test-Firmware wurde auch geschrieben. | Eine kleine Test-Firmware wurde auch geschrieben. | ||
- | {{: | + | {{: |
- | {{: | + | {{: |
- | {{: | + | {{: |
Der Controller bekam noch eine kleine Adapter-Leiterplatte und anschließend konnte der Aufbau komplett geschlossen werden. | Der Controller bekam noch eine kleine Adapter-Leiterplatte und anschließend konnte der Aufbau komplett geschlossen werden. | ||
+ | Durch die Endkappen und den Kabelkanal wurden kleine Löcher gemacht und Einzelpins abgewinkelter Stiftleisten hindurch gesteckt, welche vom Deckel in Position gehalten werden. | ||
+ | Den Aufbau zu zu bekommen, ohne den Controller einzuklemmen, | ||
- | {{: | + | {{: |
- | {{: | + | {{: |
- | Zu einem späteren | + | Zu einem späteren |
==== Firmware ==== | ==== Firmware ==== | ||
- | Erstmal konnte vieles von [[https:// | + | Erstmal konnte vieles von [[https:// |
+ | |||
+ | Im Original-Code wird einfach nur ein zufälliger Start-Spieler gewählt, eine Idle-Animation existierte nicht. | ||
+ | In meiner Version fängt die Seite an, welche Idle-Animation unterbricht – außer der Knopf der Gegenseite wird noch innerhalb der Transition zwischen Idle-Animation und Spiel-Start betätigt. | ||
+ | |||
+ | Vorzeitig verlassene Spiele können abgebrochen werden, indem man beide Tasten gedrückt hält, bis alles weiß leuchtet. | ||
+ | Wird keine Taste gedrückt, erscheint nach einigen Sekunden die Idle-Animation. | ||
+ | Auch diese hat einen Zeitpunkt, bei dem alles weiß leuchtet. | ||
+ | Lässt man sie bis dort hin laufen, wird ein evtl. begonnenes Spiel ebenfalls beendet. | ||
+ | |||
+ | Zudem gibt es eine (deaktivierbare) Soundausgabe und eine Möglichkeit, | ||
+ | |||
+ | Da das Schließen des Kabelkanals etwas kompliziert ist, wurde die Möglichkeit für FOTA-Updates implementiert. | ||
+ | Die LEDs zeigen in dem Fall den Fortschrittsbalken der Übertragung dar. | ||
+ | |||
+ | Geplant ist noch eine einfache Weboberfläche. | ||
+ | Darüber sollen neben Soundausgabe und Rundenzahl auch die verwendeten Farben konfigurierbar sein. | ||
+ | Statistiken wie Anzahl gespielter/ | ||
+ | |||
+ | Der Code ist hier veröffentlicht: | ||
+ | |||
+ | ==== Ergebnis ==== | ||
+ | {{ : | ||
+ | |||
+ | ===== Spielanleitung ===== | ||
+ | * Taste drücken zum Start/ | ||
+ | * Zurückspielen durch Tastendruck während sich der Ball im grünen Schläger-Bereich befindet | ||
+ | * Verfehlen = Punkt für Gegenseite | ||
+ | * Punktanzeige in Spielfeldmitte | ||
+ | * Spiel gewinnen: Als erstes die zu erreichenden Punkte erzielen | ||
+ | * Default-Wert nach Powercycle: 10 Punkte | ||
+ | * Konfigurationsbereich: | ||
+ | * Hinweis: Boost am Schläger-Ende verfügbar | ||
+ | * Reset: Tasten halten/ | ||
==== Installationsanleitung ==== | ==== Installationsanleitung ==== | ||
- | Das Spiel benötigt eine Grundfläche von 185 cm x 6 cm; etwas mehr Platz ist empfehlenswert, | + | Das Spiel benötigt eine Grundfläche von 185 cm x 6 cm; etwas mehr Platz ist empfehlenswert, |
+ | Die meisten Tische oder Biertische bieten sich gut als Unterlage an. | ||
+ | Die Kombination aus Brüstungsgeländer und Kabelbinder kann auch gut funktionieren. | ||
+ | Das Spiel ist in jeder Ausrichtung betreibbar. | ||
- | Auch wenn die Beacons IP69k bieten, gilt das leider nicht für die verwendeten Arcade-Buttons, | + | Auch wenn die Werma-Beacons IP69k bieten, gilt das leider nicht für die verwendeten Arcade-Buttons, |
+ | Je nach Wetterlage sollte also ein überdachter Bereich als Aufstellort verwendet werden. | ||
Die Spannungsversorgung von 24V/1A erfolgt über eine Hohlbuchse (innen Plus); ein passendes Steckernetzteil mit Eurostecker liegt bei. | Die Spannungsversorgung von 24V/1A erfolgt über eine Hohlbuchse (innen Plus); ein passendes Steckernetzteil mit Eurostecker liegt bei. | ||
- | Zur Inbetriebnahme muss lediglich die Spannungsversorgung hergestellt werden. Zum Ausschalten kann sie jederzeit getrennt werden; ein herunterfahren ist nicht erforderlich. | + | Zur Inbetriebnahme muss lediglich die Spannungsversorgung hergestellt werden. |
+ | Zum Ausschalten kann sie jederzeit getrennt werden; ein herunterfahren ist nicht erforderlich. | ||
+ | |||
+ | Zur Konfiguration können beide Tasten gedrückt gehalten werden. | ||
+ | Erst wird alles weiß und das aktuelle Spiel beendet; etwas verzögert erscheint die Konfigurationsanzeige. | ||
+ | Dabei zählt der Punktestand für beide Teams von 1 beginnend an alle 300 ms hoch. | ||
+ | Beim Überlauf wird die Sound-Ausgabe umgeschaltet (aus/an) und es wird erneut hochgezählt. | ||
+ | Beim loslassen wird die Konfiguration übernommen. | ||
+ | Hält man also die Tasten, bis beide Teams 5 Punkte haben und lässt dann los, laufen fortan die Spiele so lange, bis eine Seite 5 Punkte erzielt. | ||
+ | Beim Powercycle wird wieder die Standard-Konfiguration geladen: Mit Sound-Ausgabe bis 10 Punkte. | ||
- | Zur Konfiguration können beide Tasten gedrückt gehalten werden. Erst wird alles weiß und das aktuelle Spiel beendet; etwas verzögert erscheint die Konfigurationsanzeige. Dabei zählt | + | Vom Öffnen des Kabelkanals ist abzusehen, da sich das Controllerboard beim Schließen des Kabelkanals gerne verklemmt. |
+ | Auf der Unterseite sind Löcher, durch die man rein schauen kann. |