Zum Inhalt springen

Arduino Pinball Controller


Black Knight

Empfohlene Beiträge

  • 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

Habe gestern den Kabelbaum für APC etwas geordnet, seidem ist die dritte Stelle von Player2 & Player4 dauerhaft 'hell' an.

Ich nehme mal an dass sich durch die Bewegung des Boards evtl. ne Lötstelle an einem der Displaytreiber gelöst hat?!

@Black Knight hast Du da 'ad hoc' nen Tip für mich, welches IC sollte ich mir anschauen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb bontango:

Platine 2,50€ plus Versand

Bitte einmal für mich😀 den Arduino brauche ich ja dann nicht oder?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mach Dir fertig und schick Dir eine PM

Den Arduino brauchst Du trotzdem, der macht das was sonst auf einer 'normalen' LISY die PICs machen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Quote

Ok dann warte ich auf Deine Freigabe. Also auch noch keine anderen Teile bestellen?

Die Reichelt Teile kannst du theoretisch bestellen. Weißt du schon, woher du die Molex-Stecker und den 74HCT154 bekommst? Die gibt's nämlich nicht bei Reichelt. Wenn du die bei Digikey oder bei Mouser bestellst, dann würde ich an deiner Stelle einfach einen 74BCT760 mit bestellen. Ich bin mir sehr sicher, dass es damit klappt, aber da ich keinen habe kann ich natürlich nur nach Datenblatt entscheiden, womit ein gewisses Restrisiko bleibt.

7 hours ago, bontango said:

hast Du da 'ad hoc' nen Tip für mich, welches IC sollte ich mir anschauen?

Der 74HCT154 (U14) ist für's Display-Strobing zuständig, das wäre der heisseste Kandidat. Schau dir mit dem Scope oder dem Logik-Tester mal am APC den Stecker 1J1 an (Sys7 Name ist 1J7). Wenn da irgendein Pin nicht toggelt, dann hast du's.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb Black Knight:

Wenn du die bei Digikey oder bei Mouser bestellst,

Gehen diese Molex Stiftleisten bei Digi-Key : WM4627-ND  ?

Oder gibt es noch günstigere?

Bearbeitet von Marc1
Link zu diesem Kommentar
Auf anderen Seiten teilen

16 minutes ago, Marc1 said:

Oder gibt es noch günstigere?

Keine Ahnung, ich habe die gleichen, die der Ralf verwendet hat (zu sehen auf seinen Bildern auf Seite 8 dieses Threads). Die hat mir ein Freund vor ein paar Jahren mal mitgebracht und ich weiß daher nicht welcher Typ das ist oder was sie kosten?

Dein Typ von Digikey müsste aber auch passen.

Wenn du das Board nur in einem Typ Flipper benutzen möchtest, brauchst du übrigens nicht alle Stecker zu bestücken; bei allen Steckern, die doppelt ausgeführt sind, ist der innere für Sys9 und Sys11 und der äußere für Sys3 bis Sys7.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hab die hier bei Digikey erstanden: WM50008-24-ND ist ein 24er Block der sich sehr leicht trennen lässt, preislich geben

die sich aber glaub ich nichts zu denen die Du verlinkt hast.

Bearbeitet von bontango
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 45 Minuten schrieb Black Knight:

Wenn du das Board nur in einem Typ Flipper benutzen möchtest, brauchst du übrigens nicht alle Stecker zu bestücken; bei allen Steckern, die doppelt ausgeführt sind, ist der innere für Sys9 und Sys11 und der äußere für Sys3 bis Sys7.

Wenn dann machen wir schon das volle Programm, hab ja noch einen BK😀, werde jetzt mal die Teile bei Digi-Key bestellen.

P.S. Digi-Key Warenkorb gibt es nicht oder?

Bearbeitet von Marc1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb Black Knight:

Der 74HCT154 (U14) ist für's Display-Strobing zuständig, das wäre der heisseste Kandidat. Schau dir mit dem Scope oder dem Logik-Tester mal am APC den Stecker 1J1 an (Sys7 Name ist 1J7). Wenn da irgendein Pin nicht toggelt, dann hast du's.

Schau ich mir morgen mal an, will aber erst den Kabelbaum wieder fixieren und brauche dazu nen Sack Kabelbinder

btw: könntest Du doch noch mal in deinen Code in die Switchroutine schauen, wo man die eventuell abklemmen kann,

oder ne Option in die 'Defaults' einbauen die man setzen kann?

Der Arduino  bringt mir ohne APC beim Start jedesmal andere Switches hoch, ist zum Testen etwas störend

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

41 minutes ago, bontango said:

preislich geben die sich aber glaub ich nichts zu denen die Du verlinkt hast.

Ich finde die trotzdem besser, weil die anderen eine durchgehende Arretierung haben. Sowas ist in den Sys7 Geräten im Original drin und ich habe mir da schon öfters die Hände vermackt, weil die Stecker da kaum raus zu kriegen sind.

35 minutes ago, Marc1 said:

