Zum Inhalt springen

Flash Wiederbelebung


LeFreak76

Empfohlene Beiträge

Hallo Frank,

wenigstens noch ein kurzes Update heute. Mein Display läuft nun, und auch Player 3 & 4 sind nun korrekt. Beim Zählen der Segmente bin ich darauf hereingefallen, dass a&b und e&f jeweils doppelt an einem Ausgang sind, dadurch war die Anzahl der Segmente nicht zu 100% stimmig. Die Ursache für meine Falschverdrahtung lag an der Beschriftung im Schaltbild.

Am 25.7.2020 um 12:43 schrieb Black Knight:

Ähnlich sieht es mit dem APC-Stecker 'Display Segments 1' (1J5) aus. Dieser muss am Display an 'NUMSEG1', wobei die Belegung ist hier leider nicht so eindeutig ist. Du musst dich bei den APC-Namen nach den Segmentnamen und nicht nach den BCD-Namen richten. Diese Segmentnamen sind immer klein geschrieben und stehen direkt hinter Disp. Für Pin 1 mit dem Namen 'Disp a2/BCD D1' wäre der Segmentname also 'a2' und dieser Pin muss am Display an INA, dann 'b2' an INB u.s.w. bis 'com2', der an INDOT muss.

Dein Hinweis die a2 statt der BCD D1 zu nutzen war leider nicht ganz richtig. Entscheidend ist hier die Bezeichnung an der Leitung zum Anschluss in diesem Fall also 2com (bzw.DOT). Somit ist es dann eine 1:1 Verkabelung und Pin1 1J5 geht an Pin1 vom Displayboard.

Nun muss ich nur noch die Unterbrechung vom 2ten Segment (P1 und P3)  finden. Ohmsch sieht alles korrekt aus. Eventuell hat ein IRF7316 oder der 4071 einen mit.
Wenn das alles läuft dann versuche ich mich nochmal an LISY ich finde es über das Webinterface leichter meine Switches und Lamps zu testen.

Schönen Abend noch

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 61
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

  • LeFreak76

    31

  • Black Knight

    21

  • bontango

    6

  • Volley

    4

Top-Benutzer in diesem Thema

Veröffentlichte Bilder

Ups, du hast Recht die Pinbeschriftung stimmt nicht.

Da habe ich im Schaltplan wohl irgendwann mal den Stecker gedreht ohne die Beschriftung anzupassen.

Wird korrigiert. Danke für den Hinweis.

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nachdem nun Pin 4 von Q2 auch leitend verlötet wurde, erstrahlt das Display in voller Pracht!

Nun muss ich nur LISY zum Laufen bekommen und ich kann mich an die Aufbereitung der Switches und Inserts machen. LISY bemängelt im Debug über Putty Aktuell noch, dass es/sie die Playboy Config nicht findet. Werde morgen mal die Doku studieren und die Stromversorgung des Pi über Vin realisieren. 
schönen Abend noch

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo und ein schönes Wochenende!

image0.jpeg.a256f92ae2182dd894264dc2fae01e0c.jpeg

Stück für Stück komme ich weiter. Und stelle fest, dass APC, Display und LISY_Mini laufen,und sich unterhalten.
Der nächste Schritt für mich ist die Prüfung der Switches und Inserts im Playfield und dann die Solenoids wobei
ich dort noch böse Überraschungen fürchte, da die Sicherung der Spannung sehr dunkel war (damals aber noch mit dem
Williams Board). - Die Spulen werde ich nun mal mittels Masse Kabel manuell testen.

Wie teste ich nun aber am Besten die Switches und Lampen?

Eigentlich hatte ich gehofft das ich den Weg aus der LISY Dokumentation gehen kann und im LISY Control über den Webbrowser sehe was gedrückt wird,

bzw Lichter anschalten kann.

954708480_Screenshot-01_08.202014_47_19.png.40245964e0f2254b78c50b88bad45c78.png361283143_Screenshot-01_08.202014_47_50.png.d842ab5828b4ef4a9d623193642e7f68.png

Aber im Lisy Control (Switch 6&8 ON) bekomme ich nur eine Seite um die PICs für LISY35 zu flashen.
@bontangoKann es sein das diese Übersicht nur mit dem "echten" LISY möglich ist aber nicht mit LISY Mini und APC?
Und ist es überhaupt schon möglich via LISY_Mini die Switches auf 0-1-1 (Dezimal 6) zu setzen? Das passende ROM ist in LISY enthalten und SYS4 und Flash wird angezeigt.
Und auch wenn der Ton eine andere Baustelle wird, kann ich hier schon das originale ROM für Grundfunktionen nutzen?

Alternativ bleibt der Weg über APC, leider ist mir hier aber nicht klar wie ich das Menü bediene bzw was ich darüber überhaupt erkennen kann.
Ich komme mit dem Service Schalter und dem Taster in das Game Settings bzw System Settings, kann dann aber nichts umstellen bzw Auswählen.
Ich vermnute das diese Auswahlen dann über "echte" Knöpfe (Player Start etc.) gewählt werden.
@Black Knight Gibt es eine Anleitung zur Menü bedienung? Ich befürchte das ich mit einem falsch belegten Switch Stecker (system 4 original) nicht weiterkomme
und mir eine "zusätzliche" Tastatur bauen muss um die richtigen Matrix Leitungen zu verbinden.

Die letzte Möglichkeit wäre es nun mit einem MPF Laptop die Steuerung zu übernehmen. Aber auch dort bin ich mir nicht sicher ob ich alles Verstanden habe.

