Zum Inhalt springen

Arduino Pinball Controller


Black Knight

Empfohlene Beiträge

btw: Comet ist in die Garage eingezogen.

Ist einiges dran zu machen, aber für mich mit APC das ideale Bastelobjekt

 

Comet_in_Garage.jpg

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

Kann man im PinMame eigentlich den Soundtest laufen lassen?

Wenn wir sicher wüssten, dass man da tatsächlich alle Sounds hört, dann könnte man ja einfach den Soundtest laufen lassen und mit Audacity oder so mitsamplen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

4 minutes ago, bontango said:

btw: Comet ist in die Garage eingezogen.

Cool, dein erster Williams? Auch vorher nie einen gehabt?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hatte vor Jahren mal kurz nen Space Shuttle, der lief aber von Anfang an. Also so gut wie keine Erfahrung damit

Direkt ein paar Fragen:

- Beine sind unterschiedlich lang ( 70 & 72cm) normal?

- der Steg unter der Backbox fehlt. Wie sieht der normalerweise aus, gleicht der die Spielfeldneigung aus?

- Displays fehlen: hatte mal gesucht aber nur Standard 0.8 Zoll Displays gefunden. Wenn ich die besorge könntest Du die mir abhobeln?

- Falls ja, würde ich mich an ner Bestellung Platinen in China gerne beteiligen.

 

Zum pinmame sound: ja, man kann switche simulieren und könnte sich so durch das Testmenü hangeln.

Müssten halt sehen was d an Qualität rauskommt

Link zu diesem Kommentar
Auf anderen Seiten teilen

49 minutes ago, bontango said:

- Beine sind unterschiedlich lang ( 70 & 72cm) normal?

Hast du von jeder Länge 2 Stück? Dann gehören die langen Beine nach hinten, aber da kann Frank vielleicht mehr zu sagen.

54 minutes ago, bontango said:

- der Steg unter der Backbox fehlt. Wie sieht der normalerweise aus, gleicht der die Spielfeldneigung aus?

Hatte noch nie einen System9 aber sowohl bei Sys7 als auch bei den frühen Sys11 gleicht der Steg die Neigung aus, daher wird das bei dir wohl genauso sein.

57 minutes ago, bontango said:

- Displays fehlen: hatte mal gesucht aber nur Standard 0.8 Zoll Displays gefunden. Wenn ich die besorge könntest Du die mir abhobeln?

Geht klar. Ich bestelle dann voraussichtlich am WE die Boards.

43 minutes ago, bontango said:

Brauchbar? Wie ist der im Vergleich zum Original?

Ich würde sagen, das klingt einwandfrei - besser ist der Originalsound auch nicht.

