Bearbeiten von „Flippi“

Wechseln zu: Navigation, Suche

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird öffentlich sichtbar, falls du Bearbeitungen durchführst. Sofern du dich anmeldest oder ein Benutzerkonto erstellst, werden deine Bearbeitungen zusammen mit anderen Beiträgen deinem Benutzernamen zugeordnet.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version Dein Text
Zeile 1: Zeile 1:
  
 
Bei '''Flippi''' handelt es sich um einen Modularen Flipper, welcher in Form, Größe und Schwierigkeit skalierbar ist. Hierzu lassen sich verschiedene Bauteile Erstellen und über einen zentralen Mikrocontroller steuern.
 
Bei '''Flippi''' handelt es sich um einen Modularen Flipper, welcher in Form, Größe und Schwierigkeit skalierbar ist. Hierzu lassen sich verschiedene Bauteile Erstellen und über einen zentralen Mikrocontroller steuern.
 +
  
 
==Ideenentwicklung==
 
==Ideenentwicklung==
Zeile 6: Zeile 7:
  
 
Flippi setzt genau hier an. Die Idee ist es, günstige Hardware mit Teilen aus der [https://de.wikipedia.org/wiki/Industrie_4.0 Industrie 4.0] zu verbinden und so '''Flippertische''' günstig selber zu bauen. Hierbei ist zu beachten, dass nicht jeder genug Platz für einen kompletten Tisch hat, weswegen die Dimensionen Variabel sind. Selbiges gilt für die Verwendung weiterer Technik.
 
Flippi setzt genau hier an. Die Idee ist es, günstige Hardware mit Teilen aus der [https://de.wikipedia.org/wiki/Industrie_4.0 Industrie 4.0] zu verbinden und so '''Flippertische''' günstig selber zu bauen. Hierbei ist zu beachten, dass nicht jeder genug Platz für einen kompletten Tisch hat, weswegen die Dimensionen Variabel sind. Selbiges gilt für die Verwendung weiterer Technik.
 +
  
 
==Konzeptionierung==
 
==Konzeptionierung==
Zeile 17: Zeile 19:
  
 
Des weiteren soll das Projekt die Möglichkeit der späteren Erweiterung besitzen. Hierzu wird die Möglichkeit offen gehalten neben weiteren Modulen auch Beleuchtung, Bestenliste und weiterer Features einzubauen. Auch diese sollten Menschen ohne Programmiererfahrung offen stehen, siehe [http://hrw-fablab.de/wiki/index.php?title=Flippi#Ausblick Ausblick].
 
Des weiteren soll das Projekt die Möglichkeit der späteren Erweiterung besitzen. Hierzu wird die Möglichkeit offen gehalten neben weiteren Modulen auch Beleuchtung, Bestenliste und weiterer Features einzubauen. Auch diese sollten Menschen ohne Programmiererfahrung offen stehen, siehe [http://hrw-fablab.de/wiki/index.php?title=Flippi#Ausblick Ausblick].
 +
  
 
==Erste Schritte==
 
==Erste Schritte==
Zeile 127: Zeile 130:
  
 
===Module===
 
===Module===
Die STL Dateien der bereits fertig gestellten Modelle befinden sich auf [https://github.com/rootCowHD/Flippi/tree/master/Modelle Github].
 
 
 
====Eingabe====
 
====Eingabe====
 
Die meisten Module sind Eingabe Module.
 
Die meisten Module sind Eingabe Module.
Zeile 150: Zeile 151:
  
 
===Software===
 
===Software===
Der Quellcode des Projektes findet sich auf [https://github.com/rootCowHD/Flippi Github].
 
Der Teil welcher am 02.05.2018 Präsentiert wird findet sich gesondert im Abgabe Ordner und ist eine Schlankere Variante des vollständigen Codes.
 
Im WIP Bereich findet sich der Code welcher die nächste Version vorbereitet.
 
 
 
====Eingabe====
 
====Eingabe====
Die Eingabe wird durch einen Arduino geregelt, welcher einerseits über I2C andererseits aber auch über Pins Punkte berechnen kann.
 
Über I2C werden die Punkte dabei vom Arduino abgefragt, bei einfacher Eingabe wird  an den Pins 4 bis 13 (1-512) ein Binärer Wert angelegt und zudem ein Interrupt an Pin 2 ausgelöst. I2C wird ebenfalls nur abgefragt, wenn ein Interrupt (an Pin 3) ausgelöst wurde.
 
 
Nach dem berechnen der neuen Punkte werden diese in einem 20 Zeichen langen Kommando an die zentrale Steuereinheit gesendet.
 
 
{| class="wikitable"
 
!Funktion
 
!Verwendung
 
|-
 
|I2CInterrupt
 
|Setzt eine Flagge zum Abfragen der I2C Geräte
 
|-
 
|pointInterrupt
 
|Setzt eine Flagge zum ausgeben der Punkte, sofern diese nicht schon gesetzt wurde. Die Punkte werden beim Interrupt zusammengezählt
 
|-
 
|initI2C
 
|Initialisiert die I2C Kommunikation
 
|-
 
|initCustomI2C
 
|Initialisierung von nachträglich eingefügten I2C Befehlen
 
|-
 
|handlePoints
 
|Übergibt die Punkte als Kommando in String Format an die Zentrale Steuereinheit
 
|-
 
|handleI2C
 
|Behandelt die Punkte, welche über I2C eingelesen werden
 
|-
 
|handleCustomI2C
 
|Behandelt nachträglich eingefügte I2C Bauteile
 
|}
 
 
 
====Verarbeitung====
 
====Verarbeitung====
Bei der Verarbeitung handelt es sich um einen Arduino, welcher die Kommunikation zwischen allen Modulen regelt und die eigentlichen Werte vorhält.
 
Die Grundliegenden Funktionen sind folgende:
 
{| class="wikitable"
 
!Funktion
 
!Verwendung
 
|-
 
|customLoadTime
 
|Stellt ein was während des Startvorgangs passieren soll
 
|-
 
|initBus
 
|Stellt alle Seriellen und sonstigen Kommunikationswege ein
 
|-
 
|initCustomBus
 
|Einstellung von Kommunikationswegen, welche nicht von vorne herein vorgesehen waren
 
|-
 
|initMain
 
|Alle Einstellungen des Hauptprogramms, z.B. das laden der Bestenliste und zurücksetzen der Punkte
 
|-
 
|customInit
 
|Alles was nachträglich noch initialisiert werden muss
 
|-
 
|customLoadFinish
 
|Aufruf wenn das Laden abgeschlossen ist
 
|-
 
|pointCommand
 
|Bearbeitung von Kommandos für eingehende Punkte
 
|-
 
|debugCommand
 
|Bearbeitung von Kommandos über USB
 
|-
 
|hitterCommand
 
|Bearbeitung von Kommandos der Schläger und Startrampen Steuerung
 
|-
 
|addOnCommand
 
|Bearbeitung von Kommandos von addOns
 
|-
 
|RXTXCommand
 
|Bearbeitung von Kommandos über den Softwareserial Eingang
 
|-
 
|usbCommandsCustom
 
|Nachträglich eingefügte USB Kommandos
 
|-
 
|pointCommandsCustom
 
|Nachträglich eingefügte Kommandos für Punkte
 
|-
 
|addOnCommandsCustom
 
|Nachträglich eingefügte Kommandos für addOns
 
|-
 
|customRXTX
 
|Nachträglich eingefügte Kommandos für Softwareserial
 
|-
 
|serialEvent(0-3)
 
|Interrupts für angeschlossene Serial Geräte
 
|-
 
|RXTXCommand
 
|Interrupt für Softwareserial
 
|-
 
|updateOut
 
|Sendet den aktuellen Punktewert an die Ausgabe
 
|-
 
|addPoints
 
|Fügt Punkte hinzu
 
|-
 
|subPoints
 
|Zieht Punkte ab
 
|}
 
 
Hierbei ist zu beachten das erst bei der Komplementierung einer Eingabe dieser in ein Kommando umgewandelt wird. Aktuell ist ein Kommando 20 Zeichen lang, weswegen solange serielle Eingaben gesammelt werden, bis 20 Zeichen im '''InputString''' gespeichert sind. Anschließend wird dieser in ein Kommando umgewandelt und eine entsprechende Flagge im Programm gesetzt ('''StringComplete''').
 
 
Sofern eine Flagge gesetzt wurde, wird im loop der entsprechende ''Handle'' Befehl aufgerufen. In diesem wird das Kommando verarbeitet und eine entsprechende Ausgabe getätigt.
 
 
Hierbei hat auch die Ausgabe eine feste Länge des Kommandos (ebenfalls 20 Zeichen).
 
 
 
====Ausgabe====
 
====Ausgabe====
Die Ausgabe ist aufgeteilt in die Anzeige auf einem '''ST7735''' und die Ausgabe auf ein mobiles Endgerät via App.
 
{| class="wikitable"
 
!Funktion
 
!Verwendung
 
|-
 
|initDisplay
 
|Vorbereitung des Displays auf spätere Eingaben
 
|-
 
|handlePoints
 
|Befehl beim Aufrufen des Webservers unter 192.168.4.1/Point
 
|-
 
|serialHandler
 
|Auswertung eingehender Serieller Kommunikation und Vorbereitung von Kommandos
 
|-
 
|commandHandler
 
|Auswertung von Kommandos
 
|-
 
|pointCall
 
|Abgewandelter Setter für den Punktewert
 
|-
 
|updateDisplay
 
|Kombination aus Punkteanzeige und Anzeige der Eigenen Display Inhalte
 
|-
 
|showPoints
 
|Anzeige der Punkte in updateDisplay
 
|-
 
|readWlanconfig
 
|Liest die WLAN Konfiguration aus dem EEPROM aus und stellt diese zur Verfügung
 
|-
 
|B34
 
|Temporärer Befehl zum Konfigurieren des EEPROMs
 
|-
 
|customCommands
 
|Wertet zusätzliche Kommandos aus, welche durch Erweiterungen zur Verfügung gestellt werden
 
|-
 
|customDisplay
 
|Stellt eigene Inhalte auf dem Display da
 
|}
 
 
Hierbei werden im ersten Schritt ''loop'' die Clients des Servers abgearbeitet. Anschließend werden eingehende serielle Befehle entgegen genommen. Falls die Serielle Kommunikation lang genug für ein Kommando ist, wird dieses ausgewertet. Anschließend wird das Display neu geladen und der loop beginnt von vorne.
 
 
'''Kommandos''' haben dabei eine im Programm vordefinierte Länge (hier 20 Zeichen) und sind einfache '''Strings''' welche auf bestimmte Eigenschaften untersucht werden müssen.
 
 
Ein String welcher mit ''gp:'' beginnt wird Beispielsweise als Kommando für das updaten der Game Points verwendet. Nach dem Doppelpunkt können hierbei noch 17 Zeichen folgen, um den Zahlenwert darzustellen. Hierbei ist die Begrenzung nicht die Länge eines Datentyps, da die Punkte Ebenfalls als String gespeichert werden. Dies kann in anderen Modulen anders geregelt werden.
 
  
 
===APP===
 
===APP===
Zeile 312: Zeile 161:
 
====Verarbeitung====
 
====Verarbeitung====
 
Die Verarbeitung wird zentral geregelt. Der Austausch des Controllers ist nicht vorgesehen, dennoch kann in Zukunft über Zusatzmodule auf die Verarbeitung zugegriffen werden. Weitere Infos im Ausblick.
 
Die Verarbeitung wird zentral geregelt. Der Austausch des Controllers ist nicht vorgesehen, dennoch kann in Zukunft über Zusatzmodule auf die Verarbeitung zugegriffen werden. Weitere Infos im Ausblick.
 
 
====Ausgabe====
 
====Ausgabe====
Die App in ihrer einfachsten Form soll die durch eine NodeMCU empfangenen Daten aufbereitet darstellen. Hierzu stellt die NodeMCU einen Webserver bereit, auf welchem die Punkte angezeigt werden.
 
ToDo:
 
  
 
===Gewährleistung der Erweiterbarkeit===
 
===Gewährleistung der Erweiterbarkeit===
Zeile 340: Zeile 186:
 
===Spielfläche===
 
===Spielfläche===
 
Die Spielfläche ist die oberste Schicht und hat ein 50x50 mm Raster. Damit eine Kompatibilität gewährleistet wird, ist die Grundplatte aller Module des Spielfelds 3 mm dick.
 
Die Spielfläche ist die oberste Schicht und hat ein 50x50 mm Raster. Damit eine Kompatibilität gewährleistet wird, ist die Grundplatte aller Module des Spielfelds 3 mm dick.
Größenangaben werden im Raster angegeben: 1x1 für 50x50 mm 2x1 für 100x50 mm. Am Rand jedes Rasters ist ein Viertelkreis mit 5mm Radius ausgeschnitten und 1mm Höhe. ein 2x2 Modul hat entsprecht an jeder Ecke einen Viertelkreis, einen Halbkreis in der Mitte jeder Seite und einen vollen Kreis in der Mitte. Diese Säulen sollen das verrutschen auf dem Raster verhindern.
+
Größenangaben werden im Raster angegeben: 1x1 für 50x50 mm 2x1 für 100x50 mm. Am Rand jedes Rasters ist ein Viertelkreis mit 5mm Radius ausgeschnitten. ein 2x2 Modul hat entsprecht an jeder Ecke einen Viertelkreis, einen Halbkreis in der Mitte jeder Seite und einen vollen Kreis in der Mitte. Diese Säulen sollen das verrutschen auf dem Raster verhindern.
  
[[Datei:FlippiRaster.png]]
+
ToDo: Zeichnung einfügen.
  
 
Bauelemente können unterschiedliche Größen haben, sollten aber mindestens 30 mm zusätzliche Höhe haben. Eine Maximalhöhe ist nicht vorgegeben. Desweiteren sollte kein Element die Kugel dauerhaft festhalten können, sofern dies nicht Teil eines addOns ist.
 
Bauelemente können unterschiedliche Größen haben, sollten aber mindestens 30 mm zusätzliche Höhe haben. Eine Maximalhöhe ist nicht vorgegeben. Desweiteren sollte kein Element die Kugel dauerhaft festhalten können, sofern dies nicht Teil eines addOns ist.
Zeile 378: Zeile 224:
 
|Entsteht durch Verdrahtung mit einem Bus, bei I2C Modulen wird deren Berechnung angegeben.
 
|Entsteht durch Verdrahtung mit einem Bus, bei I2C Modulen wird deren Berechnung angegeben.
 
|}
 
|}
|[[Datei:FlippiBumper.PNG]]
+
|ToDo: Bumper Image
 
|}
 
|}
  
Zeile 410: Zeile 256:
 
|-
 
|-
 
|Bauart
 
|Bauart
|Schräge Fläche mit Säulen
+
|Ebene Fläche mit Säulen
 
|Beschreibung des Modulrasters
 
|Beschreibung des Modulrasters
 
|-  
 
|-  
 
|Erweiterbar
 
|Erweiterbar
|Ja
+
|Nein
 
|Angabe ob weitere Raster hinzugefügt werden können
 
|Angabe ob weitere Raster hinzugefügt werden können
 
|-
 
|-
Zeile 421: Zeile 267:
 
|Angabe ob Controller im Busbereich eingebunden werden können
 
|Angabe ob Controller im Busbereich eingebunden werden können
 
|}
 
|}
|[[Datei:FlippiRasterScreen.PNG]]
+
|ToDo: Foto des Rasters einfügen
 