ZusatzFrage Derzeit betreibe ich Sowohl den APC mit Display als auch LISY mit einem PC Netzteil. Da ich dem "Williams Powersupply" nicht voll traue und es nur für die Solenoids
nutzen möchte, ist eine Challenge noch die Lamp B+ Spannung. Genau hier bin ich aber verwirrt. Alle Lampen im Flipper (GI und Insert) sind identisch.
die GI leuchten mit 6,3 V aber wenn sie angesteuert werden kommt die B+ (18V) Spannung ins Spiel. Laut Schaltbild schaltet der IRF7316 die 18V direkt durch
somit müsste die Lampenspannung dann also "getaktet" sein. Kann ich hier auch nur 12V an die B+ Anschliessen? Oder ist das dann zu wenig?

Vielen Dank für eure Unterstützung

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 30 Minuten schrieb LeFreak76:

Kann es sein das diese Übersicht nur mit dem "echten" LISY möglich ist aber nicht mit LISY Mini und APC?

LISY_Control gibt es auch bei LISY_Mini, habs gerade mal probiert, läuft mit 6 & 8 auf ON bei mir.

Alternativ kannst Du mit 7 & 8 auf ON den Autostart disablen, dich einloggen und LISYcontrol von Hand starten

( beim ersten Aufruf noch den internen Webserver mit "./start_nginx" starten )

pi@lisy(ro):~$ ./start_nginx
pi@lisy(ro):~$ lisy_api_control

 

vor 34 Minuten schrieb LeFreak76:

kann ich hier schon das originale ROM für Grundfunktionen nutzen?

Ja, sollte eigentlich gehen, zumindest sehe ich beim Schreibtischtest wie er das richtige rom lädt.

 

grafik.png

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 23 Stunden schrieb LeFreak76:

Gibt es eine Anleitung zur Menü bedienung?

Ja, die gibt es hier, aber das Prinzip ist ähnlich wie bei Williams, d.h. du brauchst den 'Game Start' Knopf, um die Werte zu ändern b.z.w. etwas zu bestätigen. Die grundlegende Funktion der Switch-Matrix sollte also gegeben sein.

vor 23 Stunden schrieb LeFreak76:

Ich befürchte das ich mit einem falsch belegten Switch Stecker (system 4 original) nicht weiterkomme

Wieso falsch belegter Stecker? Die Switch-Matrix-Stecker 2J2 und 2J3 sollten beim APC direkt passen.

vor 23 Stunden schrieb LeFreak76:

Die letzte Möglichkeit wäre es nun mit einem MPF Laptop die Steuerung zu übernehmen.

Du kannst den APC auch komplett über USB steuern, so wie der Lisy_Mini das auch macht. Dazu müsstest du ein Terminalprogramm wie Hterm installieren und die Befehle gemäß der Lisy-API direkt rüber schicken.

vor 23 Stunden schrieb LeFreak76:

Da ich dem "Williams Powersupply" nicht voll traue und es nur für die Solenoids nutzen möchte

Wenn dein Original Powerboard noch OK ist würde ich es auch nutzen, zumindest zu Beginn. Sonst hast du bei Problemen einen Unsicherheitsfaktor mehr.

vor 23 Stunden schrieb LeFreak76:

Laut Schaltbild schaltet der IRF7316 die 18V direkt durch somit müsste die Lampenspannung dann also "getaktet" sein. Kann ich hier auch nur 12V an die B+ Anschliessen? Oder ist das dann zu wenig?

Genau, das muss immer getaktet werden, sonst brennen dir die Lämpchen durch. Wie der optische Eindruck bei einer Lampenspannung von 12V ist kann ich allerdings nicht sagen, das müsste man ausprobieren.

Es gibt noch ein weiteres Problem: beim APC werden die 18V auch genutzt, um die Gatespannung für die Spulentreiber zu erzeugen. Wenn du die auf 12V reduzierst müsstest du die Spannungsteiler vor den Schalttransistoren anpassen, da die sonst nicht mehr richtig durchschalten und heiss werden könnten. Solltest du das also wirklich tun wollen dann müsste ich dir die Nummern und neuen Werte der entsprechenden Widerstände raussuchen.

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich verzweifle mal wieder, und ich denke nicht das es an den Temperaturen liegt da es bereits letztes WE ebenso war...
Ich weiss immerhin nun das es bei meinem Flipper massive Probleme mit den Connectoren gibt welche Backbox und Playfield verbinden. Ausserdem sind die Switches teilweise mit 600 Ohm sehr marrode. Ich habe nun also angefangen alle Switches auszubauen und wieder flott zu machen. Aber leider habe ich es immernoch nicht geschafft einen Switchtest via LISY hinzubekommen. Das Webinterface welches mit 6&8 auf ON funktioniert zeigt mir die Switch Matrix an. Das Drücken (bzw Brücken) eines Schalters ändert aber nicht den Zustand. Wie durch ein Wunder hat es zweimal geklappt zumindest wurden zwei felder Rot. Aber nicht wie erwartet so dass er beim Reload direkt eine Änderung anzeigt sondern eher also ob dort ein massives Delay besteht. Also hatte ich nun erstmal versucht mit dem "Pure" APC zu testen. Und bin ums verrecken nicht in den TEST MODE gekommen...

Nachdem ich den Kurzschluss auf meiner Test DIAG Steuerung entfernt hatte komme ich auch in den Test und er funktioniert. Also komme ich nun weiter. (Böse Falle... )
Nun werde ich das Board einsetzen und mal sehen was die Switches sagen. Danach kommen die Lampen dran. Ersatzteile für die  Mechanik die ich reparieren muss sind nun auch im Zulauf.