Jetzt brauchen wir nur noch einen Modus, in dem Lisy den Befehl 50 (Play Sound#) benutzt, um den Sound auszugeben, allerdings ohne die eigene Sounderzeugung abzuschalten. Dann könnte ich einen Modus einbauen, in dem der APC diese Nummer auf dem Display ausgibt, wodurch wir den Zusammenhang zwischen Sound und Nummer herstellen könnten.

Wer dann den Lisy Sound benutzen möchte, der kann das einfach tun, aber man könnte sich auch die Arbeit machen und die Sounds unter den entsprechenden Nummern auf die SD-Karte zu packen und den APC abspielen zu lassen - das kann dann jeder für sich entscheiden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 19 Minuten schrieb Black Knight:

Geht klar. Ich bestelle dann voraussichtlich am WE die Boards.

Prima, ich würd dann diese  Displays ordern, kosten die Hälfte im Vergleich zu Reichelt

https://de.aliexpress.com/item/10pcs-RED-LED-Display-0-8-27-7x20mm-Common-Anode-1Digital-LED-Module-16-Segment-18/32419117343.html?spm=a2g0x.search0104.3.9.535fc745KBI05L&ws_ab_test=searchweb0_0,searchweb201602_5_10065_10068_10547_319_317_10548_10696_10084_453_10083_454_10618_10304_10307_10820_10821_537_10302_536_10843_10059_10884_10887_321_322_10103,searchweb201603_52,ppcSwitch_0&algo_expid=7b87b1f1-4a92-4db8-921c-b0553bbead13-1&algo_pvid=7b87b1f1-4a92-4db8-921c-b0553bbead13

Gemeinsame Anode war richtig? Soll ich Dir auch welche ordern?

 

vor 25 Minuten schrieb Black Knight:

Ich würde sagen, das klingt einwandfrei - besser ist der Originalsound auch nicht.

Ich müss mal schauen wie das unter Linux auf dem Raspi klingt. Das war jetzt unter Windows aufgenommen.

Ich könnte versuchen die Source unter Window zu kompilieren und dann einfach ne Schleife über die

Sound-Output Routine laufen zu lassen, dann seh/höre ich was ausgegeben wird.

Da müssten wir nur schauen was Hintergrund ist (also im loop läuft) und welche Sounds von welchen 'interrupted' werden können.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

1 hour ago, bontango said:

Gemeinsame Anode war richtig? Soll ich Dir auch welche ordern?

Gemeinsame Anode ist korrekt, aber ich brauche zur Zeit keine.

Quote
1 hour ago, bontango said:

Sound-Output Routine laufen zu lassen, dann seh/höre ich was ausgegeben wird.

 

Das wäre super, dann wüssten wir, wieviele Sounds es sind. So könnten wir die dann auch mit Nummern versehen und so den Sounds im Spiel zuordnen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 20 Stunden schrieb Black Knight:

PIA1B wundert mich, denn laut Schaltplan hängt das Soundboard an PIA V - die Nummerierung vom PinMame orientiert sich also schon mal nicht am Schaltplan.

Im Soundboard geht's wieder an eine PIA, ich kann also nichts erkennen, was den Zahlenraum irgendwie einschränken würde. Wir haben es also maximal mit 128 verschiedenen Sounds zu tun, aber in der Realität werden vermutlich nicht mehr als 15 benutzt.

Pinmame habe ich jetzt mit Visual Studio auf Windows kompilieren können.

Muss mich korrigieren, es ist pia0a in dieser Sektion (Funktion sndbrd_0_data_w)

/*---------------
/  Sound command
/----------------*/
static WRITE_HANDLER(pia0a_w) {
  if (s7locals.rr) { // Rat Race needs the system 9 sound PIA triggered as well
    sndbrd_0_data_w(0, data & 0x80 ? ~data : data); // just so diag sounds are working too... what the heck! :)
    pia_set_input_ca1(6, 1);
    pia_set_input_ca1(6, 0);
  } else
    sndbrd_0_data_w(0, data);
}

Dabei besteht ein Sound immer aus 3 bytes, 1. und 3. byte sind immer '0x7f' das zweite Byte scheint der Sound zu sein.

Entweder wir finden ne Beschreibung des Protokolls im Netz oder wir tracen mit LISY mit und betätigen Swicthes auf dem Spielfeld

Die PIA Struktur System7 ist so in pinmame abgebildet, als bits 0 ... 4 von PIA0 A

entspricht dass nicht der HW?

 

 

--------------------------------

static struct pia6821_interface s7_pia[] = {
{  /* PIA 0 (2100)
    PA0-4 Sound
    PB5   CA1
    PB6   Comma 3+4
    PB7   Comma 1+2
    CA2   SS8
    CB2   SS7
    CA1,CB1 NC */
 /* in  : A/B,CA/B1,CA/B2 */ 0, PIA_UNUSED_VAL(0x3f), PIA_UNUSED_VAL(1), PIA_UNUSED_VAL(0), 0, 0,
 /* out : A/B,CA/B2       */ pia0a_w, pia0b_w, pia0ca2_w, pia0cb2_w,
 /* irq : A/B             */ s7_piaIrq, s7_piaIrq
},{/* PIA 1 (2200)
    PA0-7 Sol 1-8 (Extra lamp strobe on Hyperball)
    PB0-7 Sol 9-16
    CA2   SS5
    CB2   GameOn (0)
    CA1,CB1 NC */
 /* in  : A/B,CA/B1,CA/B2 */ 0, 0, 0, PIA_UNUSED_VAL(0), 0, 0,
 /* out : A/B,CA/B2       */ pia1a_w, pia1b_w, pia1ca2_w, pia1cb2_w,
 /* irq : A/B             */ s7_piaIrq, s7_piaIrq
},{/* PIA 2 (2400)
    PA0-7  Lamp return
    PB0-7  Lamp Strobe
    CA2    SS2
    CB2    SS1
    CA1,CB1 NC */
 /* in  : A/B,CA/B1,CA/B2 */ 0, 0, 0, PIA_UNUSED_VAL(0), 0, 0,
 /* out : A/B,CA/B2       */ pia2a_w, pia2b_w, pia2ca2_w, pia2cb2_w,
 /* irq : A/B             */ s7_piaIrq, s7_piaIrq
},{/* PIA 3 (2800)
    PA0-3  Digit Select
    PA4-7  Diagnostic LED
    PB0-7  BCD output
    CA1    Diag In
    CB1    Diag In
    CB2    SS6
    CA2    Diagnostic LED control? */
 /* in  : A/B,CA/B1,CA/B2 */ s7_dips_r, 0, 0, 0, 0, 0,
 /* out : A/B,CA/B2       */ pia3a_w, pia3b_w, pia3ca2_w, pia3cb2_w,
 /* irq : A/B             */ s7_piaIrq, s7_piaIrq
},{/* PIA 4 (3000)
    PA0-7  Switch return
    PB0-7  Switch drive
    CB2    SS3
    CA2    SS4 */
 /* in  : A/B,CA/B1,CA/B2 */ pia4a_r, 0, 0, 0, 0, 0,
 /* out : A/B,CA/B2       */ 0, pia4b_w, pia4ca2_w, pia4cb2_w,
 /* irq : A/B             */ s7_piaIrq, s7_piaIrq
},{/* PIA 5 (4000)
    PA0-7  Digit Select
    PB0-7  alphanumeric output */
 /* in  : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
 /* out : A/B,CA/B2       */ pia5a_w, pia5b_w, pia5ca2_w, pia5cb2_w,
 /* irq : A/B             */ s7_piaIrq, s7_piaIrq
}};

Link zu diesem Kommentar
Auf anderen Seiten teilen

3 hours ago, bontango said:

Die PIA Struktur System7 ist so in pinmame abgebildet, als bits 0 ... 4 von PIA0 A

Laut Schaltplan gehen PA0-6 zum Soundboard, aber es kann ja sein, dass 5 und 6 nicht benutzt werden und PinMame sie daher ignoriert. Das Ding heisst im Plan PIA V, aber es ist eindeutig die gleiche, denn PB6 ist Comma3+4 und PB7 ist Comma 1+2.

3 hours ago, bontango said:

Entweder wir finden ne Beschreibung des Protokolls im Netz oder wir tracen mit LISY mit und betätigen Swicthes auf dem Spielfeld

Genau, wenn wir von 5 Bit ausgehen sind das 32 mögliche Sounds, bei Flippern mit Sprache sind da auch noch alle Worte mit drin. Wenn wir die Sounds tracen, dann wissen wir danach, ob er im Soundtest wirklich alles abspielt und bekommen so gleich seine internen Nummern.

Ich hoffe ja, dass man bei den alten Kisten einfach nur den Soundtest einmal durch laufen lassen muss, um alle Sounds zu kriegen. Das wäre einfacher, als sie aus den ROMs heraus zu operieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Im Soundtest werden zumindest bis sys7 nicht alle Sounds abgespielt. Der Test spielt nur alle Soundselect Leitungen alle einzeln an (im Spulentest).

Hier das Beispiel vom Flash. Es sind 5 Sound Select Leitungen (Spule 9 bis Spule 13)

 

Flash Coils.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ab Sys7 wird der Sound nicht mehr über die Treibertransen selektiert, sondern über die PIA auf der MPU.

 

Hier noch was zu den Diagnoseschaltern in der Tür! Die sind nicht in der Switchmatrix!

 

Williams Diagnoseschalter.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

8 hours ago, Volley said:

Im Soundtest werden zumindest bis sys7 nicht alle Sounds abgespielt. Der Test spielt nur alle Soundselect Leitungen alle einzeln an (im Spulentest).

Ja, das war zu befürchten; so wenige Sounds haben die Kisten dann doch nicht. Trotzdem sind 32 natürlich überschaubar. Man könnte ja auch eine Schleife programmieren, die im PinMame nacheinander alle Soundnummern an die emulierte PIA schickt und schauen, was raus kommt.

7 hours ago, Volley said:

Ab Sys7 wird der Sound nicht mehr über die Treibertransen selektiert, sondern über die PIA auf der MPU.

Genau, diese PIA hat Ralf ja auch schon im Code gefunden.

7 hours ago, Volley said:

Hier noch was zu den Diagnoseschaltern in der Tür! Die sind nicht in der Switchmatrix!

Auch richtig. Beim APC sind das die Spulen 71 und 72. Diese bilden, zusammen mit den 'Special Solenoid Switches' (65 - 70),  eine 'künstliche' neunte Switch-Matrix Spalte. Sie werden also nur softwaremäßig wie eine neunte Spalte behandelt, obwohl die Hardware sie anders ausliest.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Ralf,

habe gerade die Displayplatinen geordert. 5 Sätze haben mich knapp 55€ gekostet, d.h. einer wird mit 11€ zu Buche schlagen.

Frank

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Na das ist doch überschaubar, wunderbar, Danke.

Ich habe mittlerweile auch die Display Segmenanzeigen und einen 5er Satz 'LISY Mini' Platinen geordert.

Wenn alles da ist, können wir ja noch mal ein Treffen machen, und austauschen bzw. 'hobeln'.

Bis dahin sollte ich auch den APC gelötet haben.

 

Gruesse

Ralf

Link zu diesem Kommentar
Auf anderen Seiten teilen

18 hours ago, bontango said:

Wenn alles da ist, können wir ja noch mal ein Treffen machen, und austauschen bzw. 'hobeln'. 

Das machen wir, vielleicht können wir dann ja auch schon ein Spiel am Comet machen.

18 hours ago, bontango said:

Bis dahin sollte ich auch den APC gelötet haben.

Hast du gesehen, dass es im Wiki auf GitHub ein 'Board assembly help' gibt? Da ist der APC in 'Bauabschnitte' unterteilt, mit Bestückungs- und Schaltplänen, sowie Testanweisungen für jeden Schritt. Mir ist zwar klar, dass du das nicht unbedingt brauchst, aber etwas einfacher wird es dadurch trotzdem.

Außerdem würde ich dich bitten, auf Unklarheiten oder Fehler in der Beschreibung zu achten, man wird da ja selbst etwas betriebsblind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb Black Knight:

Hast du gesehen, dass es im Wiki auf GitHub ein 'Board assembly help' gibt?

Ja, habe gerade den SMD Teil von Step1 abgeschlossen, also SMD Fan werde ich in diesem Leben nicht mehr 😉

Und ich denke ich bin da nicht allein, schon mal überlegt die ganze Platine in DIP zu machen? Platz sollte ja genug sein.

Zwei Dinge:

-> vom 100nF SMD Kondensator sind nur 5 in der Reichelt-Liste, aber 6 in der BOM

-> U20 hat Pin 1 dort wo der Kreis ist? Steht also 'auf dem Kopf'?

Was brauch ich an Spannung(en)um den Test nach Step1 zu machen? Reicht da 5Volt (hab ich am Schreibtisch) oder braucht der mehr?

Was passiert wenn ich den Arduino über die Buchse 'powere', versorgt der die Platine mit?

Sonst muss ich erst mal am Comet schauen ob da das Powerboard überhaupt funktioniert

Link zu diesem Kommentar
Auf anderen Seiten teilen

13 minutes ago, bontango said:

Und ich denke ich bin da nicht allein, schon mal überlegt die ganze Platine in DIP zu machen? Platz sollte ja genug sein.

Bei ICs habe ich versucht DIPs zu nehmen, aber Rs und Cs finde ich in SMD sogar angenehmer zu löten - keine Beinchen biegen etc. Viele Leute machen den Lötkolben zu heiß, damit braten sie sich das Flussmittel aus dem Zinn und haben nur noch eine zähe Masse, die nicht mehr richtig fließt. Ich löte SMD immer mit 300°C, je nach Zinn kann die optimale Temperatur bei dir natürlich etwas anders sein.

16 minutes ago, bontango said:

-> U20 hat Pin 1 dort wo der Kreis ist? Steht also 'auf dem Kopf'?

Ja, genau.

18 minutes ago, bontango said:

Was brauch ich an Spannung(en)um den Test nach Step1 zu machen? Reicht da 5Volt (hab ich am Schreibtisch) oder braucht der mehr?

Nein, der Audioverstärker braucht die 12V.

19 minutes ago, bontango said:

Was passiert wenn ich den Arduino über die Buchse 'powere', versorgt der die Platine mit?

Für die 5V sollte das klappen, aber da du die 12V auch brauchst, würde ich den Power-Stecker mit bestücken.

20 minutes ago, bontango said:

Sonst muss ich erst mal am Comet schauen ob da das Powerboard überhaupt funktioniert

Das stimmt, aber das brauchst du hinterher sowieso.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 12.5.2019 um 15:40 schrieb Black Knight:

Das stimmt, aber das brauchst du hinterher sowieso.

Spannungen am Powerboard sehen gut aus 🙂

Denke spätestens morgen mache ich den Musiktest von Step 1.

- könntest Du mir die zwei Musikdateien zuschicken, dann muss ich das von Dir erwähnte Audiotool nicht extra anschmeissen?

- Zur SD Karte: Groesse egal? Formatierung DOS Fat, oder anders??

 

Gruesse

Ralf

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nachtrag: die Kodierung der Stecker finde ich nicht.

Auf deinem Bild meine ich zu erkennen: Pin 7&8 für den Powerstecker; Pin 3 für den Volume und der Speaker ohne Kodierung?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dateilink habe ich per PM geschickt.

4GB war bis jetzt glaube ich die größte SD-Karte, die ich verwendet habe. Ich wüßte aber nicht, dass es da eine Beschränkung gibt. Ganz normal mit FAT formattieren (sind die meisten ja ab Werk schon).

Stimmt, die Kodierung der Stecker muss ich noch einzeichnen. Der Powerstecker 1J17 hat seinen Key an Pin 7, der Volume 1J16 an Pin 3 und der Lautsprecherstecker hat keinen Key.

Die Sys11 Steckerbezeichnungen auf dem APC entsprechen übrigens denen deines Comet (nur der Lautsprecherstecker hat keine, weil's da verschiedene gibt). Du kannst also im Übersichtsbild der Platinen in deinem Comet Schaltplan nachsehen, da sind die Keys eingezeichnet.

Viel Erfolg

Frank

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dafür, dass du nicht gerne SMD lötest sieht das aber ziemlich gut aus.

11 hours ago, bontango said:


Playing mus

Das gefällt mir nicht - er müsste 'Playing music' und nicht mitten im Wort abbrechen.

Ich hatte das gleiche Problem bei meiner letzten Platine auch, konnte aber keinen Fehler finden. Dann habe ich einfach weiter bestückt und plötzlich hat es funktioniert. Jetzt, wo ich das bei dir sehe ist mir eine Idee gekommen. Füge doch kurz vor dem Ende von 'void Setup()' mal bitte die beiden folgenden Befehle ein:

  Switch_Pressed = DummyProcess;
  Switch_Released = DummyProcess;

Damit schaltet man die Schalterbehandlung ab. Ein guter Platz um das einzufügen wäre vor dem digitalWrite:

	DispPattern1 = AlphaUpper;
	DispPattern2 = AlphaLower;
	DispRow1 = DisplayUpper;
	DispRow2 = DisplayLower;
	LampPattern = NoLamps;
  	Switch_Pressed = DummyProcess;
  	Switch_Released = DummyProcess;
	digitalWrite(Blanking, HIGH);                       // Release the blanking
	if (SD.begin(52, SD_SCK_MHZ(20))) {                 // look for an SD card and set max SPI clock to 20MHz
		WriteUpper("SD CARD FOUND ");
    Serial.println("SD card found");
		SDfound = true;}
	else {
    Serial.println("No SD card found");
		WriteUpper(" NO SD  CARD  ");}
	Init_System();}

Vielleicht erkennt er ja irgendwelche Schalter, weil die entsprechende Schaltung noch fehlt und verrennt sich dann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb Black Knight:

Dafür, dass du nicht gerne SMD lötest sieht das aber ziemlich gut aus.

Ich habe auch aufgerüstet, eine 5 Dioptrin Megalupe plus Heissluftgebläse und SMD Lötpaste😁

So langsam bekomme ich Übung, lustig zu sehen wie sich die SMD quasi 'selbst ausrichten' sobald die Paste flüssig wird ...

 

vor 1 Stunde schrieb Black Knight:

Füge doch kurz vor dem Ende von 'void Setup()' mal bitte die beiden folgenden Befehle ein:

Habe ich gemacht ( Die Dgitalwritezeile ist in meiner Version die ich von Github gezogen habe übrigens auskommentiert )

Jetzt kommt:

SD card found
SD card found
Playing music
Error = 21
Number2 = 0
Number3 = 29
Error = 21
Number2 = 0

... und so weiter mit massig Errors

Reicht das zum testen?

Edit: wohl nicht, nur rauschen im Test, ich bestück mal weiter

Bearbeitet von bontango
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