Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Ü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 23:14] pixtxa |
||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
Kontakt: [[user: | Kontakt: [[user: | ||
- | Projektstatus: | + | Projektstatus: |
[[regeln: | [[regeln: | ||
+ | Direktweg zur [[projekte: | ||
===== Vorgeschichte ===== | ===== Vorgeschichte ===== | ||
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 20: | ||
===== 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 29: | ||
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 49: | ||
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 61: | ||
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 73: | ||
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 93: | ||
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 123: | ||
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 133: | Zeile 138: | ||
ICs lassen sich mit den 1,27 mm Rastermaß immerhin halbwegs gut an Flachband-Leitung mit ebenfalls 1,27 mm Rastermaß löten. | ICs lassen sich mit den 1,27 mm Rastermaß immerhin halbwegs gut an Flachband-Leitung mit ebenfalls 1,27 mm Rastermaß löten. | ||
Aber das Pinout macht es nicht so einfach verwendbar und dass da was abreißt, bevor der Kabelkanal zu ist, ist sehr wahrscheinlich. | Aber das Pinout macht es nicht so einfach verwendbar und dass da was abreißt, bevor der Kabelkanal zu ist, ist sehr wahrscheinlich. | ||
- | Es kündigte sich eine Sammelbestellung | + | Bei der [[https:// |
==== PCB-Design ==== | ==== PCB-Design ==== | ||
- | {{ : | + | {{ : |
Die Anforderungen waren schnell klar: | Die Anforderungen waren schnell klar: | ||
- | * Alle 4 cm einen Abgriff für eine LED-Leuchte | + | |
- | * COM sowie Rot, Grün, Blau und Sound (= 1 [[https:// | + | * COM sowie Rot, Grün, Blau und Sound (= 1 [[https:// |
- | * Im Falle einer Flex-Leiterplatte können die Leitungen zum an die Beacons Löten direkt dran sein | + | * Im Falle einer Flex-Leiterplatte können die Leitungen zum an die Beacons Löten direkt dran sein |
- | * Als Backup/ | + | * Als Backup/ |
- | * Zusätzlich ausgeführt als 2,54 mm THT, falls SMD-Löten von Flachbandleitungen doch zu kompliziert ist | + | * Zusätzlich ausgeführt als 2,54 mm THT, falls SMD-Löten von Flachbandleitungen doch zu kompliziert ist |
- | * Aufteilung auf mehrere, aneinanderreihbare Leiterplatten | + | * Aufteilung auf mehrere, aneinanderreihbare Leiterplatten |
- | * Sonst werden Leiterplatte und Versand teuer, das Handling wird schwierig und JLC-PCB liefert eh erst ab 5 Stück | + | * Sonst werden Leiterplatte und Versand teuer, das Handling wird schwierig und JLC-PCB liefert eh erst ab 5 Stück |
- | * Neopixel-LEDs mit auf der Leiterplatte | + | * Neopixel-LEDs mit auf der Leiterplatte |
- | * Der Space hat sie rollenweise bekommen | + | * Der Space hat sie rollenweise bekommen |
- | * Dienen als Signal-Repeater, | + | * Dienen als Signal-Repeater, |
- | * Können ggf. als Debug-Output verwendet werden | + | * Können ggf. als Debug-Output verwendet werden |
- | * Fancy Bau-Bilder | + | * Fancy Bau-Bilder |
- | * Auch für andere Projekte geeignet | + | * Auch für andere Projekte geeignet |
- | * Ein IC je Leiterplatte | + | * Ein IC je Leiterplatte |
- | * Kompaktes Haupt-Design | + | * Kompaktes Haupt-Design |
- | * Abgriff mit allen acht Ausgängen | + | * Abgriff mit allen acht Ausgängen |
- | * Alle 8 cm möglich, für die (WERMA-)Produkte mit 70 mm Durchmesser | + | * Alle 8 cm möglich, für die (WERMA-)Produkte mit 70 mm Durchmesser |
- | * 2. Neopixel in dem Fall nicht nötig; Datenleitung überbrückbar | + | * 2. Neopixel in dem Fall nicht nötig; Datenleitung überbrückbar |
- | * Rest abschneidbar um Platz zu sparen | + | * Rest abschneidbar um Platz zu sparen |
- | * Pull-Up/ | + | * Pull-Up/ |
- | * GND-Ausgang für Dauer-An um z. B. [[https:// | + | * GND-Ausgang für Dauer-An um z. B. [[https:// |
- | * Einfach und universell einsetzbar | + | * Einfach und universell einsetzbar |
- | * Pfeile für Richtung des Datenflusses | + | * Pfeile für Richtung des Datenflusses |
- | * Beschriftung aller Anschlüsse | + | * Beschriftung aller Anschlüsse |
- | * Bei THT doppelseitig | + | * Bei THT doppelseitig |
- | * Beschriftung der wichtigsten IC-Merkmale | + | * Beschriftung der wichtigsten IC-Merkmale |
- | * Open Source Hardware | + | * Open Source Hardware |
- | * Beschränkung auf Footprints und andere Quelldaten mit passenden Lizenzen | + | * Beschränkung auf Footprints und andere Quelldaten mit passenden Lizenzen |
- | * Notfalls selbst erstellen | + | * Notfalls selbst erstellen |
- | * OSH-Logo und [[https:// | + | * OSH-Logo und [[https:// |
Ein paar Abende/ | Ein paar Abende/ | ||
Ein paar Tage später konnten die Leiterplatten bestückt werden. | Ein paar Tage später konnten die Leiterplatten bestückt werden. | ||
Zeile 177: | Zeile 182: | ||
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 195: | ||
Eine kleine Test-Firmware wurde auch geschrieben. | Eine kleine Test-Firmware wurde auch geschrieben. | ||
- | {{: | + | {{: |
- | {{: | + | {{: |
- | {{: | + | {{: |
+ | |||
+ | [[https:// | ||
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. |