Aber wie bekomme ich LISY dazu das Spiel zu starten. Er zeigt nur P1: SYS4 P2: Flash P3: 52 OOFF P4: 526 19 an und kommt dann nicht weiter. Ich habe es mit Credit Einwerfen und Start versucht. Ich vermute das 52 OOFF auf einen Fehler hindeutet. Ich hatte die Hoffnung das ich sobald die Switches funktionieren ein Spiel "simulieren" kann, und auch darüber die Lampen ansteuern könnte. (Auch wenn die Solenoids noch nicht angeschlossen sind). Aber das klappt bisher nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb LeFreak76:

komme ich auch in den Test und er funktioniert

Du bist also jetzt im Testmode des Basecode, korrekt?

Der Basecode hat einen simplen Attract-Mode, in dem er einfach nur immer wieder alle Lampen von 1 bis 64 durchläuft. Dann scrollt im Display 'APC Base Code' u.s.w. durch und alle 250ms wird zur nächsten Lampe geschaltet. Wenn du also diese Laufschrift im Display siehst aber keine Lampe funktioniert, dann stimmt irgendwas mit deinen Lampen nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...

Hah, gestern war es endlich soweit und ich konnte zum ersten Mal seit 25 Jahren wieder die Inserts blinken sehen.🥳

Die letzten Wochen habe ich damit verbracht die Flipper Units zu erneuern und das Netzteil zu überarbeiten. Damit war es mir nun auch möglich dem original Netzteil zu trauen und alles darüber zu versorgen. Zusätzlich haber ich noch die angeratenen Williams Modifikationen durchgeführt und vor die Gleichrichter für B+ und Solenoids Sicherungen eingefügt. Die Funktion ALL LAMPS im Testmode zeigte dann auch nochmal deutlich das normale #44 Birnen sehr viel ziehen. Nachdem ich nun noch selbige durch LEDs getauscht hatte und die Vorasicherung erneuerte, konnte ich die Leistung im Attract Mode von ca 140W auf 73W senken. Leider laufen die Coils bisher nur im Test Mode da ich es nicht schaffte ein Spiel zu starten. Ich bin mir inzwischen sicher das es daran liegt das im Tutorial (Rollergames) der Outhole Switch Nr.9 ist bei Flash aber Nr.48. Nun stehe ich also vor zwei "Problemen".

1. @Black Knight Ich möchte nun entsprechend der Anleitung das Tutorial auf meine Zwecke anpassen das scheint auch alles recht logisch und machbar, aber ich habe Hemmungen einfach mein Laptop an den Arduino DUE zusätzlich anzuhängen. Sollte zu dem Zeitpunkt das Netzteil vom Flipper aus sein, fürchte ich, dass ich über den Laptop USB Port die Elektronik auf dem APC Board mit versorge und dabei irgendwas mehr als 500mA zieht. Sollte ich den Arduino also besser ausbauen? Das bedeutet dann aber durch try and error sehr viel Aufwand.

2. @bontangoNachdem nun alles zusammen im Gehäuse läuft konnte ich natürlich nicht widerstehen und auch den USB Modus auszuwählen. Hier scheint noch die Challenge sicherzustellen, dass zuerst die 5V an der Klemme anliegen und erst danach USB gesteckt wird. Falls dem wirklich so ist, gibt es da eine elegantere Lösung? Oder kann der Raspi Zero auch über das USB Kabel vom Arduino versorgt werden? Darüber hinaus hatte ich gehoft das durch das original MAME Rom via LISY auch der richtige Switch (48) erkannt wird für das Outhole und ich ein Spiel starten kann um die Flipper, Kicker und Popbumber in funktion zu sehen.
Leider kommt aber LISY nicht über das oben erwähnte "P1: SYS4 P2: Flash P3: 52 OOFF P4: 526 19 " hinweg. Was muss ich tun um, das ROM / LISY wirklich zu starten? Ich habe bereits viele Knöpfe getestet aber nichts will helfen. Da er aber etwas anzeigt scheint die Verbindung zu stimmen. Dennoch erkennt er bei aktiviertem "USB Watchdog" auf dem APC eben genau diesen und zeigt nur Watchdog an. Deaktivieren des Watchdogs den Status "SYS4...". Kann es sein, dass hier etwas fehlt?

Vielen Dank

Jan

 

APC in Flash.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 5 Stunden schrieb LeFreak76:

Hier scheint noch die Challenge sicherzustellen, dass zuerst die 5V an der Klemme anliegen und erst danach USB gesteckt wird.

Bei mir liegt LIY_Mini fest an 5Volt und auch die USB Verbindung ist gesteckt, schalte dann mit dem 'Haputschalter' alles an ... geht bei mir.

Welchen Effekt beobachtest Du?

 

vor 6 Stunden schrieb LeFreak76:

Status "SYS4...". Kann es sein, dass hier etwas fehlt?

Ja, gerade gecheckt, für SYS4 fehlt da noch die 'interne' Verbindung. Schaue ich mir die Woche an ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 8 Stunden schrieb LeFreak76:

Sollte ich den Arduino also besser ausbauen?

Nein, nicht ausbauen. Das System ist so gebaut, dass man im Flipper programmieren kann.

