Zum Inhalt springen

Arduino Pinball Controller


Black Knight

Empfohlene Beiträge

24 minutes ago, Snux said:

"real life" sieht man fast nichts.  Ich wurde sagen "lass es so".

OK, alles weitere wäre sowieso nur noch SW, das kann man also immer noch machen.

Vielleicht baue ich irgendwann ja sowieso noch eine stufenlose Helligkeitseinstellung für die Lampen ein, damit wäre das Glimmen dann auch erledigt.

Man sieht kaum einen Unterschied zwischen 'Dim Inserts' yes und no, ist das tatsächlich so oder sieht das nur auf dem Video so aus?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 1,6Tsd
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

  • Black Knight

    642

  • bontango

    438

  • Volley

    100

  • jabdoa

    97

Top-Benutzer in diesem Thema

Veröffentlichte Bilder

vor 19 Minuten schrieb Black Knight:

ist das tatsächlich so oder sieht das nur auf dem Video so aus?

Jein.  Also, die weisse lampen sind keine Matrix-lampen.  Die sind RGB, kontrolliert mit 'ne Fadecandy.  Die andere (meistens blau und rot) sind noch auf der Matrix.  Es ist merkbar "in real life" das sie nicht so hell sind, aber nicht viel.

vor 23 Minuten schrieb Black Knight:

Vielleicht baue ich irgendwann ja sowieso noch eine stufenlose Helligkeitseinstellung für die Lampen ein

Das waere schoen, aber "irgendwann" ist in Ordnung :)  Vielleicht kann ich das uber MPF/USB kontrollieren?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 9 Minuten schrieb Snux:

Das waere schoen, aber "irgendwann" ist in Ordnung :)  Vielleicht kann ich das uber MPF/USB kontrollieren? 

Helligkeitswerte können wir auf jeden Fall senden. Fades können wir auch in MPF. Macht beides aber hauptsächlich bei RGB LEDs Sinn. Oder wenn man LEDs hat die nicht von sich aus Glühbirnen emulieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 34 Minuten schrieb jabdoa:

Helligkeitswerte können wir auf jeden Fall senden. Fades können wir auch in MPF. Macht beides aber hauptsächlich bei RGB LEDs Sinn. Oder wenn man LEDs hat die nicht von sich aus Glühbirnen emulieren.

Ich glaube fuer Matrix lampen reicht "one brightness for all lamps". Pro-lampe macht kein Sinn (meine ich) und ich glaube wird mit APC sowieso nicht machbar. Lohnt sich nicht.

Switch test in F14 ist OK. Morgen kommen die Spulen.....

Link zu diesem Kommentar
Auf anderen Seiten teilen

Helligkeitswerte pro Lampe wären ein Riesenaufwand, aber global für alle Lampen sollte kein Problem sein. Ist halt ein ziemliches Interruptgefrickel - mal sehen, ob ich mich da nach meinem Urlaub zu aufraffen kann.

19 minutes ago, Snux said:

Switch test in F14 ist OK. Morgen kommen die Spulen.....

Die werden schon klappen. MPF und Displays würden mich interessieren, aber das wirst du kaum testen, da du ja ein DMD benutzt, oder?

Sound wird auch noch interessant...

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 16 Stunden schrieb Black Knight:

aber das wirst du kaum testen, da du ja ein DMD benutzt, oder?

Hmm.  Bin nicht sicher.  Vorher waren segment displays kein Option.  Aber jetzt.... Vielleicht segment displays und dann mini-RGB-DMD Apron displays.  Hmm.

Ich habe MPF und displays getestet.  Gibt's im Moment zwei Probleme, so wie es aussieht.  Ich glaube beide sind was fuer @jabdoa

1 - Es gibt irgendeine "index" fehler.  F-14 hat 4 displays.  1 and 2 sind alpha. 3 und 4 sind rein numerisch.  Wenn ich definiere die als 0 bis 3, es gibt ein Fehler mit display '0'....
 

