Projekt 47c: LED-Tetris: Unterschied zwischen den Versionen
(18 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
[[Kategorie:ProjekteET MTR BSE WS2018]] | [[Kategorie:ProjekteET MTR BSE WS2018]] | ||
'''Autoren''':[https://campusapp01.hshl.de/user/profile.php?id=6720 Jorex Lado], [https://campusapp01.hshl.de/user/profile.php?id=53658 NJeutchou Lerticia] <br/> | '''Autoren''':[https://campusapp01.hshl.de/user/profile.php?id=6720 Jorex Lado], [https://campusapp01.hshl.de/user/profile.php?id=53658 NJeutchou Lerticia] <br/> | ||
'''Betreuer''': Daniel Klein [[Datei: | '''Betreuer''': Daniel Klein [[Datei:LEDTetris.jpg|300px|thumb|right|Abb 1: LED-Tetris]] | ||
Zeile 27: | Zeile 27: | ||
=== Projektplannung === | === Projektplannung === | ||
In der Planungsphase erkundigt man sich nach früheren Projekten, | In der Planungsphase erkundigt man sich nach früheren Projekten, | ||
die ähnliche sind. Auf den Videoplatteform You-Tube sieht man [[Datei:Projektplannung.png|600px|thumb|right| Abb 2: Plannung]] | die ähnliche sind. Auf den Videoplatteform You-Tube sieht man [[Datei:Projektplannung.1.png|600px|thumb|right| Abb 2: Plannung]] | ||
wie andere Menschen das Tetris-Spiel mit LEDs realisiert haben. | wie andere Menschen das Tetris-Spiel mit LEDs realisiert haben. | ||
Dies ist die Grundlage für weitere Vorbereitungsarbeiten. | Dies ist die Grundlage für weitere Vorbereitungsarbeiten. | ||
Zeile 42: | Zeile 42: | ||
* Wiederstand 220 Ohm: 1 Stück, | * Wiederstand 220 Ohm: 1 Stück, | ||
* Doppelseitige Klebeband (2 mm²), | * Doppelseitige Klebeband (2 mm²), | ||
* IKEA-Rahmen Ribba (325* | * IKEA-Rahmen Ribba (325*233*23 mm) | ||
* 4 Taster | * 4 Taster | ||
* Kupfer Draht: 600 mm | * Kupfer Draht: 600 mm | ||
* Auflistung der benötigten Materiel in [https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/47c_LED-Tetris/ Link auf SVN-Projektordner] | |||
== '''Durchführung''' == | == '''Durchführung''' == | ||
Zeile 52: | Zeile 53: | ||
---- | ---- | ||
[[Datei:Geklebte LED-Streifen.jpeg|200px|thumb|right| Abb 3: Geklebte LED-Streifen]] | [[Datei:Geklebte LED-Streifen.jpeg|200px|thumb|right| Abb 3: Geklebte LED-Streifen]] | ||
Man schneidet erst die LED-Streifen in passende Längen zu, als display größe haben wir 10 x 15 Pixeln, 10 Streifen | |||
Das Zuschneiden von 15 Streifen | [[Datei:Rückseite des Plattes.jpeg|200png|thumb|right| Abb 4: Rückseite des Plattes]] | ||
Man schneidet erst die LED-Streifen in passende Längen zu, als display größe haben wir 10 x 15 Pixeln, 10 Streifen mit je 15 LEDs zuzuschneiden. | |||
Das Zuschneiden von 15 Streifen mit je 10 LEDs hat zur Folge, dass der Lötaufwand steigt. In beiden Varianten kommt es zu keinem Verschnitt bei den Streifen, da eine LED-Rolle mit 1 m Länge aus 60 LEDs besteht. | |||
Wenn man den Zuschnitt erledigt hat, klebt man die zugeschnittenen selbstklebenden LED-Streifen auf eine der MDF-Platten wie es auf die Abb.3 zu sehen ist, die später die Rückplatte der Spielstation wird, beim drankleben der Streifen ist der richtige Abstand der Streifen zu beachten. Die LEDs beim WS2812B haben einen Abstand von 16,7mm zueinander, darum sollten auch die Streifen parallel und im gleichen Abstand geklebt werden, damit die spätere Bildschirmwiedergabe nicht verzerrt wirkt. | Wenn man den Zuschnitt erledigt hat, klebt man die zugeschnittenen selbstklebenden LED-Streifen auf eine der MDF-Platten wie es auf die Abb.3 zu sehen ist, die später die Rückplatte der Spielstation wird, beim drankleben der Streifen ist der richtige Abstand der Streifen zu beachten. Die LEDs beim WS2812B haben einen Abstand von 16,7mm zueinander, darum sollten auch die Streifen parallel und im gleichen Abstand geklebt werden, damit die spätere Bildschirmwiedergabe nicht verzerrt wirkt. | ||
Wenn die LED-Streifen gleichmäßig auf der Rückplatte geklebt sind, bohrt man am Anfang und am Ende jedes Streifens je 2 Löcher | Wenn die LED-Streifen gleichmäßig auf der Rückplatte geklebt sind, bohrt man am Anfang und am Ende jedes Streifens je 2 Löcher mit 5mm Durchmesser durch die Rückplatte, Die Löcher benötigt man für die Spannungsversorgung (5V) und die Datenleitung (DIN) auf einer Seite, sowie Masse (GND) und Datenleitung (DOUT) auf der anderen Seite. | ||
Die Leitungen werden an die Streifen gelötet und durch die Löcher zur Rückseite der Platte geführt. Die 10 Spannungsversorgungsleitungen auf der einen, sowie die 10 Masseleitungen auf der anderen Seite verbindet man je miteinander, um eine einzelne Leitung für die Spannungsversorgung und eine für die Masse zu haben. Die Datenleitungen werden dagegen vom DOUT eines Streifens zum DIN des nächsten Streifens bis zum letzten Streifen durchgeschliffen. Der DOUT Anschluss des letzten Streifens bleibt frei. | Die Leitungen werden an die Streifen gelötet und durch die Löcher zur Rückseite der Platte geführt. Die 10 Spannungsversorgungsleitungen auf der einen, sowie die 10 Masseleitungen auf der anderen Seite verbindet man je miteinander, um eine einzelne Leitung für die Spannungsversorgung und eine für die Masse zu haben. Die Datenleitungen werden dagegen vom DOUT eines Streifens zum DIN des nächsten Streifens bis zum letzten Streifen durchgeschliffen. Der DOUT Anschluss des letzten Streifens bleibt frei. | ||
Zeile 63: | Zeile 66: | ||
==== Blendwerk ==== | ==== Blendwerk ==== | ||
---- | ---- | ||
[[Datei:Gebohrte Blende.jpeg|200px|thumb|right| Abb | [[Datei:Gebohrte Blende.jpeg|200px|thumb|right| Abb 5:Gebohrte Blende]] | ||
Die zweite MDF-Platte wie es auf die Abb.4 zu sehen ist, wird später als Blendwerk für die LEDs dienen und wird auf die andere Platte draufgelegt. | Die zweite MDF-Platte wie es auf die Abb.4 zu sehen ist, wird später als Blendwerk für die LEDs dienen und wird auf die andere Platte draufgelegt. | ||
Zeile 76: | Zeile 79: | ||
---- | ---- | ||
Auf der Rückseite des Plattes wird der Arduino Uno gelötet, sowie die zusammengeführten Leitungen 5V und GND. Es ist darauf zu achten, dass auf der Rückseite der Platine unter dem Arduino Uno die Leiterbahnen unterbrochen werden müssen, damit die jeweils gegenüberliegenden Pins des Arduino nicht kurzgeschlossen sind. Die Unterbrechungen dreht man am Besten händisch mit einem 3 mm Metallbohrer. | Auf der Rückseite des Plattes wird der Arduino Uno gelötet, sowie die zusammengeführten Leitungen 5V und GND. Es ist darauf zu achten, dass auf der Rückseite der Platine unter dem Arduino Uno die Leiterbahnen unterbrochen werden müssen, damit die jeweils gegenüberliegenden Pins des Arduino nicht kurzgeschlossen sind. Die Unterbrechungen dreht man am Besten händisch mit einem 3 mm Metallbohrer. | ||
Die Pinbelegung des Arduino ist bis auf einige Stellen frei wählbar. Die 5V-Leitung der LEDs wird mit dem 5V des Arduinos verbunden. | Die Pinbelegung des Arduino ist bis auf einige Stellen frei wählbar. Die 5V-Leitung der LEDs wird mit dem 5V des Arduinos verbunden. | ||
Auf einer weiteren Streifenrasterplatine werden Drucktaster gelötet. Dabei ist auf eine ergonomische Platzierung der einzelnen Taster zu achten, um das spätere Spielerlebnis angenehmer zu gestalten. Benötigt werden mindestens 4 Taster für das Spiel Tetris. Die Links-, Rechts-, Runter- und Dreh-Taste. | Auf einer weiteren Streifenrasterplatine werden Drucktaster gelötet. Dabei ist auf eine ergonomische Platzierung der einzelnen Taster zu achten, um das spätere Spielerlebnis angenehmer zu gestalten. Benötigt werden mindestens 4 Taster für das Spiel Tetris. Die Links-, Rechts-, Runter- und Dreh-Taste. | ||
Wir verbinden die Taster mit dem Kupfer Draht Und Digitalports D08, D09, D10, D11, sowie. Die Pins 11 bis 14 sind willkürlich gewählt worden. Zum Schutz der LEDs wird zwischen dem Arduino und dem DIN des ersten LED-Streifens ein 220 Ohm Widerstand in Reihe gelötet. Ohne den Widerstand würde bei versehentlicher Unterbrechung der Masseleitung ein großer Strom durch die Datenleitung zurückfließen und die erste LED in der Reihe zerstören. | |||
Optional und für mehr Spielgenuss kann man einen magnetischen Summer an einen der freien Digitalpins löten, der das Tetris-Spiel durch Tonwiedergabe begleitet. | Optional und für mehr Spielgenuss kann man einen magnetischen Summer an einen der freien Digitalpins löten, der das Tetris-Spiel durch Tonwiedergabe begleitet. | ||
=== Leiterplatten Entwurf === | === Leiterplatten Entwurf === | ||
[[Datei:Fritzing Projekt.png|300px|mini| Abb. | [[Datei:Fritzing Projekt.png|300px|mini| Abb.6: Fritzing Projekt]] | ||
Der elektrische Schaltplan haben wir mit Hilfe von einem Freeware-Software (Fritzing; http://fritzing.org/home/) montiert. | Der elektrische Schaltplan haben wir mit Hilfe von einem Freeware-Software (Fritzing; http://fritzing.org/home/) montiert. | ||
Zeile 92: | Zeile 98: | ||
Die Softwrae wurde mit Arduino IDE entwickelt. Die LED-Streifen wurden mit Hilfe der Bibliotheken "FastLED" angesteuert. | Die Softwrae wurde mit Arduino IDE entwickelt. Die LED-Streifen wurden mit Hilfe der Bibliotheken "FastLED" angesteuert. | ||
Die Quellcodes wurde im [https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/47c_LED-Tetris/ SVN-Projektordner] hochgeladen. | Die Quellcodes wurde im [https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/47c_LED-Tetris/ SVN-Projektordner] hochgeladen. | ||
Das Tetris-Spiel wird über die 4 Taster wie folgt gesteuert: | |||
Während des spiels: | |||
{| border="1" | |||
|Steuerung | |||
|Funktion | |||
|- | |||
|Links-Taste | |||
|Stein nach links bewegen | |||
|- | |||
|Rechts-Taste | |||
|Stein nach rechts bewegen | |||
|- | |||
|Drehen-Taste | |||
|Stein um 90° nach rechts drehen | |||
|- | |||
|Runter-Taste | |||
|Stein schnell nach unten bewegen | |||
|} | |||
== Zusammenfassung == | == Zusammenfassung == | ||
Zeile 100: | Zeile 125: | ||
== Lessons Learned == | == Lessons Learned == | ||
[[Datei:Plakat für die Messe.png|300px|thumb|right|Abb 7: Plakat für die Messe]] | |||
# Da wir für das Projekt zu zweit waren haben wir gelernt was Teamarbeit bedeutet. | # Da wir für das Projekt zu zweit waren haben wir gelernt was Teamarbeit bedeutet. | ||
Zeile 119: | Zeile 145: | ||
== YouTube Video == | == YouTube Video == | ||
https:// | https://youtu.be/jN-Ldf_auuI. | ||
== Weblinks == | == Weblinks == |
Aktuelle Version vom 18. Januar 2019, 00:56 Uhr
Autoren:Jorex Lado, NJeutchou Lerticia
Betreuer: Daniel Klein
→ zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)
Aufgabe
Setzen Sie ein Tetris-Spiel mit LED-Streifen und Arduino um (vgl. Abb 1). Ein Beispiel finden Sie im Artikel c‘t Make: 1/2015.
Erwartungen an die Projektlösung
- Lesen Sie den Artikel in c‘t hacks 1/2015 (S. 12ff)
- Planen Sie den Aufbau mit Nutzereingabe (z.B. Taster)
- Beschaffen Sie die Bauteile
- Realisierung des Aufbaus
- Programmieren Sie das Spiel
- Machen Sie ein spektakuläres Videos, welches die Funktion visualisiert.
- Test und wiss. Dokumentation
- Live Vorführung während der Abschlusspräsentation
Einleitung
In diesem Projekt geht es darum zu zeigen, wie man mit LED-Stripes ein individuelles Display herstellen kann und darauf eine Spielbare Version Klassikes "Tetris" zu laden. Ein Artikel aus der Zeitschrift „c't MAKE(1/2015)“ diente dabei als Vorlage.
Projekt
Projektplannung
In der Planungsphase erkundigt man sich nach früheren Projekten,
die ähnliche sind. Auf den Videoplatteform You-Tube sieht man
wie andere Menschen das Tetris-Spiel mit LEDs realisiert haben. Dies ist die Grundlage für weitere Vorbereitungsarbeiten.
Vorbereitung
Bevor man sich für die die Vorbereitung der Materialbeschaffung beschäftigt, muss man gucken was für Möglichkeiten es gibt: Material, Geld und Werkzeuge, dann Skizziert man ein Aufbau oder ein oder zeichne man eine Technische Zeichnung. am ende macht man eine Materialiste und bestellt bei Händler alles was man braucht, um Versandkosten zu sparen.
Materialbeschaffung
- 3 Meter RGB LED-Steifen WS2812B(60LEDs/Meter),
- Arduino Nano/Uno,
- Stromversorgung, 5V, 2A,
- MDF-Platten( 300*200*8 mm): 2 Stück,
- Kabel: 0,5 mm²(2 Meter),
- Wiederstand 220 Ohm: 1 Stück,
- Doppelseitige Klebeband (2 mm²),
- IKEA-Rahmen Ribba (325*233*23 mm)
- 4 Taster
- Kupfer Draht: 600 mm
- Auflistung der benötigten Materiel in Link auf SVN-Projektordner
Durchführung
In Folgende wird der Aufbau der Spielstation beschrieben.
Display
Man schneidet erst die LED-Streifen in passende Längen zu, als display größe haben wir 10 x 15 Pixeln, 10 Streifen mit je 15 LEDs zuzuschneiden. Das Zuschneiden von 15 Streifen mit je 10 LEDs hat zur Folge, dass der Lötaufwand steigt. In beiden Varianten kommt es zu keinem Verschnitt bei den Streifen, da eine LED-Rolle mit 1 m Länge aus 60 LEDs besteht.
Wenn man den Zuschnitt erledigt hat, klebt man die zugeschnittenen selbstklebenden LED-Streifen auf eine der MDF-Platten wie es auf die Abb.3 zu sehen ist, die später die Rückplatte der Spielstation wird, beim drankleben der Streifen ist der richtige Abstand der Streifen zu beachten. Die LEDs beim WS2812B haben einen Abstand von 16,7mm zueinander, darum sollten auch die Streifen parallel und im gleichen Abstand geklebt werden, damit die spätere Bildschirmwiedergabe nicht verzerrt wirkt.
Wenn die LED-Streifen gleichmäßig auf der Rückplatte geklebt sind, bohrt man am Anfang und am Ende jedes Streifens je 2 Löcher mit 5mm Durchmesser durch die Rückplatte, Die Löcher benötigt man für die Spannungsversorgung (5V) und die Datenleitung (DIN) auf einer Seite, sowie Masse (GND) und Datenleitung (DOUT) auf der anderen Seite.
Die Leitungen werden an die Streifen gelötet und durch die Löcher zur Rückseite der Platte geführt. Die 10 Spannungsversorgungsleitungen auf der einen, sowie die 10 Masseleitungen auf der anderen Seite verbindet man je miteinander, um eine einzelne Leitung für die Spannungsversorgung und eine für die Masse zu haben. Die Datenleitungen werden dagegen vom DOUT eines Streifens zum DIN des nächsten Streifens bis zum letzten Streifen durchgeschliffen. Der DOUT Anschluss des letzten Streifens bleibt frei.
Blendwerk
Die zweite MDF-Platte wie es auf die Abb.4 zu sehen ist, wird später als Blendwerk für die LEDs dienen und wird auf die andere Platte draufgelegt.
Doch vorher muss diese Platte bearbeitet werden. Dazu wird zunächst sorgfältig und präzise eine Matrix eingezeichnet, auf der man die Positionen aller Bohrlöcher für die LEDs sieht, danach werden mit einem dünnen Bohrer alle 150 Löcher vorgebohrt und mit einem Bohrer à 10 mm Durchmesser die Löcher vergrößert. Bei den Bohrarbeiten ist auf hohe Präzision zu achten, damit alle Bohrlöcher den gleichen Abstand zueinander haben.
Am ende werden alle 150 Bohrlöcher mit einem Senker auf einen Durchmesser von 15 mm auf der Oberkante der Platte entgratet. Kleine Unterschiede in den Bohrlochabständen des vorangegangenen Arbeitsschrittes können durch das Senken ausgeglichen werden, sodass man dennoch einen gleichmäßigen sichtbaren Pixelabstand hat.
Optional kann man jetzt auf einfachem herkömmlichen DinA4 Blatt oder einer Moosgummi eine Lochmaske ausdrucken, die auf das Blendwerk gelegt werden kann, der gedruckte schwarze Bereich um die Bohrlöcher maximiert den Kontrast, während der übrige weiße Teil möglichst viel Licht von den LEDs in Form von Kreisen à 15 mm durchlässt. Ohne Die Abdeckung des Blendwerkes mit Moosgummi oder Ähnlichem sind später die einzelnen SMD-LEDs sichtbar und können für den Spieler als unangenehm blendend wirken.
Arduino Uno Pinbelegung
Auf der Rückseite des Plattes wird der Arduino Uno gelötet, sowie die zusammengeführten Leitungen 5V und GND. Es ist darauf zu achten, dass auf der Rückseite der Platine unter dem Arduino Uno die Leiterbahnen unterbrochen werden müssen, damit die jeweils gegenüberliegenden Pins des Arduino nicht kurzgeschlossen sind. Die Unterbrechungen dreht man am Besten händisch mit einem 3 mm Metallbohrer.
Die Pinbelegung des Arduino ist bis auf einige Stellen frei wählbar. Die 5V-Leitung der LEDs wird mit dem 5V des Arduinos verbunden. Auf einer weiteren Streifenrasterplatine werden Drucktaster gelötet. Dabei ist auf eine ergonomische Platzierung der einzelnen Taster zu achten, um das spätere Spielerlebnis angenehmer zu gestalten. Benötigt werden mindestens 4 Taster für das Spiel Tetris. Die Links-, Rechts-, Runter- und Dreh-Taste.
Wir verbinden die Taster mit dem Kupfer Draht Und Digitalports D08, D09, D10, D11, sowie. Die Pins 11 bis 14 sind willkürlich gewählt worden. Zum Schutz der LEDs wird zwischen dem Arduino und dem DIN des ersten LED-Streifens ein 220 Ohm Widerstand in Reihe gelötet. Ohne den Widerstand würde bei versehentlicher Unterbrechung der Masseleitung ein großer Strom durch die Datenleitung zurückfließen und die erste LED in der Reihe zerstören. Optional und für mehr Spielgenuss kann man einen magnetischen Summer an einen der freien Digitalpins löten, der das Tetris-Spiel durch Tonwiedergabe begleitet.
Leiterplatten Entwurf
Der elektrische Schaltplan haben wir mit Hilfe von einem Freeware-Software (Fritzing; http://fritzing.org/home/) montiert. Dort ist es möglich die einzelne elektrische Bauteile virtuell miteinander zu verschalten und zu parametrisieren. Anschließend ist es möglich daraus einen elektrischen Schaltplan zu erzeugen und sogar auch Leiterplatten-Design ist hiermit möglich. Die verschalteten elektrische Bauteile, der Schaltplan, die Leiterplatten-Layout und auch das Arduino Code zusammen lassen sich in einem Fritzing-Projekt als eine Datei speichern.
Software-Design
Die Softwrae wurde mit Arduino IDE entwickelt. Die LED-Streifen wurden mit Hilfe der Bibliotheken "FastLED" angesteuert. Die Quellcodes wurde im SVN-Projektordner hochgeladen. Das Tetris-Spiel wird über die 4 Taster wie folgt gesteuert: Während des spiels:
Steuerung | Funktion |
Links-Taste | Stein nach links bewegen |
Rechts-Taste | Stein nach rechts bewegen |
Drehen-Taste | Stein um 90° nach rechts drehen |
Runter-Taste | Stein schnell nach unten bewegen |
Zusammenfassung
Zusammengefasst lässt sich sagen, dass die Aufgabe nicht so einfach war, wie es schien. Tetris zu programmieren ist zwar keine unlösbare Aufgabe, aber auch nicht so einfach. Trotzdem sind wir zu einen tollen Ergebnis gekommen. Was noch fehlte waren richtige Kästchen, da die LEDs ein wenig irritieren und nicht perfekt für ein Spiel aussehen. Was man verbessern kann wäre ein Plastikwinkel als Profilleiste, zudem können wir auch die Geschwindigkeit erhöhen, indem sie ein Startmenü erstellen, das dient dazu, dass die Anfangsgeschwindigkeit geändert werden könnte. Wenn man Spaß an solchen Spielen hat, würden wir dieses Projekt empfehlen.
Neben Tetris lassen sich auch andere Spiele (zum Beispiel Snake) programmieren, die eine gleiche Anzahl an Bildschirmpixeln benötigen.
Lessons Learned
- Da wir für das Projekt zu zweit waren haben wir gelernt was Teamarbeit bedeutet.
- Haben wir gelernt wie man Material für das Projekt organisiert(kauft).
- Im Team haben wir gelernt gemeinsam Lösungswege zu finden.
- Da wir in der Vergangenheit nie gelötet haben, war es für uns eine Herausforderung und Lehre zugleich.
- Wir haben außerdem gelernt bessere und schnellere Recherchen zu führen.
Herausforderungen des Projektes
Bei der Durchführung des Projektes haben wir einige Schwierigkeiten gehabt.
- Die Löcher in die MDF-Platte zu Bohren, so dass die LED-Streifen mit den Abständen zu den einzelnen LED´s genau passen.
- Wir haben viel Zeit benötigt um die richtige Software (Bibliothek-FastLED) als Download zu finden.
- Die Größte Schwierigkeit bestand für uns darin die LED-Streifen auf die MDF-Platte zu löten, dabei gelang es uns nicht alle LED´s so zu löten das sie funktionieren.
Projektunterlagen
YouTube Video
Weblinks
Links und Foren: http://www.heise.de/make/inhalt/2015/01/012/
- https://www.heise.de/make/links/1501012
- http://193.175.248.52/wiki/index.php/Projekt_47b:_Snake_mit_LED-Streifen_und_Arduino
Literatur
- Artikel in c‘t hacks 1/2015 (S. 12ff) - http://fritzing.org/home/
→ zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)