Die Angst mit dem USB Port ist normalerweise unbegründet, da der PC selbst den Strom limitiert. Wenn man also den Flipper ausschaltet und vergisst die USB Leitung abzuziehen, dann hat man plötzlich ganz funzelige LED Displays aber funktionieren tut es dann immer noch.  Zusätzlich hat der Arduino noch eine Polysicherung drauf, die die USB-Versorgung unterbricht, wenn es mal zu heftig wird.

Trotzdem kann sich bei solchen Bastelprojekten wie bei dir natürlich immer mal eine Leitung lösen und eine andere berühren und wenn das blöderweise mit der Spulenspannung und der 5V Leitung passiert, dann könnte der Laptop durchaus Schaden nehmen. Daher habe auch ich bei meinen ersten Arduinos die USB-Versorgung deaktiviert. Ich weiß nicht, wie stark sich das Layout des DUE mittlerweile verändert hat, aber bei meinen sitzen in der Nähe des 'Programming Port' zwei SMD-Transistoren, die als Schalter für die Versorgung fungieren. Wenn du bei diesen beiden Transistoren den Pin, der alleine auf einer Gehäuseseite ist ablötest und anhebst (siehe Bild), dann sollte die USB-Versorgung aus sein. D.h. wenn du den Arduino danach ohne APC mit dem USB-Port deines Rechners verbindest sollten keine LEDs mehr angehen.

Noch was:

Ich habe den 'High Score Reset' Knopf als Not-Aus programmiert (auch im Tutorial). D.h. wenn dein Programm mal so gar nicht tut was du willst und z.B. eine Spule dauerhaft anzieht etc. dann ist dieser Knopf bei offener Kassentür schneller erreichbar, als der Hauptschalter. Bei Betätigung wird der Blanking aktiviert, d.h. alle Lampen, Spulen und Displays gehen sofort aus.

Diesen Knopf sollte man auch drücken, bevor man den Arduino neu programmiert. Der Grund ist, dass der Reset im Arduino ein paar ms braucht um den APC zu erreichen. Daher können einige Lampen und Displays kurz hell aufblinken, wenn der Programmierreset kommt. Das ist nicht schlimm und davon geht auch nichts kaputt, aber es ist schonender für Lampen und Display wenn man vorher den 'High Score Reset' Knopf drückt.

vor 8 Stunden schrieb LeFreak76:

Leider laufen die Coils bisher nur im Test Mode da ich es nicht schaffte ein Spiel zu starten

Ja, du musst die Variablen am Anfang des Tutorials an dein Gerät anpassen. Er gibt dir z.B. keinen Ball wenn er nicht die richtige Anzahl Bälle in der Balltruhe findet und dazu müssen halt die Variablen TT_BallThroughSwitches und TT_InstalledBalls stimmen.

 

P1020681.JPG

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...
Am 25.8.2020 um 14:56 schrieb bontango:

Ja, gerade gecheckt, für SYS4 fehlt da noch die 'interne' Verbindung. Schaue ich mir die Woche an ...

Das mit den getrennten 5 V war so ein Gefühl, entfällt aber wenn LISY läuft. Konntest du da schon was richten?

Danke Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo zusammen, da das Thema mit LISY und System 4 nicht ganz so trivial zu sein scheint habe ich mich nun doch daran gemacht das APC Tutorial auf meinen Flash anzupassen (bzw ein weiteres Game hinzuzufügen). Das er nicht startete ist nun logisch, da ja die Anzahl der Bälle beim Flash 1 ist und auch die Switches Ball Through nicht existieren. Bevor ich nun aber den Code anpasse, möchte ich natürlich gerne die Basis Funktionen drin haben.
Bei den Drop Targets kann ich gut nachvollziehen was im Rollergames passiert und auch die Switch Nummern decken sich mit den Manuals. Die beiden (3er und 5er) Drop Targets sind also nun machbar. Um nun aber auch die Kugel "original" Laufen zu lassen, benötige ich neben dem Hole (welches auch machbar sein sollte (Eject Hole von BlackKnight)) die beiden Kicker und die 3 Popbumper hier wundere ich mich. Im Tutorial scheinen diese nicht vorhanden zu sein. Also bin ich an den Black Knight Code gegangen.
Hier finde ich in der GameMain die Auflistung der "Switches" diese decken sich auch mit dem Manual. Im BlackKnight sind die Solenoids für die Kicker und den JetBumber 17-19 diese werden im BlackKnight.ino auch im GameMain behandelt. werden hier aber vom Event (Switch?) 65 - 67 ausgelöst. Diese hohen Nummern liuegen also direkt hinter den 64 in der Switchmatrix angegebenen. In der Matrix und im Bild sind auch nur die reinen Zähl Kontakte aufgelistet (21,22 & 36) welche auch für die Punkte genutzt werden. Wie komme ich auf die Nummern der "direkten" Switche? Oder laufen die automatisch und haben die 65-67 nur für den Testmode?
Bei den Flipperfingern sehe ich im Tutorial das Solenoid 23 & 24 aktiviert werden. Diese Zahlen stehen nicht explizit in der Coilliste. UNd auch im Flash Manual stehen für diese keine NUmmern dabei. Gibt es da einen Tipp wie ich an diese Zahlen komme?
Danke

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Black KnightHallo, nun ist es doch passiert und der Enthusiasmus weicht langsam der Verzweifelung. Ganz so trivial ist das Umschreiben des  Tutorial Codes leider nicht. Er spuckt immer wieder undefined warnings raus, da ich die ganzern switches in denen eventuell Bälle liegen könnten (Ball Through, Shooterlane, etc) nicht gibt. Ich habe nun versucht Stück für Stück die referenzen im Code zu entfernen aber irgendwie scheinen dann viele Funktionen total unsinnig.