Wenn dann machen wir schon das volle Programm, hab ja noch einen BK

Willst du selbst programmieren oder PinMame nutzen? Im ersteren Fall würde ich den BK aus alphanumerische Displays umrüsten, wie ich das auch gemacht habe und der Ralf das jetzt auch bei seinem Comet macht. Dadurch hätte ich da jetzt zufällig auch noch einen Satz Platinen da, für 11€ lege ich sie noch zu der APC Platine.

36 minutes ago, bontango said:

könntest Du doch noch mal in deinen Code in die Switchroutine schauen, wo man die eventuell abklemmen kann

Einfach im APC.ino die folgende Passage auskommentieren:

void TC7_Handler() {                                  // interrupt routine - runs every ms
	TC_GetStatus(TC2, 1);                               // clear status
	static byte DispCol = 0;                            // display column being illuminated at the moment
	static byte LampCol = 0;                            // lamp column being illuminated at the moment
	static uint16_t LampColMask = 2;                    // mask for lamp column select
	static bool LEDFlag;																// stores whether Sel5 has to be triggered by the rising or falling edge
	static byte LEDCount = 0;														// points to the next command byte to be send to the LED exp board
	int i;                                              // general purpose counter
	uint32_t Buff;
	uint16_t c;

	if (APC_settings[DebugMode]) {
		*(DisplayLower) = RightCredit[32 + 2 * ActiveTimers];} // show the number of active timers

	// Switches

	i = 0;
	Buff = REG_PIOA_PDSR;
//	while ((SwitchRows[SwDrv] != (Buff & 29425756)) && (SwEvents[SwitchStack] < 30)) {		// as  long as something is different at the switch port
//		if (Buff & SwitchMask[i]) {												// scan the switch port bit by bit
//			if (!(SwitchRows[SwDrv] & SwitchMask[i]))  {		// different from the stored switch state?
//				SwitchRows[SwDrv] = SwitchRows[SwDrv] | SwitchMask[i];	// then change it
//				SwEvents[SwitchStack]++;											// increase the number of pending switch events
//				c = 0;
//				while (ChangedSw[SwitchStack][c] && (c<29)) {	// look for a free slot
//					c++;}
//				ChangedSw[SwitchStack][c] = SwDrv*8+i+1;}}		// store the switch number to be processed in the main loop
//		else {
//			if (SwitchRows[SwDrv] & SwitchMask[i])  {				// different from the stored switch state?
//				SwitchRows[SwDrv] = SwitchRows[SwDrv] & (29425756 - SwitchMask[i]); // then change it
//				SwEvents[SwitchStack]++;											// increase the number of pending switch events
//				c = 0;
//				while (ChangedSw[SwitchStack][c] && (c<29)) {	// look for a free slot
//					c++;}
//				ChangedSw[SwitchStack][c] = SwDrv*8+i+1;}}		// store the switch number to be processed in the main loop
//		i++;}
	SwDrvMask = SwDrvMask<<1;                  					// and the corresponding select pattern

Dann sollte Ruhe sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

54 minutes ago, Marc1 said:

Ich hoffe da auf Ralf🙂🙂

Wenn du damit Ralfs PinMame Künste meinst dann werden dir die Displays nicht viel nützen, da der PinMame sie nie als Alphanumerische nutzen wird. Das macht nur mit MPF oder mit der APC API Sinn.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 12 Stunden schrieb Black Knight:

Wenn du damit Ralfs PinMame Künste meinst dann werden dir die Displays nicht viel nützen, da der PinMame sie nie als Alphanumerische nutzen wird. Das macht nur mit MPF oder mit der APC API Sinn.

Bis auf die Boot/Einschaltmeldung und ggf. Fehlermeldungen von LISY .. die komen dann als Text und nicht als Zahlen 😎

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 3.6.2019 um 16:33 schrieb Black Knight:

Der 74HCT154 (U14) ist für's Display-Strobing zuständig, das wäre der heisseste Kandidat.

das wars! Habe den mal auf Verdacht nachgelötet und jetzt gehts es wieder.

Mit der SMD Lötpastemenge bin ich noch nicht so geübt, ich denke da muss mehr ...

 

EDIT: mit den auskommentierten Zeilen für die Swicthe klappt auch, Merci!

Bearbeitet von bontango
Link zu diesem Kommentar
Auf anderen Seiten teilen

Sehr gut. Was ist eigentlich aus dem merkwürdigen Verhalten beim Spulentest geworden, war das im BaseCode Modus weg?

Du hattest doch auch mal so eine nette Tabelle mit einer Übersicht über die verschiedenen Stecker des APC gemacht. Kannst du mir die irgendwie zukommen lassen? Ich würde die gerne in die Doku packen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Black Knight Hast Du Zeit um Teile der 0.09 API zu implementieren?

Wichtig wäre mir die "Configure Hardware Rule for Solenoid (0x3C)", und eins von den 'Play Sound' Kommandos

( Index und/oder Play soundfile), dann könnten wir den Comet nächsten Freitag evtl. schon mal spielen ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

3 hours ago, bontango said:

Hast Du Zeit um Teile der 0.09 API zu implementieren?

Ich hoffe, da am WE was machen zu können. Ich will ja sowieso da ran, um zu Beginn eine Null für den MPF zu senden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

8 hours ago, bontango said:

und eins von den 'Play Sound' Kommandos

Play Sound File (0x34) ist schon länger implementiert, das kannst du also nutzen.

Wenn du den alten Lautstärkeregler nicht nutzt (also Stecker 1J16 offen lässt) musst du allerdings vorher die Lautstärke einstellen, denn die steht standardmäßig auf Null. Das kannst du über das Kommando Set Sound Volume (0x36) machen oder in den System Settings. Da sind die Werte allerdings doppelt so hoch, da ich intern nicht Prozent, sondern einen Bytewert für die Laustärke verwende. Die höchsten 56 Einstellungen kann man über USB dann nicht einstellen, aber das will sowieso niemand machen der nicht komplett taub ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

On 5/30/2019 at 4:07 PM, jabdoa said:

Ich implementiere das jetzt mal fix so in MPF.

Bin gerade dabei, es auch in den APC Code zu packen, dabei sind mir noch ein Paar Dinge aufgestoßen:

  • Unter Limitations steht 'Max 7 segment displays' und ich finde das sollten wir umformulieren in 'Max 7 non-dotmatrix displays' oder 'Max 7 display panels'. Sonst könnte man meinen keine 14 segment alphanumerischen Displays verwenden zu können.
  • Außerdem sollten wir auch noch die Anzahl der HW rules begrenzen. Ich habe bei mir jetzt mal 16 genommen, mehr geeignete Spulen gibt's bei Williams sowieso nicht.
  • Bei 'Get Segment Display Details' (0x07) stellt sich die Frage, wie wir die frühen Sys11 Displays einordnen, die oben 14-segment und unten 7-segment Displays verwenden. Ich würde vorschlagen sie als 14-segment einzuordnen, womit dann klar wäre, dass die Dinger nicht mit BCD sondern ASCII anzusprechen sind. Dadurch würde der APC automatisch versuchen auch auf den Unteren Buchstaben darzustellen, so gut es eben geht.  
  • Die Kommandos 'Set Sound Volume' und 'Init/Reset' haben beide die gleich Nummer (0x36). Ich werde 'Init/Reset' daher jetzt als (0x37) implementieren.
  • Da es bei mir keine PWM Spulen gibt macht eine Null bei 'Configure Hardware Rule for Solenoid' (0x3c) keinen Sinn, daher wird der Befehl bei mir dann ignoriert.
  • Und soll ein Schalter, der eine HW Rule ausgelöst hat trotzdem noch bei 'get changed switches' (0x29) gemeldet werden? Genau wie bei Williams ist das bei mir jetzt nicht der Fall.
  • Dann noch ein Copy/Paste Fehler: Im Beispiel von 'get changed switches' (0x29) steht als Commandowert 40, das muss aber 41 sein - im Comment steht's auch richtig.

Eins noch zum Abschluss: könnt ihr den initialen HW Reset eigentlich irgendwie verhindern? Das Problem ist nämlich, dass der APC nach einem kompletten Neustart auf der SD Karte nachsieht, welchem Spielmodus er starten soll. Findet er keine Karte nimmt er die Standardeinstellung und die ist der BaseCode. Daher kann man den USB Modus beim APC momentan nur mit einer SD Karte verwenden, da man sonst immer wieder im BaseCode landet.

Melde mich wieder, wenn alles drin ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Black Knight:

Und soll ein Schalter, der eine HW Rule ausgelöst hat trotzdem noch bei 'get changed switches' (0x29) gemeldet werden? Genau wie bei Williams ist das bei mir jetzt nicht der Fall.

Wenn das rein über HW geht und die MPU da nichts von mitbekommt (Punkte zählen evtl.?) brauch ich den Wechsel nicht.

 

vor 1 Stunde schrieb Black Knight:

könnt ihr den initialen HW Reset eigentlich irgendwie verhindern?

Das macht der Arduiono wenn das Signal 'Data Terminal Ready'' hoch geht.

Ich habe bislang nur ne Methode gefunden dass ab dem zweiten connect zu verhindern, einmal macht er es immer.

Hast Du für das nächste HW Release mal über DIP-Switches nachgedacht? Auch für die Einstellung der Display Variante wär das gut.

Ich hatte mir einmal beim Einstellungen den Displaytyp verbogen, da war dann nichts mehr lesbar, durch die Speicherung auf der SD Karte

kam er dann auch immer im selben Modus hoch, da war ich froh dass er ohne SD Karte die Defaults nimmt, die bei mir USB-Mode und F14 display sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Volley:

Bitte 1x LisyMini für mich. Nehm ich nächte Woche dann mit!

Klar, hab ich schon reserviert, sind noch zwei da, eine für dich und eine für 'den anderen' Frank 😁

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