2019-07-21 10:48:10,712 : ERROR : asyncio : Exception in callback EventManager._async_handler_done(<QueuedEvent>)(<Task finishe...ror above.',)>) at c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\events.py:96
handle: <Handle EventManager._async_handler_done(<QueuedEvent>)(<Task finishe...ror above.',)>) at c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\events.py:96>
Traceback (most recent call last):
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\devices\segment_display.py", line 52, in _initialize
    self.config['platform_settings'])
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\platforms\lisy\lisy.py", line 652, in configure_segment_display
    yield from display.initialize()
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\platforms\lisy\lisy.py", line 158, in initialize
    self._set_text("")
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\platforms\lisy\lisy.py", line 189, in _set_text
    formatted_text = self._format_text(text)
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\platforms\lisy\lisy.py", line 182, in _format_text
    raise AssertionError("Invalid type {}".format(self._type_of_display))
AssertionError: Invalid type 0

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "c:\users\mark\appdata\local\programs\python\python36\lib\asyncio\events.py", line 145, in _run
    self._callback(*self._args)
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\events.py", line 99, in _async_handler_done
    future.result()
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\device_manager.py", line 117, in _load_device_modules
    yield from self.initialize_devices()
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\device_manager.py", line 214, in initialize_devices
    yield from collection[device_name].device_added_system_wide()
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\system_wide_device.py", line 17, in device_added_system_wide
    yield from self._initialize()
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\devices\segment_display.py", line 55, in _initialize
    "See error above.".format(self.name)) from e
AssertionError: Error in platform while configuring segment display player1_display. See error above.

Wenn ich 1..4 gebe, kommt was anderes....

AssertionError: Invalid display number 4. Hardware only supports 4 displays (indexed with 0)

So im Moment kann ich nur 3 Displays nutzen.  1 bis 3.

Zweite problem.... alphanumerisch geht nicht richtig.  MPF code...

segment_display_player:
   mode_attract_started:
      player1_display:
         text: "1111111"
      player2_display:
         text: "2222222"
      player3_display:
         text: "3333333"

Kommt folgendes...  display 3 ist OK, 1 und 2 nicht ganz so....

IMG_20190721_105645.jpg.737d030b52d7f66500660421e22be51d.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

34 minutes ago, Snux said:

Wenn ich definiere die als 0 bis 3, es gibt ein Fehler mit display '0'....

Display 0 ist immer das Credit, da die F-14 keins hat, fängt er bei dir mit Nummer 1 an.

 

34 minutes ago, Snux said:

Hardware only supports 4 displays (indexed with 0)

Da fängt er wohl trotzdem bei 0 an zu zählen, was bei Geräten ohne Credit aber nicht stimmt.

Wenn du mit dem Testmodus vom BaseCode den Spulentest machen möchtest, dann denk dran die Variablen an deine HW anzupassen (steht unter 'Software Preparation' im Wiki). Wenn die Nummer des A/C Relais nicht stimmt können da nämlich ganz komische Sachen passieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 34 Minuten schrieb Snux:

1 - Es gibt irgendeine "index" fehler.  F-14 hat 4 displays.  1 and 2 sind alpha. 3 und 4 sind rein numerisch.  Wenn ich definiere die als 0 bis 3, es gibt ein Fehler mit display '0'....
 


2019-07-21 10:48:10,712 : ERROR : asyncio : Exception in callback EventManager._async_handler_done(<QueuedEvent>)(<Task finishe...ror above.',)>) at c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\events.py:96
handle: <Handle EventManager._async_handler_done(<QueuedEvent>)(<Task finishe...ror above.',)>) at c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\events.py:96>
Traceback (most recent call last):
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\devices\segment_display.py", line 52, in _initialize
    self.config['platform_settings'])
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\platforms\lisy\lisy.py", line 652, in configure_segment_display
    yield from display.initialize()
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\platforms\lisy\lisy.py", line 158, in initialize
    self._set_text("")
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\platforms\lisy\lisy.py", line 189, in _set_text
    formatted_text = self._format_text(text)
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\platforms\lisy\lisy.py", line 182, in _format_text
    raise AssertionError("Invalid type {}".format(self._type_of_display))
AssertionError: Invalid type 0

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "c:\users\mark\appdata\local\programs\python\python36\lib\asyncio\events.py", line 145, in _run
    self._callback(*self._args)
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\events.py", line 99, in _async_handler_done
    future.result()
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\device_manager.py", line 117, in _load_device_modules
    yield from self.initialize_devices()
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\device_manager.py", line 214, in initialize_devices
    yield from collection[device_name].device_added_system_wide()
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\system_wide_device.py", line 17, in device_added_system_wide
    yield from self._initialize()
  File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\devices\segment_display.py", line 55, in _initialize
    "See error above.".format(self.name)) from e
AssertionError: Error in platform while configuring segment display player1_display. See error above.

Der Fehler kommt APC für Display 0 den Type "0" zurück gibt was laut Dokumentation ungültig ist: http://docs.missionpinball.org/en/dev/hardware/lisy/protocol.html#get-segment-display-details-0x07. Normalerweise ist alles mit 0 indexiert. Wenn das hier anders ist dann müssten wir das anders handeln.

 

vor 37 Minuten schrieb Snux:

Zweite problem.... alphanumerisch geht nicht richtig.  MPF code...


segment_display_player:
   mode_attract_started:
      player1_display:
         text: "1111111"
      player2_display:
         text: "2222222"
      player3_display:
         text: "3333333"

Ich gucke gleich mal die Mappings dazu an. Möglicherweise sind die falsch.

 

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

Scheisse, ich habe etwas kaputt gemacht.  Auf Englisch jetzt....

I was mounting the display, and something shorted on the back against a screw I didn't see.  Sparks :(

Now on power up I see the following, the top line should show "SD CARD FOUND"

I don't know if it's APC or display that needs repairing....

IMG_20190721_114538.jpg.7a8d521872a12e6846d406c470f3cf31.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 15 Minuten schrieb Black Knight:
vor 51 Minuten schrieb Snux:

Wenn ich definiere die als 0 bis 3, es gibt ein Fehler mit display '0'....

Display 0 ist immer das Credit, da die F-14 keins hat, fängt er bei dir mit Nummer 1 an.

Für MPF müsste APC da dann 5 zurückgeben. 0 ist dann ja vom Type her ungültig also kann man es nicht nutzen. Den Fehler kann ich noch etwas besser machen.

 

Das Mapping und Encoding sieht für mich gut aus:

>>> mpf.core.segment_mappings.fourteen_segments[50]
<a=1 b=1 c=0 char=2 d=1 dp=0 e=1 f=0 g1=1 g2=1 h=0 j=0 k=0 l=0 m=0 n=0>

>>> print("".join(" {0:b}".format(b) for b in(mpf.core.segment_mappings.fourteen_segments[50].get_pinmame_encoding())))
 1011011 1000

image.png.dc7dfdcbbcdb58d9e963768e507cd75f.png

 

Oder übersehe ich da was?

 

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

3 hours ago, jabdoa said:

kommt APC für Display 0 den Type "0" zurück gibt was laut Dokumentation ungültig ist:

Der APC gibt 0 zurück, da es das Display nicht gibt und es daher ungültig ist - so hatte ich das verstanden.

3 hours ago, Snux said:

I don't know if it's APC or display that needs repairing....

The short has happened on the display board, right?

As long as no overvoltage is present, the APC display port shouldn't get damaged even when shorted. So my first bet would be on the display board. Can you test it somewhere without the APC?

3 hours ago, jabdoa said:

Oder übersehe ich da was? 

Nö, aber ich hatte euch so verstanden als würden wir mein Mapping verwenden und habe es auch so eingebaut.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 6 Minuten schrieb Black Knight:

Nö, aber ich hatte euch so verstanden als würden wir mein Mapping verwenden und habe es auch so eingebaut. 

Wie ist denn dein Mapping? Mir ist das völlig egal. Ich habe ein Mapping von ASCII nach Segmente und wie ich dann daraus Bits mache ich mit egal.

vor 7 Minuten schrieb Black Knight:

Der APC gibt 0 zurück, da es das Display nicht gibt und es daher ungültig ist - so hatte ich das verstanden. 

Das passt ja auch. Nur über die Gesamtzahl der Displays müssen wir uns dann einig werden. MPF zählt aktuell alle mit. Egal ob sie invalid sind oder nicht.

 

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 16 Minuten schrieb Black Knight:

So my first bet would be on the display board.

Hast du (glucklicherweise) recht!  Ich habe meine alte Sys11 MPU rausgefischt, selber Problem.  Das ist einfacher zu reparieren und ich habe ziemlich viel Ersatzteile....

Link zu diesem Kommentar
Auf anderen Seiten teilen

38 minutes ago, jabdoa said:

Wie ist denn dein Mapping? 

Bin gerade am Flughafen und daher etwas eingeschränkt. Ich habe mein Mapping vor einiger Zeit mal gepostet.

39 minutes ago, jabdoa said:

Nur über die Gesamtzahl der Displays müssen wir uns dann einig werden.

Ja, ich zähle zur Zeit nur gültige Displays. Ich kann das ändern wenn ihr wollt, aber frühestens in zwei Wochen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Jan,

mein Mapping ist d, c, b, a, e, f, g, Komma für's erste Byte und j, h, m, k, p, r , Punkt, n für's zweite. Wir hatten dazu eine Diskussion am 5. Juli. Da hatte es auch für mich so geklungen, als wolltet ihr mein Mapping verwenden.

Frank

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 6 Minuten schrieb Black Knight:

Hast du schon irgendwas repariert?