Was muss mindestens im INO File für den Tisch liegen damit er mir beim Player Start (Switch 3) einen Ball in die Outlane schiebt (Sol 1). Der einzige Schalter der dabei geprüft werden könnte ist Switch 48 (Outhole). Watchdogs und Ball Search brauche ich derzeit nicht.

Es wäre grossartig wenn dieser Simple Code dann wenigstens in der Lage ist die Flipper zu verwenden (Vermutlich Coil 23 & 24).
Und auch die Kicker (Sol 21 & 22) sollten auf Berührung reagieren. Perfekt wäre es wenn auch die PopBumper (Sol 17,18,19) reagieren würden.

Punkte sind ebenso aktuell nicht wichtig.

Alles was das INO Steuern müsste wären 3 Bälle pro Spieler. Wenn diese Basis immerhin liefe, kann ich weiterbauen. Derzeit rollt keine Kugel aber das müsste sie damit ich mit der Spielfeldneigung experimentieren kann und sehen kann wie die Kugel rollt. Wenn die Neigung klar ist, kann ich in die Tischlerwerkstatt und erstmal weiter ohne die LISY Anpassung leben. Sofern der kurze einfache Code (Wo ich sehr auf dich hoffe) klar für mich ist, kann ich auch den mit den DropTargets erweitern und eventuell dann auch andere Features aktiviern und die APC Programmierung lernen - derzeit überfordert es mich aber.

Zu allem Überfluss haut mir die Arduino IDE nun aber auch unter anderem einen Fehler bei der Zeile " Wire1.onReceive(I2C_receive); " raus das I2C_receive in dem Scope nicht definiert ist. Genau das gleiche Script konnte ich aber damals auf den APC laden... Sorry aber aktuell ist das System irgendwie gegen mich...

Danke für eine Antwort

Jan

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 16.9.2020 um 09:01 schrieb LeFreak76:

habe ich mich nun doch daran gemacht das APC Tutorial auf meinen Flash anzupassen (bzw ein weiteres Game hinzuzufügen).

Nimm lieber den BaseCode als Grundlage. Die sind zwar größtenteils identisch, aber das Tutorial ist nur als Codebeispiel für das entsprechende Wiki gedacht und nicht als Basis für eigene Projekte.

Am 16.9.2020 um 09:01 schrieb LeFreak76:

Gibt es da einen Tipp wie ich an diese Zahlen komme?

Zunächst mal sind die Nummern aller Lampen, Schalter und Spulen so wie in deinem Flash Manual aufgeführt. Bei den Schaltern kommen dann aber ab Nummer 65 die Special Solenoid Schalter und dann die Sonderschalter. Ich bin gerade am falschen Rechner und kann das hier nicht raus kopieren, aber die genaue Zuordnung steht etwas versteckt in der APC SW Referenz im Abschnitt 3.2. beim Befehl 'QuerySwitch' - das sollte ich vielleicht an eine günstigere Position schreiben.

Bei den Spulen sind die Flipper die einzige Ausnahme. Beim APC können die beiden Seiten getrennt geschaltet werden - Spule 23 sind die eine Seite und 24 die andere. Sollte ich vielleicht auch mal dokumentieren.

vor 22 Stunden schrieb LeFreak76:

Was muss mindestens im INO File für den Tisch liegen damit er mir beim Player Start (Switch 3) einen Ball in die Outlane schiebt (Sol 1). Der einzige Schalter der dabei geprüft werden könnte ist Switch 48 (Outhole). Watchdogs und Ball Search brauche ich derzeit nicht.

Starte am Besten nochmal von vorne und nimm den BaseCode als Grundlage. Ein neues Spiel wird gestartet wenn im Attract Mode der Credit Button gedrückt wird. Die Schalter im Attract Modus werden von

void BC_AttractModeSW(byte Button) {                  // Attract Mode switch behaviour

behandelt. Der Credit Button ist Schalter 3, der für dich interessant Teil ist also

	case 3:                                               // start game
		if (BC_CountBallsInTrunk() == BC_InstalledBalls || (BC_CountBallsInTrunk() == BC_InstalledBalls-1 && QuerySwitch(BC_PlungerLaneSwitch))) { // Ball missing?
			Switch_Pressed = DummyProcess;                  // Switches do nothing
			ShowLampPatterns(0);														// stop lamp animations
      KillAllTimers();
			if (APC_settings[Volume]) {                     // system set to digital volume control?
				analogWrite(VolumePin,255-APC_settings[Volume]);} // adjust PWM to volume setting
			else {
				digitalWrite(VolumePin,HIGH);}                // turn off the digital volume control
			for (i=0; i< 8; i++) {													// turn off all lamps
				LampColumns[i] = 0;}
			LampPattern = LampColumns;
			NoPlayers = 0;
			WriteUpper("                ");
			WriteLower("                ");
			Ball = 1;
			BC_AddPlayer();
			Player = 1;
			ExBalls = 0;
			Bonus = 1;
			BonusMultiplier = 1;
			InLock = 0;
			Multiballs = 1;
			for (i=1; i < 5; i++) {
				LockedBalls[i] = 0;
				Points[i] = 0;}
			BC_NewBall(3);                                  // release a new ball (3 expected balls in the trunk)
			ActivateSolenoid(0, 23);                        // enable flipper fingers
			ActivateSolenoid(0, 24);}}}

Der if Befehl in der ersten Zeile verhindert bisher, dass du einen Ball kriegst, da er die Bälle in der Truhe zählt und nur ins Spiel geht wenn das Ergebnis stimmt. Diesen if Befehl solltest du also gegen

