Animierte Dot-Matrix (Pinball) Im Unterforum Hardware, Betriebssysteme, Programmiersprachen - Beschreibung: Alles zu Software, Hardware, Windows, Linux, Programmiersprachen
Anfragen zu Modding, Games, Cracks, etc. unerwünscht.
Elektronik- und Elektroforum Forum Index >>
Hardware, Betriebssysteme, Programmiersprachen
Hardware, Betriebssysteme, Programmiersprachen : Alles zu Software, Hardware, Windows, Linux, Programmiersprachen
Anfragen zu Modding, Games, Cracks, etc. unerwünscht. |
Autor |
Animierte Dot-Matrix (Pinball) |
|
|
|
|
BID = 705945
sphiryx Gerade angekommen
Beiträge: 4 Wohnort: Düren
|
|
Hallo zusammen,
ich versuche mal den Forenregeln hier gemäß erst mal alles nötige zu schreiben damit ihr wisst, worum es geht.
Ich plane den Bau eines Pinball-Spiels. Dabei darf natürlich eine Anzeige (Punkte, Spielmodi etc.) nicht fehlen. Die modernen Flipper verwenden ja Dotmatrix-Displays und genau so etwas wollte ich ebenfalls realisieren. Als Steuerung für die Flippertechnik (Magnete, Koontakte) wird es ein Athlon XP Board mit Linux sein (oder Windows, sofern die Gambas-Umgebung unter Linux die nötigen Funktionen nicht bietet). Das Display soll EINFARBIG sein (grün).
Ursprünglich hatte ich den Einbau eines stinknormalen 12" LCDs geplant. Um eine Dotmatrix zu simulieren, hätte ich die nötigen Animationen in grün via Programm ausgegeben und einfach eine Lochmaske (GIF oder PNG) einfach darübergelegt. Hätte sicher den gleichen Effekt aber irgendwie reizt mich doch da mehr die Aufgabe, das ganze mit einer richtigen Dotmatrix zu realisieren. Wo ich eben von ANimationen gesprochen habe, existiert schon eine Idee:
Das Hauptprogramm zeigt (neben der Steuerung der Mechanik) in einem Fenster im jeweiligen Betriebssystem (Fullscreen) den aktuellen Score und weis der geier was och an. Das ist ja schon mal kein Thema. Die Animationen dazu werde ich in Flash umsetzen und als Objekt ins Programm laden können. Auf Windows-Seite würde ich es mit AutoIt realisieren. Auf Linux-Seite wie gesagt mit Gambas. Sind beides Scripting-Tools mit einer Sprache die VB zu 99% ähnlich ist. Habe schon eingies mit Autoit realisiert und beherrsche auch schon die Basics. Den Rest habe ich mir immer via Trial and Error gebaut oder durch Tutorials gelernt.
Jetzt das Problem: Text auf eine Dotmatrix zu schicken ist ja noch kein Thema aber eine Animation aus Flash schon eher... zum Glück gibt es unter AutoIt die Funktion getpixel(x,y), welche den jeweiligen Pixel in der mitgelieferten Koordinate auf ihren Farbwert prüft. Ergo würde das AUsgabefenster vo AutoIt dann x-mal in der Sekunde "abgetastet" werden und dort, wo die Animation oder der Text auftaucht (also ein Bereich schwarz ist) gibt die Funktion den Wert 1 zurück und steuert den dazugehörigen Dot auf der Matrix an.
Die Dotmatrix sollte jeweils 64 Punkte pro Block haben und eine Dimension von 6x2 Einheiten.
Ich hoffe ich habe es einigermaßen verständlich erklären können Das Problem in meinem Fall ist nicht die Ausgabe via AutoIt oder die Abtastung des Fensters sondern die technische Realisierung der Dotmatrix. Ich bin zwar Systemintegrator, hatte jedoch damals nur PHP, SQL und VB gelernt - und das auch nicht exzessiv denn ich bin kein Anwendungsentwickler;-) Da ich schon von klein auf mit Kosmos-Baukästen experimentiert habe und auch in der AUsbildung Elektrotechnik hatte, kenne ich zumindest einige Basics wie U=R*I und wie Dioden aufgebaut sind und was zu beachten ist. Jedoch hört es bei Worten wie Multiplexing und Schieberegistern bei mir auf. Ich habe mir zwar diese Garfik hier mal angesehen (Bild eingefügt), begreife auch im Ansatz, wie die Ansteuerung dort erfolgt aber wie man letzendlich so eine Platine baut (ich habe auch nix zum ätzen einer Platine, geschweige denn Erfahrung mit Platinen-Software für die Schaltungs-Skizzierung) ist mir schleierhaft. OK, ich bin jedoch lernfähig und so komplex dürfte das ganze ja nicht sein (hoffe ich ).
Ein vorweg: Der Parallelport am MB wird belegt sein (kaskadierte Relais-Platinen zur Steuerung der Magnete). Ebenso wird der PS/2 Anschluss belegt sein, da hier eine Tastaur-Matrixmodul dranklemmt, welches die Kontakte im Flipper "überwacht".
Lässt sich so etwas denn überhaupt realisieren? Wenn ja, ist diese Aufgabe für mich zu hoch gegriffen und sollte ich lieber die Lösung mit der Maske wählen? Auch wenn das Projekt noch in den Kinderschuhen steckt und ich erst mal plane und Bauteile zusammensuche, so wäre es dennoch gut wenn ich schon einmal mich darin etwas einarbeite und nicht, wenn es darauf ankommt, völlig auf dem Schlauch stehe.
Nochmal zum Überblick:
Dot-Matrix in Grün
Matrix Block 8x8
Display-Dimensionen 6x2 Blöcke
mfG,
sphiryx
[ Diese Nachricht wurde geändert von: sphiryx am 5 Aug 2010 20:54 ]
Edit von clembra: Bild anklickbar gemacht
[ Diese Nachricht wurde geändert von: clembra am 8 Aug 2010 12:32 ] |
|
BID = 706261
dl2jas Inventar
Beiträge: 9914 Wohnort: Kreis Siegburg
|
|
Hier bei den Leuchtdioden ist das Thema nicht so gut aufgehoben, deshalb verschoben.
DL2JAS
_________________
mir haben lehrer den unterschied zwischen groß und kleinschreibung und die bedeutung der interpunktion zb punkt und komma beigebracht die das lesen eines textes gerade wenn er komplizierter ist und mehrere verschachtelungen enthält wesentlich erleichtert |
|
BID = 706431
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Eieiei, soviel Text für relativ wenig Aufwand...
Als Tipp: für sämtliche Hardware inkl. Dotmatrix-Display kann man einen kleinen Mikrocontroller benutzen. Und der wiederum bräuchte im einfachsten Fall bloß drei Leitungen zum PC, um sämtliche Daten zu übertragen.
Schau dich mal auf Sprut (www.sprut.de) oder auf Mikrocontroller.net (http://www.mikrocontroller.net/articles/AVR) um.
Mit diesen kleinen Rechenknechten kann man das alles machen - die AVRs lassen sich sogar in BASIC programmieren.
_________________
|
BID = 706434
Kleinspannung Urgestein
Beiträge: 13359 Wohnort: Tal der Ahnungslosen
|
Zitat :
DonComi hat am 8 Aug 2010 01:37 geschrieben :
|
die AVRs lassen sich sogar in BASIC programmieren.
|
Offtopic :
|
War das ein Seitenhieb?
Aber nett,das du mal wieder dran erinnerst...
|
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)
|
BID = 706436
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Offtopic :
| Nöö, kein Seitenhieb
sphiryx hat schon mit VB gearbeitet und da sollte im die BASIC-Syntax bekannt sein. |
_________________
|
BID = 706476
clembra Inventar
Beiträge: 5404 Wohnort: Weeze / Niederrhein
|
Offtopic :
| Er hat auch schon mit PHP gearbeitet, da kann er es auch gleich richtig machen und auf C umlernen |
Mal etwas mit den Zahlen gespielt: 8x8 je Matrix, 6x2 Blöcke, also 768 LEDn.
Einen großen µC vorausgesetzt (z.B. ATmega16) kann man das mit 4094 + Verstärker erledigen. Hier wären Ports A, B und C für die Daten zuständig und D für die PC-Kommunikation per RS232 und das Takten der Schieberegister. Das hieße aber 96 Schieberegister und 96 Verstärker.
Alternativ per Multiplexing über eine 24x32 Matrix.
Schaltungs- und Programmiertechnisch dürfte die Schieberegistervariante die einfachere sein, da es dabei nicht auf so genaues Timing ankommt und die LEDs bei fehlerhaftem Programmcode nicht durchbrennen können. Bei Multiplexing werde Stromstärken weit über der Dauerbelastbarkeit benutzt.
Die Kommunikation mit dem PC läuft für solche Anwendungen, DonComi und ich haben es schon angedeutet, normalerweise über die serielle RS-232-Schnittstelle. Da auf Hardware-Handshake, sprich Steuerleitungen, verzichtet werden kann würde auch ein günstiger USB-RS232-Wandler funktionieren, wenn kein passender Port vorhanden/frei ist.
Gruß clembra
_________________
Reboot oder be root, das ist hier die Frage.
|
BID = 706798
sphiryx Gerade angekommen
Beiträge: 4 Wohnort: Düren
|
Danke erst einmal für die Infos und sorry für den langen Text
Hm nunja, Microcontroller sollen es also lösen können. Nur das ist ja mein Problem... ich habe keinen Plan davon wie ich so ein Bauteil nutzen - geschweige denn sinnvoll in eine Schaltung verbauen kann. Was ich bis jetzt begriffen habe ist, dass diese Chips Ein- und Ausgänge haben. OK aber wie nutze ich diese? Was schicke ich wo rein bzw. wo klemme ich ein Relais oder einen Taster an? Und vor allem wie soll ich alle Spielmodi in so ein Ding programmieren? Von Soundausgabe mal ganz zu schweigen... die Beispiele zu den Chips sind alle in Assembler. Bei allem Enthusiamus aber Assembler hatte ich nicht vor zu lernen Ich stelle mir das vielleicht zu einfach vor was die Dotmatrix betrifft bzw. bin zu unwissend um so etwas realisieren zu können Meine Vorstellung war, dass ich via AutoIt Befehle an eine Schnittstelle schicke und entsprechende Relais geschaltet werden (für Elektromagnete, Lampen etc.). Das Beispiel mit dem Lauflicht in Bezug auf den controller habe ich ja noch gerade so verstanden - zumindest das der Chip die Spannung schrittweise auf den Pins ausgibt. Nur wenn ich mir jetzt vorstelle, das ich an einem Teil des Chips einen Kontakt anschließe (Target für die Kugel oder was auch immer) und der Chip dann entsprechend auf den Ausgängen etwas aktiviert - ok das geht ja. Nur wie soll ich dann noch meinem PC mitteilen "hey, das wurde Kontakt XY ausgelöst. Spiele deshalb Sound schlagmichtot ab". Sorry aber selbst wenn ich meine Grauen Zellen da oben versuche auszuquetschen habe ich null Ahnung wie ich da auch nur Ansatzweise anregehn soll. Relaisplatine von Conrad via Batchfile oder Programm unter Windows steuern - OK kein Thema. Kontakauslöser mittels I-PAC 4 (http://www.arcadeshop.de/Encoder-I-PAC-4_336.html) abfangen - auch noch anchvollziehbar. Nur so einen Chip zu programmieren - geschweige denn so zu verbauen dass ich damit auch etwas anfangen kann... derzeit unvorstellbar für mich. Ich meine OK, man kann sich ja in alles einarbeiten aber für so ein Projekt erst mal über Monate Elektrotechnik und Assembler auf professioneller Ebene zu lernen, das übertseigt meine Leistungsfähigkeit.
EDIT:
Habe eben nochmal versucht das ganze zu verstehen. ISt es richtig dass ich in den Chip Funktionen Programmieren kann, welche dann den jeweiligen Pin (Ausgang) mit Spannung für eine LED versorgt? Ergo ich habe in der Mittel des Spielfeldes 5 LEDs welche dann im Kreis rotierend aufleuchten sollen. Über die serielle Schnittstelle rufe ich dann diese Funktion auf und diese übernimmt im Chip die Ansteurung? So in etwas stelle ich mir das ganze vor...
[ Diese Nachricht wurde geändert von: sphiryx am 9 Aug 2010 22:46 ]
|
BID = 706860
hajos118 Schreibmaschine
Beiträge: 2453 Wohnort: Untermaiselstein
|
Also ein µC (Mikrokontroller) ist frei programmierbar - jede Funktion kann also im Rahmen seiner Möglichkeiten programmiert werden. Es gibt jede Menge fertige Funktionen, welche er schon von sich aus kann - z.B. Kommunikation über die serielle Schnittstelle. Üblicherweise werden komplexere Aufgaben von "nicht - Freaks" in "C" programmiert - hardwarenah genug, um noch zu verstehen was ide bits so treiben und abstrakt genug, um sich auf die Funktionen konzentrieren zu können.
Beispiel:
In deinem Flipper stößt die Kugel an einen Schalter, welcher an einen Eingangspin des µC angeschlossen ist.
Im Programm wird der Pin abgefragt, ob Schalter offen oder geschlossen ist. Wenn geschlossen, dann sende "Schalter 1 aktiv" über ser. Schnittstelle an wen auch immer. Gleichzeitig kann er an einem Ausgangspin noch einen Impuls abgeben, um z.B. einen Bumper anzusteuern.
Alles eine Frage des programms im µC.
Oder anders formuliert: Alles, was Du mit Schaltern und Relaiskarten vom PC aus machen kannst, kannst Du auch mit 1 oder mehreren µC (+ Periphereie) erledigen.
_________________
Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Wer einen Fehler findet, darf ihn behalten!
|
BID = 706963
clembra Inventar
Beiträge: 5404 Wohnort: Weeze / Niederrhein
|
Möchtest du jetzt den kompletten Flipper im µC abbilden? Bisher war nur die Rede vom Display und das ist meiner Meinung nach auch bei den Dimensionen genug für einen Controller, speziell wenn es sich um den ersten solchen handelt. Diesem Controller würde ich eine eigene RS232-Schnittstelle zum PC zur Verfügung stellen und auch nur hierfür benutzen.
Da du einen PC benutzen möchtest sollte dieser auch die Berechnungen durchführen. Einzelne Funktionen kann man durchaus auch mittels µC erledigen lassen (wie Aktionsbeleuchtung oder die Tasteingänge), hierfür sollte aber ein zweiter mit eigener PC-Anbindung ran. Wie bereits gesagt eignen sich für diese Anbindung auch so ziemlich alle erhältlichen USB-Seriell-Adapter (was lange nicht für alle Geräte gilt)
_________________
Reboot oder be root, das ist hier die Frage.
|
BID = 707726
sphiryx Gerade angekommen
Beiträge: 4 Wohnort: Düren
|
Nein nein, ich hatte nicht vor ALLES damit anzusteuern. Habe soeben eine bereits konzipierte Schaltung inkl. Steuercode gefunden: http://tools.mcselec.com/GIFdecode/index.php
Leider ist der Quellcode ziemlich miserabel kommentiert, weshalb ich da nicht wirklich durchblicke welche Anweisung was macht. Was ich zumindest erkennenkann ist, dass ich pro LED-Block einen AT Mega und ein Schieberegister (ist das eins?) benötige. Bei einer Matrix von 2 Reihen und 5 Spalten benötige ich also 10 Schieberegister und 10 AT Mega Chips? Und vor allem: Wie soll ich diese Chips über den Seriellen Port dann ansteuern? Das Programm sieht eine externe Dateneinspeisung nicht vor sondern wird mit dieser Animation fertig kompiliert gefüttert. Das wäre so ziemlich der letzte Knackpunkt. Hätteich hier eine komplette Schaltung zum Nachlöten inkl. Beispiele zur Sendung von Daten über den Com-Port, wäre die größte Hürde geschafft... habe immer mehr das Gefühl ohne richtige E-Kenntnisse hier nicht weiter zu kommen
[ Diese Nachricht wurde geändert von: sphiryx am 14 Aug 2010 14:38 ]
|
BID = 707731
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Hallo,
Es sind eigentlich weniger E-Kenntnisse, als solche der Programmierung.
Dir wird nichts übrigbleiben, als strukturiert zu lernen, wie man sowas macht.
Mit fremdem Code und ohne Ahnung wird man nicht glücklich.
_________________
|
BID = 707732
clembra Inventar
Beiträge: 5404 Wohnort: Weeze / Niederrhein
|
Offtopic :
|
Zitat :
DonComi hat am 14 Aug 2010 14:52 geschrieben :
|
Mit fremdem Code und ohne Ahnung wird man nicht glücklich.
|
Das liegt am Code. Manchmal wird man auch mit fremdem Code und mit Ahnung nicht glücklich |
_________________
Reboot oder be root, das ist hier die Frage.
|
BID = 707734
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Offtopic :
|
Stimmt
Vor allem, wenn ein Spezialist statt length lenght schreibt |
_________________
|
BID = 707737
sphiryx Gerade angekommen
Beiträge: 4 Wohnort: Düren
|
Ja gut, aber ich muss doch irgendwo zumindest ansetzen können... wenn man etwas lernen möchte braucht man Beispiele. Es bringt ja auch nicht wenn ich Vokabeln einer Sprache lerne ohne die Grammatik zu kennen. Ich kann sowieso nichts wirklich begreifen wenn ich es nicht bildlich erklärt bekomme. Zeilenweise Text ohne konkrete Beispiele geht bei mir links rein und rechts raus. ALs ich damals Postfix-Konfigurationen mir beigebracht habe, gab es auch jede Menge Tutorials mit Fallbeispielen und erklärten Zuammenhängen. Wo soll ich also ansetzen? Funktion der Controller? Ansteuerung des Com-Ports? Ohne einen guten Einstieg bringt mir das alles nicht wirklich etwas und ohne Tutorials für Einsteiger ist das ganze Vorhaben erst recht eine Totgeburt.
[ Diese Nachricht wurde geändert von: sphiryx am 14 Aug 2010 15:28 ]
|
BID = 707745
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Naja, entscheide dich für einen Mikrocontroller (z.B. ATmega16) und lerne anhand dieses Controllers C.
Wenn du eine LED anschalten willst, musst du halt suchen, wie du erstens die LED mit dem Controller verbindest und zweitens, wie du speziell in C diesen Pin kontrollieren kannst.
Dann schaust du dir an, wie du die interne serielle Schnittstelle (UART) des Controllers beschalten und softwaremäßig initialisieren musst, um damit Datagramme, in diesem Fall einzelne Bytes, zu senden. Aus C heraus ist dann sowas möglich:
uart_puts("Wird sind gnampf\n");
Auf einem geöffneten Terminal am Rechner erscheint dann diese Textzeile.
Und so lernst du nacheinander alle Dinge, die für einen Flipper nötig sind.
Die Sprache C lernst du nebenbei automatisch mit, denn du wirst Schleifen, Bedingungen, etc. benötigen; also die Syntax lernen.
Arbeite dich also stückweise auf dein "großes Ziel" hin, nämlich dein Spiel.
_________________
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag heute wurden bisher 3 Beiträge verfasst © x sparkkelsputz Besucher : 182416710 Heute : 1207 Gestern : 7490 Online : 410 28.11.2024 10:02 7 Besucher in den letzten 60 Sekunden alle 8.57 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0414810180664
|