Teilweise.  4 segments fehlen noch.  Habe 5 ICs getauscht, jetzt sind mindestens 1 von 14 alpha-digits defekt.  Lohnt sich nicht weiter zu reparieren, hab' 'ne neue bestellt, kommt irgendwann naechste Woche.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hast du die Sicherungen für die Hochspannung noch drin? Ansonsten kann ich mir gar nicht vorstellen, dass der Schaden so groß ist. Die Transistoren des Spaltentreibers könnten bei Kurzschluss sterben, aber der Rest sollte es eigentlich überstehen.

Mit einem Logiktester kann man das Zeug ja eigentlich gut prüfen. Kannst du die Typen der ICs erkennen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das kann ich nur auf Englisch :)

Yup, no high voltage.  How so much damage I don't know.  Originally digit select was the problem because all digits showed the same.  I replaced HCT244s and 240s, plus a couple of ULN2803.  That fixed most of the issues including some segment drives.  Now from the logic side everything is good, I can see with my probe.

The problem left is that I think one of the 14 alpha digits has some kind of internal issue.  I have 3 segments that won't light.  The same segment is bussed across all of them and even if I drive the segment manually (with the driver logic ICs removed) it doesn't work.  I have no way to tell which of the 14 is faulty without removing them all, and that is more work than I have time for.  I put it away and maybe look at it again in the cold winter months :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

On 7/26/2019 at 10:12 AM, Snux said:

I replaced HCT244s and 240s

Mich würde interessieren wozu sie die brauchen. Sind das bei dir Common Anode oder Cathode Displays?

Wir hatten vor einiger Zeit mal ein ähnliches Display  gemacht.

Allerdings brauchten die damaligen LED Elemente noch zu viel Strom, um sie direkt mit einem Lokiktreiber anzusteuern. Vielleicht ist das ja heute anders.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe ein bisschen Zeit gehabt, mit meine MPF F-14 code zu spielen.  Mit P-ROC und mein "Snux" board hat alles geklappt.  Mit APC habe ich folgendes gesehen.....

Lampen - gut. 

Spulen - die "normalen" sind OK

Spulen - A/C funktioniert nicht richtig.  Das ist MPF, oder mein config.  Ich muss weiter testen.

Spulen - Special Solenoids.  Soll ich die switches und ein hardware-rule in MPF definieren?  Oder soll die "einfach klappen"?

Spulen - linke Flipper klappt nicht.  Rechte ist OK.  Wahrscheinlich ein Lot-fehler glaube ich.

Switches - ich glaube die sind OK.  Ich habe sowieso ein paar dreckige die ich austauschen muss. 

Aber ueberall ein gute Anfang wurde ich sagen.

And sorry for the bad German writing :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

7 hours ago, Snux said:

Aber schematic habe ich

Vielen Dank.

Deren Displays scheinen tatsächlich viel weniger Strom zu brauchen, allerdings sind sie auch viel dunkler. Ich wollte die damals hell und rot haben - macht die F-14 gleich noch etwas aggressiver.

31 minutes ago, Snux said:

Soll ich die switches und ein hardware-rule in MPF definieren?

Ja, das muss als HW-rule laufen. Das habe ich auch schon erfolgreich getestet.

32 minutes ago, Snux said:

Wahrscheinlich ein Lot-fehler glaube ich

Glaube ich nicht. Versuch mal Spule 25 als Flipper-Relais zu aktivieren.

35 minutes ago, Snux said:

And sorry for the bad German writing

Wieso? Du bist ziemlich gut. Ich sehe nur ein paar Fehler und fast alles bei Artikeln und Groß/Kleinschreibung - also typische Fallen. Letzteres lassen im WhatsApp Zeitalter auch viele Deutsche mittlerweile weg.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@jabdoaich werde jetzt auch mal wieder mit dem MPFServer auf meiner Seite weitermachen, habe jemanden der mit LISY35 und MPF etwas machen will.

Generell stellt sich mir die Frage wie wir die APi Versionen handeln. Hast Du in MPF ne feste Zuordnung? Also 0.52 braucht API 0.08 und 0.53 braucht 0.09

oder kann 0.53 auch mit API 0.08 arbeiten?

Vorschlag: für die API Diskussionen sollten wir entweder hier oder in der mpf google group nen neuen Thread aufmachen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gerade eben schrieb bontango:

oder kann 0.53 auch mit API 0.08 arbeiten?

0.53/dev ist abwärtskompatibel. Wenn du Version 0.0.8 zurück gibst verwendet er die alten Commands.

Btw ich habe das Segment Display Format wie besprochen angepasst.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

×
×
  • Neu erstellen...

Wichtige Information

Datenschutzerklärung und Registrierungsbedingungen