if (QuerySwitch(48)) { // Ball missing?

ersetzen. dann wird nur dieser Schalter abgefragt.

Den 

BC_NewBall(3);                                  // release a new ball (3 expected balls in the trunk)

solltest du auch zunächst mal entfernen, allerdings musst du dann stattdessen

Switch_Pressed = BC_GameMain;

einsetzen. Damit lösen deine aktivierten Schalter im Spiel automatisch einen Aufruf von BC_GameMain aus.

Jetzt noch ein

ActivateSolenoid(40, 1);

dahinter, damit Spule 1 für 40ms angezogen wird und du bekommst einen Ball. 

Damit die Bumper und Slingshots laufen müssen in BC_GameMain die entsprechenden Special Switches eingetragen und die Spule aktiviert werden, also z.B.

	case 65:
		ActivateSolenoid(40, 17);
		break;

für den rechten Bumper.

vor 22 Stunden schrieb LeFreak76:

Genau das gleiche Script konnte ich aber damals auf den APC laden... Sorry aber aktuell ist das System irgendwie gegen mich...

Diese 'not defined in this scope' kommen normalerweise durch einen Bug in der Arduino IDE. Versuch mal vorübergehend den Befehl auszukommentien damit du weiter kommst.

vor 23 Stunden schrieb LeFreak76:

Hallo, nun ist es doch passiert und der Enthusiasmus weicht langsam der Verzweifelung.

Keine Angst, aller Anfang ist schwer aber das wird schon ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie sieht's aus, bist du schon weiter gekommen?

Ne kurze Rückmeldung wäre nett, sonst fühlt sich das an wie ein Selbstgespräch.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

nachdem ich mir nun die Arduino IDE auf einem Ersatzlaptop installiert hatte konnte ich wieder den Code verfizieren.

Ich habe mir die Hinweise angesehen und habe mit dem "Base Code" nochmal neu gestartet.
In der WF_AttractModeSW habe ich:

Switch_Pressed = DummyProcess; 

ersetzt durch 

Switch_Pressed = WF_GameMain;

Ich hoffe das war richtig.
Zusätzlich habe ich hier auch das angegebene 

ActivateSolenoid(40, 1);

eingefügt. Das scheint aber die falsche Stelle zu sein da er so direkt beim Laden den Ball einwirft. Ich muss also einmal leer laufen lassen und kann dann wenn er wieder im Outhole liegt Das Spiel starten.

Aber! Nun funktionieren die Flipper. ☺️.

Nun kämpfe ich gerade mit den "undokumentierten Switch Nummern" Ich habe von 65 - 69 einfach die entsprechenden Coils (17-19, 20,21)
Angesteuert, mit dem Erfolg, dass z.B. der linke Slingshot den mittleren Bumper auslöste. Das habe ich aufgeschrieben und dann die Zahlen der Coils entsprechend geändert. Nach der Änderung gehen nun immerhin 2 der 5 Paare korrekt. Nun bin ich aber zu müde um den Denkfehler zu finden. Ich mache dann morgen früh weiter.

Hier aber noch schnell wo ich stecke.

  case 65:                                            //Bumper Rechts (Wird ausgelöst von Slingshot Links)
    ActivateSolenoid(30, 17);                         //Bumper Rechts
    break;
  case 66:                                            //Bumper Mitte  (Wird ausgelöst von Bumper rechts)
    ActivateSolenoid(30, 19);                         //Bumper Mitte
    break;
  case 67:                                            //Slingshot links (Wird ausgelöst von Bumper mitte)
    ActivateSolenoid(30, 21);                         //Slingshot links
    break;
  case 68:                                            //Slingshot rechts (korrekt)
    ActivateSolenoid(30, 20);                         //Slingshot rechts
    break;
  case 69:                                            //Bumper Links (korrekt)
    ActivateSolenoid(30, 18);                         //Bumper Links
    break;

Es scheint aber noch so zu sein das ich irgendwo noch die übrigen Ball Switches (Through, Trunk) loswerden muss, da er während der Kugel auf Ball Error springt.

Aber Immerhin kann ich nun Sehen das die reparierten Mechaniken funktionieren! Vielen Dank.

Jan

P.S. Als ich die Software heute via Programming Port aufgespielt habe, hat er über den USB Port das Display, und den Raspi Zero versorgt, scheint ihn aber nicht gestört zu haben.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 17 Stunden schrieb LeFreak76:

Ich muss also einmal leer laufen lassen und kann dann wenn er wieder im Outhole liegt Das Spiel starten.

Verstehe ich das richtig, er gibt den Ball direkt beim Start, bevor du den Credit Button gedrückt hast? In diesem Fall muss der 

ActivateSolenoid(40, 1);

in die 'case 3:' Abfrage, also z.B. direkt vor die Aktivierung der Flipper.

Das sähe dann so aus:

ActivateSolenoid(40, 1);      
ActivateSolenoid(0, 23);                        // enable flipper fingers
ActivateSolenoid(0, 24);}}}

 

vor 17 Stunden schrieb LeFreak76:

Ich habe von 65 - 69 einfach die entsprechenden Coils (17-19, 20,21)
Angesteuert, mit dem Erfolg, dass z.B. der linke Slingshot den mittleren Bumper auslöste.

Das ist sehr merkwürdig. Hast du die Stecker 2J12 und 2J13 vielleicht neu verdrahtet? Dann könntest du darauf hereingefallen sein, dass die Pinbelegung sehr schräg ist.