|}
 
|}
===Software Modifizierung===
 
Die Software aller Module lässt sich über die '''custom''' Datei in der Arduino IDE schnell modifizieren, ohne im eigentliche Code Änderungen vornehmen zu müssen.
 
 
Dies ermöglicht eine Modifizierung über eine weitere Datei, welche einfach in das Projekt verschoben und über die '''custom''' Datei aufgerufen wird.
 
 
In der '''custom''' Datei werden zudem andere Veränderbare Eigenschaften des Modules bereitgestellt.
 
 
==Planung für die Zukunft==
 
Folgende Features sind für die Zukunft angedacht:
 
===Mehr Module===
 
Zurzeit gibt es nur wenige Beispielmodule. Auf lange Sicht ist es Sinnvoll mehr Module zu erstellen. Anregungen finden sich bei alten Flippertischen. Hierbei können auch größere Module entstehen, welche dann je nach Status mehr Punkte geben (Siehe [https://en.wikipedia.org/wiki/Full_Tilt!_Pinball Full Tilt! Pinball] für Beispiele).
 
 
Auch andere Module werden in diesem Abschnitt später noch angesprochen.
 
 
===Platzierung der Controller Module===
 
Die Controller liegen in der aktuellen Version noch neben dem eigentlichen Spielfeld. In späteren Versionen ist es vorgesehen eigene Platinen zu verwenden um Platz zu sparen. Durch die Verkleinerung der '''zentralen Steuereinheit''' ist es möglich diese im Bus Bereich unter dem Spielfeld anzubringen. Hierdurch kann die Optik des späteren Produktes Anspruchsvoller gehalten werden.
 
 
===Automatisierter Neustart===
 
Durch den manuellen Einwurf und Auswurf der Kugel ist in der ersten Version ein automatischer Programmneustart technisch zwar Umsetzbar, aber nicht Sinnvoll. Hierbei ist eine Erkennung unterhalb der Schläger nötig, welche nicht gefangene Bälle berechnet und je nach Einstellung automatisch zur Startrampe zurück führt. Im Geiste der Modularisierung ist dieses Schritt allerdings zurückgestellt, bis wichtigere Punkte abgearbeitet wurden.
 
 
===Einheitliche Größe===
 
Derzeit ist die Kugel nicht genormt, die Verwendung einer alten Kugelmaus Kugel ist zwar ein Anfang aber auch ein Provisorium. Kugeln sind nur schwer zu drucken und nicht mit einem Laser Cutter herstellbar. Hier wird nach Optionen für Individuelle Kugeln gesucht.
 
 
=== Bestenliste===
 
Sobald das Spiel ein automatisiertes Ende berechnen kann, ist es auch möglich eine Bestenliste im [https://www.arduino.cc/en/Reference/EEPROM EEPROM] des Arduino Megas abzulegen. Diese ist lediglich für den lokalen Flipper verwendbar und benötigt zudem eine elektronische Eingabe, welche an die zentrale Steuereinheit weitergegeben werden muss. Zudem ist ein Ausgabefeedback nötig.
 
 
Der Code für die Eingabesteuerung muss auf dem zentralen Controller laufen, beim Umstieg müssen auch Ausgabegeräte ein Update erhalten, um entsprechende Texte anzeigen zu können.
 
 
===Elektronische Schläger===
 
Die Schläger sind aktuell kein Teil der Eingabe. Dies liegt in erster Linie am Preis des Prototypen. Die Entwicklung eines eigenen Schlägers ist daher nicht Teil des eigentlichen Projektes. In späteren Versionen werden simpele Befehle standardmäßig unterstützt. Hierfür werden mindestens 2 Taster an einem Controller angeschlossen, welcher die Eingabe des Schlägers regelt.
 
Die Ausgabe wird über die '''zentrale Steuereinheit''' geregelt. Hierdurch können weitere Features in der Verarbeitung des Schlages aufgerufen werden, bevor dieser Ausgeführt (Ausgabe) wird.
 
 
Für die Ausgabe wird neben dem eigentlichen Mikrocontroller ein starker Magnet oder eine andere Vorrichtung zum ausführen des Schlages benötigt. Hierzu wird zudem ein höherer Strom benötigt, um genug Leistung für einen wirksamen Schlag aufzubringen.
 
 
Zudem können sind auch Kombinationen aus elektronischem und analogem Schläger denkbar.
 
 
Diese '''Kombi Schläger''' benötigen keine Elektronik zum ausführen von Schlägen, bieten aber dennoch die Möglichkeit den Status des Schlägers einzulesen. Hierzu kann Beispielsweise eine Lichtschranke verwendet werden.
 
[[Datei:FLippi Kombi Image.png|right]]
 
 
===Elektronische Startrampe===
 
Mit einer elektronisch gesteuerten Startrampe kann die Energie des Starts vorher genau angepasst werden (vorherige Angabe). Auch kann ein Rückfall der Kugel in die Rampe durch Elektronik verhindert werden. Bei kombinierten Modulen aus Startrampe und Schlägern kann zudem über eine automatische Rückführung nachgefacht werden, was Spiele aus mehreren Runden erleichtert.
 
 
===App Steuerung der Eingabe===
 
Eine erweiterte App kann die Funktionen der Schlägereingabe, Punkteausgabe, Bestenliste und weiterer Features zusammenfassen. Da es sich hier allerdings um ein Mikrocontroller Projekt handelt, ist die Entwicklung einer App nebensächlich.
 
 
Auch weitere addOns können in einer App mit eingebunden werden, sofern dies gewünscht wird.
 
 
===Beleuchtung===
 
Bunte blinkende Lichter sind Teil des alten Spielhallen Flairs. Diese werden von den Maschinen Event bedingt gesteuert. Das Ansteuern der Beleuchtung ist eingeplant, allerdings ist die Beleuchtung nicht Relevant für das Spiel. Aus diesem Grund wurde die Beleuchtung auf einen spätere Version verschoben.
 
 
===AddOns===
 
AddOns sind Controller, welche zusätzliche Funktionen ermöglichen sollen. Die hier genannten addOns sind lediglich Beispiele für Möglichkeiten. Auch weitere addOns sind möglich.
 
 
====Punkte Modifizierung====
 
Die Punkte Modifiezierung soll das Spiel erleichtern oder erschweren. Hierfür ist ein Multiplikator vorgesehen, welcher auf die Punkte angewendet wird. Zudem ist ein Zeitgesteuerter Wert möglich, welcher die Punkte über Zeit erhöht oder senkt. Die Verwendung elektrischer Schläger kann zudem belohnt oder bestraft werden. Allgemein würde diese Modul eine Einstellung des Schwierigkeitsgrads darstellen.
 
 
====Multiplayer====
 
Über eine Serielle Verbindung zu einem anderen '''Flippi''' könnten diese in einen Multiplayer Modus mit- oder gegeneinander antreten. Durch die Verwendung eines Controllers als Broker könnten zudem mehr als 2 Spieler gleichzeitig antreten. Gegebenenfalls kann hierfür SPI oder I2C verwendet werden. Dabei wäre jeder Spieler ein Slave im System, der Host wäre der Master und würde das Spiel kontrollieren.
 
 
====Externe Speicherstände====
 
Durch die Verwendung von SD-Karten können Speicherstände außerhalb des EEPROMs der zentralen Steuereinheit gespeichert werden. Durch einen Flexiblen Zugriff könnte ein System ein Spiel zudem pausieren und abspeichern, sobald ein Ball zu ende gespielt wurde und der nächste Einwurf bevor steht (Fixpunkt im Spielablauf). Die Verwendung einer SD Karte ermöglicht zudem das Abspeichern von Mini Spielen welche Bonuspunkte bringen können und in einer App gelöst werden müssen. Hierbei sind besonders Lern oder Geschicklichkeitsspiele denkbar.
 
 
===USB Anschluss===
 
Die Verwendung eines Computers für Erweiterungen steht durch das Freihalten eines Anschlusses für USB / Debugging offen.
 
 
===Online Features===
 
Die Verwendung einer Online Rangliste macht keinen Sinn. Dennoch wäre es möglich Serverbasiert Events ausführen zu lassen. Ähnlich Phänomenen wie [https://de.wikipedia.org/wiki/Twitch_Plays_Pok%C3%A9mon Twitch Plays Pokemon] oder  [http://www.saltybet.com/ salty bet] kann dabei eine Community oder auch Einzelpersonen Events auslösen.
 
 
===Zusatz Module===
 
Module der Spielfläche sind derzeit auf direkte Eingabe (EPM) oder vorherige Berechnung (I2C) beschränkt. AddOns könnten diese Berechnung erweitern. Auch könnten '''Leere Module''' mit technischen Eigenschaften versehen werden. Zum Beispiel dem Auswurf der Kugel in eine zufällige Richtung. Hier müssten weitere Möglichkeiten geprüft werden.
 
 
 
==Ausblick==
 
==Ausblick==
Menschen welche sich für Retro interessieren können mit diesem Projekt an Grundlagen der Informatik herangeführt werden. Durch die Möglichkeit eigene Module zu entwickeln bietet sich die Chance aus einem Konsumverhalten auszubrechen und selber an der Gestaltung teilzuhaben. Hierbei ist die Programmierung unabhängig vom eigentlichen Modul möglich. Durch diese Trennung ist der Einstieg speziell für Menschen ohne Programmiererfahrung kaum erschwert.
 
 
Einfache Module können selbst von Kindern unter Verwendung von Software wie [https://www.tinkercad.com tinkerCAD] gestaltet und unter Aufsicht verdrahtet werden.
 
 
Für komplexere Module kann auch ein simpler Controller wie [http://microbit.org/de/ micro:bit] oder [https://calliope.cc Calliope] verwendet werden. Diese ermöglichen das verwenden von I2C in Blocksprache und senken die Voraussetzung für die Programmierung weiter ab.
 
 
Über diesen leichten Zugang können bereits Kinder an das Modellieren und Programmieren herangeführt werden und haben zum Schluss ein ansprechendes Ergebnis.
 
 
==Verwendete Software und Bibliotheken==
 
[https://www.arduino.cc/en/main/software Arduino IDE] zur Programmierung der Mikrocontroller.
 
 
[https://github.com/adafruit/Adafruit-GFX-Library Adafruit GFX Library] Bibliothek für Grafiken auf Displays mit dem Arduino.
 
 
[https://github.com/adafruit/Adafruit-ST7735-Library Adafruit ST7735 Library] Bibliothek zur Verwendung von ST7735 Displays mit dem Arduino.
 
 
[https://github.com/esp8266/Arduino ESP8266 Arduino Paket] Zum programmieren der NodeMCU mit der Arduino IDE.
 
 
[https://www.prusa3d.de/slic3r-prusa-edition/ Slic3r Prusa Edition] Slicer für 3D Modelle.
 
 
[https://www.tinkercad.com/ TinkerCAD] Web basierte 3D Modellierung.
 
 
[https://de.wikipedia.org/wiki/Adobe_Photoshop Adobe Photoshop CS6] Anlegen von Skizzen.
 
 
[http://www.Hardcopy.de/ Hardcopy] Anwendung für Screenshots.
 
 
[https://github.com/ GitHub] Versionierung und Beeitstellung von Quellcode.
 
 
==Schwierigkeiten bei der Umsetzung, eine Tragödie in drei Schwerpunkten==
 
Dieser Abschnitt ist nicht nur zum Teil ernst zunehmen und entspricht eher einer persönlichen Therapie, als einer wissenschaftlichen Arbeit.
 
 
===Zum Glück gibt es Technik===
 
Eine erste Schwierigkeit, beim entwickeln von neuem, ist das fehlen von Beispielen.
 
 
Flipper sind keine neue Erfindung, dennoch sind sie ein selten vertretendes und hoch spezialisiertes Produkt. Daher finden sich zwar Schaltpläne für einfache Bauteile, aber kaum Anleitungen zur Digitalisierung der meist Analogen Bauteile. Ein fertiger Tisch welcher modernisiert ist, kostet auf dem deutschen Markt (sofern Funktionsfähig) rund 5000€ ([http://pinball-universe.de/ Pinball Universe]), was für ein Referenz Modell den Finanziellen Rahmen des Projektes überzieht.
 
 
Nachdem also einzelne Funktionen getestet wurden, fanden sich einige Schwierigkeiten, welche sich technisch nicht im Rahmen der legalen Anwendungen im Labor hätten umsetzen lassen:
 
 
Hubmagnete, welche eine entsprechende Leistung schnell genug Umsetzen, benötigen eine zu hohe Leistung und sind bei 12 Volt nicht schnell genug, um die Kugel zu Beschleunigen. Weswegen nach anderen Lösungen gesucht wurde. Hydraulikpumpen welche genug Kraft umsetzen könnten, würden das Budget des Projektes übersteigen. Jede einzelne der 3 benötigten. Entsprechend wurde hier zu guter letzt die Lösung der Kombischläger erdacht, bei welchen die Kraft Analog über einen Hebel kommt, durch eine Lichtschranke allerdings dennoch ein technisches einlesen Möglich ist. Hier wird weiter nach Möglichkeiten gesucht. Zumal es uns nicht gelungen ist, eine sauber rollende Kugel mit einem anständigen Gewicht herzustellen oder zur organisieren.
 
 
Einen Rahmen herzustellen ist technisch gesehen keine hohe Kunst, sofern die dafür benötigten Werkzeuge dann funktionieren wenn man sie braucht. Leider ist dies bei einem gewissen Laser gestütztem Schneidegerät häufig nicht der Fall.
 
 
Und dann ist auch immer gut einen Controller zum testen im Labor zu haben, wenn man erwartet dass im Labor Controller für Projekte verwendet werden.
 
Leider bringen Controller im Labor nur dann etwas, wenn diese Fehlerfrei funktionieren.
 
 
Bis zu diesem Punkt wären viele Probleme über das Budget regelbar gewesen, wenn das "Team" nicht ein Mitspracherecht hätte.
 
 
===Im Team ist alles besser===
 
Leider war die Kommunikation innerhalb des Teams, bestenfalls gering.
 
 
So wurde das Budget für Materialien verwendet, welche eindeutig zu teuer sind. Zu schwache Hubmagnete sind ebenso vorhanden wir Material für einen viel zu großen Rahmen. Leider fehlt das Budget für Nebensächlichkeiten wie Controller, elektrische Bauteile und Stromversorgung. Ja, Hubmagnete welche Strom brauchen, haben weder ein Steuereinheit, noch eine Stromquelle und vielen damit auch wieder aus.
 
 
===Das Ding mit der Arbeit===
 
Leider gibt es neben mangelnder Kommunikation auch einen Engpass an Gruppenmitgliedern. Da sich ein Teil der Gruppe nach dem Einkauf nicht mehr zum Projekt äußern wollte.
 
Aus diesem Grund blieb ein Großteil der Arbeit an einer Einzelperson hängen, welche den Quellcode für eine Präsentation zusammengestrichen hat, damit dieser zumindest funktioniert. Eine Einzelperson hat sich dann noch einen Wiki Eintrag aus den Fingern gezogen, die Hardware zusammengebaut und einen nicht Funktionsfähigen 3D Prototypen erstellt. Alles unter Einsatz eigener Hardware und Mittel.In der Zwischenzeit kämpft eine andere Einzelperson mit einer App. Der dritte im Bunde, welcher sich primär um das Modell kümmern wollte, hat sich in der Zwischenzeit beurlauben lassen.
 
 
Ein Großartiger Abschluss für ein Projekt.
 
 
==Fazit==
 
Bei '''Flippi''' ist sowohl Ausbaubedarf, als auch Ausbaupotential bevor ein vollständiger Flipper umgesetzt werden kann. Dieses Potential wird dann vermutlich allerdings unter einem anderen Titel und als Hobbyprojekt entfaltet. Gerade in der Teamarbeit und Kommunikation besteht Verbesserungspotential und es wäre Wünschenswert für spätere Semester einen stärkeren Fokus auf Controller zu legen.
 
 
Leider haben wir erst kurz vor Schluss erfahren, dass die gesamten Kommunikationsschwierigkeiten der Seriellen Verbindungen mit einem anderen Chip kein Problem gewesen wären. Die Vielzahl der Möglichkeiten neben den großen Chips kommt hier etwas zu kurz. Auch die Möglichkeit der Entwicklung ist durch das erzwingen einer mobilen App eingeschränkt.
 
  
==Beteiligte Studenten==
+
==Schwierigkeiten bei der Umsetzung==
Stefan Werntges
 

Bitte beachte, dass alle Beiträge zu HRW FabLab MediaWiki von anderen Mitwirkenden bearbeitet, geändert oder gelöscht werden können. Reiche hier keine Texte ein, falls du nicht willst, dass diese ohne Einschränkung geändert werden können.

Du bestätigst hiermit auch, dass du diese Texte selbst geschrieben hast oder diese von einer gemeinfreien Quelle kopiert hast (weitere Einzelheiten unter HRW FabLab MediaWiki:Urheberrechte). ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)