image.png

Der 'Special Switch Input' Nr. 1 an 2J13 steuert die 'Special Solenoid' Nr. 1 (entspricht Spule 17) an 2J12. Das einzig besondere beim APC ist, dass die 'Special Switch Inputs' jetzt auch normale Schalternummern ab 65 haben. Daher gehört Schalter 65 zu Spule 17, Schalter 66 zu Spule 18 u.s.w.

Wenn das bei dir nicht passt dann mach doch mal einen Schalter bzw. Spulentest, um herauszufinden was von beidem nicht stimmt.

vor 18 Stunden schrieb LeFreak76:

Es scheint aber noch so zu sein das ich irgendwo noch die übrigen Ball Switches (Through, Trunk) loswerden muss, da er während der Kugel auf Ball Error springt.

Ja, da kommen wir noch zu aber ich wollte dir beim vorigen mal nicht zu viel auf einmal um die Ohren hauen.

Wir müssen noch die Routine abschalten, die beim Ballverlust läuft, da diese auch die Bälle in der Truhe zählt u.s.w. Dazu musst du in WF_GameMain die folgende Zeile finden:

    ActivateTimer(200, 0, BC_ClearOuthole);           // check again in 200ms

Dieses BC_ClearOuthole musst du gegen deine eigene Routine ersetzen. Am einfachsten wäre sowas wie

    if (Ball < APC_settings[NofBalls]) {
      Ball++;
      ActivateSolenoid(40, 1);}
    else
      BC_AttractMode();

Das sollte den verlorenen Ball zählen und einen neuen geben, so lange die in den System Settings eingestellte Anzahl der Bälle noch nicht erreicht ist. Andernfalls springt er zurück in den AttractMode.

vor 18 Stunden schrieb LeFreak76:

Als ich die Software heute via Programming Port aufgespielt habe, hat er über den USB Port das Display, und den Raspi Zero versorgt, scheint ihn aber nicht gestört zu haben.

Lass den Flipper beim programmieren lieber eingeschaltet. Das ist erstens einfacher und außerdem könnte es sonst passieren, dass der Arduino zu wenig Saft kriegt und nicht richtig programmiert wird. Wie schon erwähnt vor dem programmieren den 'High Score Reset' Knopf drücken um Lampen und Displays zu schonen und dann einfach programmieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mal wieder ein kleines Update.
Die Special Switches und Coils reagieren nun wie gewollt. Irgendwie muss ich mir da einen gebacken haben.
Es ist tatsächlich so einfach wie von Dir beschrieben.

  case 65:                                            //Bumper Rechts
    ActivateSolenoid(30, 17);                         //Bumper Rechts
    break;
  case 66:                                            //Bumper Mitte
    ActivateSolenoid(30, 18);                         //Bumper Mitte
    break;
  case 67:                                            //Bumper Links
    ActivateSolenoid(30, 19);                         //Bumper Links
    break;
  case 68:                                            //Slingshot rechts
    ActivateSolenoid(30, 20);                         //Slingshot rechts
    break;
  case 69:                                            //Slingshot links
    ActivateSolenoid(30, 21);                         //Slingshot links
    break;

Nachdem nun also die Basis läuft, habe ich mich zum einen daran gemacht die nötigen Switches, Coils und Lamps für Droptargets und Rollovers zu notieren.
Und sitze nun gerade daran den Base Code zu entschlacken. Ich gehe davon aus das der BaseCode ebenso wie das Tutorial auf Rollergames basiert und habe nun mit dem Rollergames Manual versucht nachzuvollziehen was eigentlich noch benötigt ist. Die zwei massivsten Änderungen zum Flash sind:

  • Flash hat nur 1 Ball also keine Multibälle die gezählt werden müssen.
  • Flash hat nur einen Outhole Switch und einen Ball Release Coil (Im Basecode ist sehr viel Logik für die Ballthrough, Shooterlane Switches und auch der Shhoterlanefeeder)

Da der Shooterlane Switch fehlt ist auch die Ball Watchdog Funktion nicht mehr nötig bzw. kann nicht funktionieren. Wenn ich zwischen zwei Bällen eine Pause mache würde er nach dem Timeout anfangen den Ball zu suchen was er ja nicht muss.

Dies versuche ich nun zu entfernen bzw neu zu stricken und wenn das klappt, stelle ich den Code gerne zur Verfügung.

Danach werde ich dann anfangen die Basis Funktionen hinzuzufügen (Droptargets etc.) Hier stelle ich mir aber bereits eine Frage.

@Black Knight Wie löse ich am besten das "Zählen" der Rollovers? Im Flash sind 1-3 Bonus *2 und 1-4 Bonus *3
Für die Aktivierung der Lampen ist es vermeintlich einfach:

case 12:
	TurnOnLamp(36);
	break;
case 13:
	TurnOnLamp(37);
	break;
case 14:
	TurnOnLamp(38);
	break;
case 15:
	TurnOnLamp(39);
	break;

Aber wie frage ich nun ab, ob bereits alle 1-3 bzw. 1-4 an sind?
Bei den Droptargets geht es dadurch das der Switch bei Down gedrückt bleibt, bei den Rollover müsste ich den Status der Lampe abfragen (Also wenn Lampe 36-38 an, dann...) Oder muss ich mir hier 4 Variablen definieren die ich dann auswerte?

Mit den oben angegebenen Anpassungen habe ich erstmal genug zu tun, und werde danach mir mal den BlackKnight bzw Pinbot Code genauer ansehen.

Schönen Sonntag noch
Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb LeFreak76:

Bei den Droptargets geht es dadurch das der Switch bei Down gedrückt bleibt, bei den Rollover müsste ich den Status der Lampe abfragen (Also wenn Lampe 36-38 an, dann...) Oder muss ich mir hier 4 Variablen definieren die ich dann auswerte?

Du kannst beides machen, also Variablen definieren oder den Status der Lampen abfragen. Letzteres geht mit dem Befehl QueryLamp, die Erklärung steht in der APC SW Referenz bei den Lampen-Kommandos in Abschnitt 4.2

Wenn du die Referenz gerade auf hast wirf auch mal einen Blick auf den ActivateSolenoid Befehl in Abschnitt 4.3. Bisher haben wir den ja immer so genutzt, dass die Aktivierungszeit immer mit angegeben wurde. Das funktionierte zwar bisher, ist aber doch etwas umständlich und auch nicht immer möglich. Der bessere Weg ist, einmal zu Beginn die Standardaktivierungszeit für jede Spule anzugeben. Dazu gibt es das SolTimes Array ganz oben im BaseCode

const unsigned int BC_SolTimes[32] = {30,30,50,50,50,50,30,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0,0,100,100,100,100,100,100,100,100}; // Activation times for solenoids

Da wird für jede Spule die Zeit in ms definiert, die diese Spule normalerweise eingeschaltet werden soll. Das fängt mit Spule 1 an und geht bei dir bis 24, die restlichen 8 Byte sind nur für System11 Maschinen relevant. Wenn du dieses Array gesetzt hast und den ActivateSolenoid für diese Spule mit der Dauer 0 aufrufst, dann wird diese Standardzeit genommen, gibst du dagegen einen Wert ungleich 0 an, dann gilt dieser.

Besonders wichtig wird das bei Relais. Diese müssen mit der Dauer 0 beim ActivateSolenoid UND einer Null im SolTimes Array aufgerufen werden, sonst bleiben sie nicht dauerhaft an. Das ist so eine Art doppelter Sicherheitsmechanismus damit man sich nicht versehentlich eine Spule röstet in dem man sie dauerhaft einschaltet. Als Beispiel kannst du die Flipper nehmen (Spulen 23 und 24), die in BC_SolTimes beide mit 0 stehen, da sie dauerhaft eingeschaltet werden können.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Alles klar. Den QueryLamp habe ich eben bereits in deinem BlackKnight Code gefunden.

Die Ballsuche etc. habe ich nun komplett auskommentiert. Leider erschließen sich mir die BallEnd (2,3) Funktionen nicht wirklich. Daher wurden die erstmal deaktiviert. Wodurch aber das zählen der Bälle schwierig wird. Da werde ich etwas neues bauen sobald ich auch anfange Punkte, Boni, Lamp & Coil Reset nach dem Ball zu erhalten.
Soweit läuft es nun trotz kurzem Code. (Das ist schon mal gut) Das Eject Hole läuft mit der :

ActivateTimer(1000, 5, DelaySolenoid);

Auch genau wie erwartet.

Bei den Droptargets reagiert er aktuell aber nicht. Ich vermute das hängt damit zusammen das die Schalter (wider erwartend) nicht gedrückt bleiben, sondern nur der "All Down" HIGH ist wenn alle unten sind. Das baue ich nun schnell um. Und werde langfristig auch hierfür eine Funktion ähnlich der HandleDropTargets vom BlackKnight verwenden. Zusätzlich zum wechseln der Lamps für erhöhte Punbkte vor den Drop Targets.

 Aber und nun hoffe ich auf dein Fachwissen:

Der Befehl "TurnOnLamp(x)" aktiviert diese, aber auch alle anderen der Reihe. Muss ich hier noch etwas beachten?

Nachtrag: Auch im "Single Lamp" Test leuchtet nicht nur eine sondern immer die Ganze reihe... Sollte ich hier noch etwas an der APC Hardware übersehen haben...

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 26 Minuten schrieb LeFreak76:

Sollte ich hier noch etwas an der APC Hardware übersehen haben...

Ja, das ist ein HW Problem. Leuchten die Lampen denn normal oder sind die extrem hell?

Wir sollten auch noch klären, ob wir das gleiche Verständnis haben, was eine Reihe und was eine Spalte ist. Das angehängte Bild zeigt die Lamp-Matrix vom Flash. Ist es wirklich eine Reihe (Row) die bei dir leuchtet oder eine Spalte (Column)?

FlashLamps.PNG

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es ist die Reihe. Rollover 3 aktiviert z.B. auch 2x. Die Helligkeit ist „normal“ zumindest sind sie heller beim Flashen des APC ohne Blanking bzw. beim ersten Anschalten.

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb LeFreak76:

Es ist die Reihe. Rollover 3 aktiviert z.B. auch 2x.

Das ist NICHT richtig! Boppelbonus gibt es wenn die Lanes 1,2 und 3 durchlaufen wurden. Aber die Reihenfolge ist egal!

Wurden die Lanes 1-4 durchlaufen, gibt es 3-fach Bonus! Den gibt es aber auch bei der Reihenfolge 4,3,2,1 oder 4,2,1,3.....

Link zu diesem Kommentar
Auf anderen Seiten teilen

Er muss sich also irgendwo im Speicher merken, welche Lanes durchlaufen wurden. Diese Info behält er übrigends für den nächsten Ball wenn nicht mindestens Doppelbonus geholt wurde! Er muss sich also irgendwie merken wo die Kugel schon mal war!

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