Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
nsm:mint [2021/10/02 18:49] – [Pinmapping] gerald | nsm:mint [2024/10/31 22:44] (aktuell) – [Walzenbilder mint] gerald | ||
---|---|---|---|
Zeile 24: | Zeile 24: | ||
===== SteckerPlatte Spielwalzen ===== | ===== SteckerPlatte Spielwalzen ===== | ||
+ | |||
+ | https:// | ||
Die kleine, gesteckte Platine über den Spielwalzen | Die kleine, gesteckte Platine über den Spielwalzen | ||
Zeile 166: | Zeile 168: | ||
- 1 **I** Spannungs-Ist-Wert (12,3V ? direkt nach Gleichrichter) | - 1 **I** Spannungs-Ist-Wert (12,3V ? direkt nach Gleichrichter) | ||
- 2 **O** 1. Walzenlaufrelais (1WL) LILA MITTE 6C PIN36 | - 2 **O** 1. Walzenlaufrelais (1WL) LILA MITTE 6C PIN36 | ||
- | - 3 **OL** LED 101 | + | - 3 **O** LED 101 LILA MITTE 7C PIN37 1KOhm an Pin! (dieser Pin hat noch einen Widerstand 2.3kOhm an 5V! Warum? Hab ich so übernommen) |
- 4 **O** Reserve | - 4 **O** Reserve | ||
- 5 **O** Münzrelais (MS) (2 grüne Lampen) LILA MITTE 5C PIN35 | - 5 **O** Münzrelais (MS) (2 grüne Lampen) LILA MITTE 5C PIN35 | ||
Zeile 173: | Zeile 175: | ||
- 8 **O** 3. Matrixrelais (3MX) LILA MITTE 2C PIN32 | - 8 **O** 3. Matrixrelais (3MX) LILA MITTE 2C PIN32 | ||
- 9 **O** 1. Impulsrelais (1IM) LILA MITTE 1C PIN31 | - 9 **O** 1. Impulsrelais (1IM) LILA MITTE 1C PIN31 | ||
- | - 10 **O** 4. Impulsrelais (4IM) LILA MITTE 8C PIN38 (7C=PIN36) | + | - 10 **O** 4. Impulsrelais (4IM) LILA MITTE 8C PIN38 |
- 11 **O** 3. Impulsrelais (3IM) LILA LINKS 8C PIN30 | - 11 **O** 3. Impulsrelais (3IM) LILA LINKS 8C PIN30 | ||
- 12 **O** 2. Impulsrelais (2IM) LILA LINKS 7C PIN29 | - 12 **O** 2. Impulsrelais (2IM) LILA LINKS 7C PIN29 | ||
Zeile 254: | Zeile 256: | ||
links (direkt neben mitte): PIN51 | links (direkt neben mitte): PIN51 | ||
- | RELAIS-Pins: | + | ==== Pinmapping Codeumsetzung ==== |
+ | |||
+ | RELAIS | ||
< | < | ||
Zeile 260: | Zeile 264: | ||
#define RELAIS_1STS 23 // 1. StartStopp | #define RELAIS_1STS 23 // 1. StartStopp | ||
#define RELAIS_2STS 25 // 2. StartStopp | #define RELAIS_2STS 25 // 2. StartStopp | ||
- | #define RELAIS_1WL | + | #define RELAIS_1WL |
#define RELAIS_2WL 26 // 2. Walze | #define RELAIS_2WL 26 // 2. Walze | ||
#define RELAIS_3WL 27 // 3. Walze | #define RELAIS_3WL 27 // 3. Walze | ||
- | #define RELAIS_1MX | + | #define RELAIS_1MX |
#define RELAIS_2MX 28 // 2. Matrixrelais | #define RELAIS_2MX 28 // 2. Matrixrelais | ||
#define RELAIS_3MX 32 // 3. Matrixrelais | #define RELAIS_3MX 32 // 3. Matrixrelais | ||
Zeile 269: | Zeile 273: | ||
#define RELAIS_2IM 29 // 2. Impulsrelais | #define RELAIS_2IM 29 // 2. Impulsrelais | ||
#define RELAIS_3IM 30 // 3. Impulsrelais | #define RELAIS_3IM 30 // 3. Impulsrelais | ||
+ | #define RELAIS_4IM 38 // 4. Impulsrelais | ||
#define RELAIS_STO 34 // Stossrelais | #define RELAIS_STO 34 // Stossrelais | ||
#define RELAIS_MS 35 // Muenzsperrrelais | #define RELAIS_MS 35 // Muenzsperrrelais | ||
- | # | + | |
- | # | + | # |
+ | #define MUX_06 45 // 12 V fuer Abtastung ein; Walze II (mitte) PIN45 MOSFET-MITTE | ||
+ | #define MUX_07 46 // 12 V fuer Abtastung ein; Walze III (rechts) PIN46 MOSFET-RECHTS | ||
+ | |||
+ | #define IRQ_PIN_COIN 19 // (IRQ 3) Interrupt for Muenz-Einwurf & -Rueckgabe (direct, not on the gpio-expander) | ||
+ | #define BARRIER_CHANGE_PIN 3 // ext1,B haengt an diesem Pin. Damit kann man die Frequenz der Aenderungen messen. | ||
+ | #define BUTTON_STARTSTOP 18 // IRQ2 | ||
+ | |||
+ | // Test-Taster: | ||
+ | #define BUTTON_TEST_MODE 51 | ||
+ | #define BUTTON_TEST_LEFT 52 | ||
+ | #define BUTTON_TEST_RIGHT 53 | ||
+ | |||
+ | # define LED_AUTOSTART 6 // LED for showing autostart active PWM | ||
+ | # define SOUND_OUT | ||
+ | |||
+ | // Bytes: B 00 (00 = Expander 0x20; 01 = Expander 0x21) 0 (0: A; 1:B) 000 (000: Pin 0... 111: Pin 7) | ||
+ | // Ext 1 (0x20) | ||
+ | // A: | ||
+ | # | ||
+ | #define INPUT_KLAVIER1 B000001 | ||
+ | #define INPUT_KLAVIER2 B000010 | ||
+ | #define INPUT_KLAVIER3 B000011 | ||
+ | #define INPUT_KLAVIER4 B000100 | ||
+ | #define INPUT_KLAVIER5 B000101 | ||
+ | #define INPUT_KLAVIER6 B000110 | ||
+ | #define INPUT_KLAVIER7 B000111 | ||
+ | // B: INT | ||
+ | #define INPUT_MONEY_RETURN B001000 // 0 - Rückgabe | ||
+ | #define INPUT_MONEY_INPUT_50 B001001 // 1 - Münzeingabe 50Pf | ||
+ | #define INPUT_MONEY_INPUT_10 B001010 // 2 - Münzeingabe 10Pf | ||
+ | #define INPUT_MONEY_INPUT_100 B001011 // 3 - Münzeingabe 1DM | ||
+ | #define INPUT_CREDIT_OVERFLOW B001100 | ||
+ | #define INPUT_GAMESTOP B001101 // 5 - Spielunterbrechung | ||
+ | #define INPUT_MONEY_INPUT_500 B001110 // 6 - Münzeingabe 5DM | ||
+ | #define INPUT_MONEY_INPUT_200 B001111 // 7 - Münzeingabe 2DM | ||
+ | // Ext 2 (0x21) | ||
+ | // A: | ||
+ | #define INPUT_LEVEL_100 B010000 // 0 - Pegelschalter 1DM | ||
+ | #define INPUT_LEVEL_200 B010001 // 1 - Pegelschalter 2DM | ||
+ | #define INPUT_LEVEL_500 B010010 // 2 - Pegelschalter 5DM | ||
+ | #define INPUT_LEVEL_10 B010011 // 3 - Pegelschalter 10Pf | ||
+ | #define INPUT_CREDIT_1000 B010100 // 4 - Kreditwerk (10 GZ1) | ||
+ | #define INPUT_CREDIT_100 B010101 // 5 - Kreditwerk (1 GZ) | ||
+ | #define INPUT_CREDIT_10 B010110 // 6 - Kreditwerk (01 GZ2) | ||
+ | #define INPUT_CREDIT_30 B010111 // 7 - Kreditwerk (01 GZ1 (> | ||
+ | // B: INT | ||
+ | #define INPUT_LIGHT_BARRIER_0 B011000 // 0 - Fotoabtastung 0 | ||
+ | #define INPUT_LIGHT_BARRIER_1 B011001 // 1 - Fotoabtastung 1 | ||
+ | #define INPUT_LIGHT_BARRIER_2 B011010 // 2 - Fotoabtastung 2 | ||
+ | #define INPUT_LIGHT_BARRIER_3 B011011 // 3 - Fotoabtastung 3 | ||
+ | #define INPUT_LIGHT_BARRIER_4 B011100 // 4 - Fotoabtastung 4 | ||
+ | #define INPUT_SONDERSPIEL_1 B011101 // 5 - Sonderspielzähler (1SZ) | ||
+ | #define INPUT_SONDERSPIEL_10 B011110 // 6 - Sonderspielzähler (10SZ) | ||
+ | #define INPUT_RESERVE B011111 // 7 // NICHT BELEGT- | ||
+ | |||
+ | #define TIME_STROKE 70 // Time in ms to hold a stroke | ||
+ | #define TIME_STROKE_BETWEEN 170 // Time in ms wait between strokes | ||
+ | |||
</ | </ | ||
Zeile 309: | Zeile 372: | ||
==== Walzenbilder mint ==== | ==== Walzenbilder mint ==== | ||
- | ab Naht nach oben gedreht. | + | ab Naht nach unten gedreht. |
Kirsche, Melone, Zitrone, Orange, Stern, Pflaume, Glocke, 7 | Kirsche, Melone, Zitrone, Orange, Stern, Pflaume, Glocke, 7 | ||
- | (Die Codes der Lichtschranken sind einfach nacheinander durchnummeriert von 1 bis 20. Die Reihenfolge sind aber genau andersherum wie ich dachte, also Walzen nach unten gedreht). | + | (Die Codes der Lichtschranken sind einfach nacheinander durchnummeriert von 1 bis 20.). |
Die 5 Lichtschranken (im Schaltplan ' | Die 5 Lichtschranken (im Schaltplan ' | ||
- | === Walze 1 === | + | ^ # ^ BIN ^ W1 ^ W2 ^ W3 | |
- | | + | ^ 1 | 00001 | 7 | K | 7 | |
- | | + | ^ 2 | 00010 | K | M | K | |
- | - Z | + | ^ 3 | 00011 | P | K | O | |
- | - K | + | ^ 4 | 00100 | M | M | M | |
- | - O | + | ^ 5 | 00101 | K | K | G | |
- | - M | + | ^ 6 | 00110 | G | G | K | |
- | - P | + | ^ 7 | 00111 | K | K | Z | |
- | - K | + | ^ 8 | 01000 | Z | Z | K | |
- | | + | ^ 9 | 01001 | M | K | S | |
- | - S | + | ^ 10 | 01010 | K | S | M | |
- | - K | + | ^ 11 | 01011 | S | M | K | |
- | - M | + | ^ 12 | 01100 | M | P | M | |
- | - Z | + | ^ 13 | 01101 | K | K | P | |
- | - K | + | ^ 14 | 01110 | P | 7 | K | |
- | | + | ^ 15 | 01111 | M | M | O | |
- | - K | + | ^ 16 | 10000 | O | O | M | |
- | - M | + | ^ 17 | 10001 | K | K | Z | |
- | - P | + | ^ 18 | 10010 | Z | Z | K | |
- | - K | + | ^ 19 | 10011 | M | M | M | |
- | - 7 #1 | + | ^ 20 | 10100 | K | P | K | |
- | + | ||
- | === Walze 2 === | + | |
- | + | ||
- | - P (0) #20 | + | |
- | - M (1) | + | |
- | - Z | + | |
- | - K | + | |
- | - O | + | |
- | - M | + | |
- | - 7 | + | |
- | - K | + | |
- | - P | + | |
- | - M | + | |
- | | + | |
- | - K | + | |
- | - Z | + | |
- | - K | + | |
- | - G | + | |
- | - K | + | |
- | - M | + | |
- | - K (1) | + | |
- | - M (0) | + | |
- | | + | |
- | + | ||
- | + | ||
- | === Walze3 === | + | |
- | + | ||
- | + | ||
- | - K #20 | + | |
- | - M | + | |
- | - K | + | |
- | - Z | + | |
- | - M | + | |
- | | + | |
- | - K | + | |
- | - P | + | |
- | - M | + | |
- | | + | |
- | - M #10 | + | |
- | - S | + | |
- | - K | + | |
- | | + | |
- | - K | + | |
- | - G | + | |
- | - M | + | |
- | - O | + | |
- | - K | + | |
- | - 7 #1 | + | |
C-Code Arduino: | C-Code Arduino: | ||
Zeile 436: | Zeile 451: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | 4_walzen.ino : | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | uint8_t read_barrier(){ | ||
+ | |||
+ | digitalWrite(LED_BUILTIN, | ||
+ | // 0, wenn Licht durchfällt, | ||
+ | // B11111 = kann nichts lesen: Licht aus oder kaputt | ||
+ | // B00000 sollte nicht vorkommen | ||
+ | // B10100 hoechster Wert (20) | ||
+ | uint8_t licht = gpio_ext2.readPort(MCP23017Port:: | ||
+ | // | ||
+ | // | ||
+ | |||
+ | licht = licht & B11111; | ||
+ | uint8_t licht2 = licht | B10000000; | ||
+ | Serial.print(" | ||
+ | Serial.print(licht2, | ||
+ | Serial.println(); | ||
+ | digitalWrite(LED_BUILTIN, | ||
+ | return (unsigned int)licht; | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
==== Einstellungen Mäuseklavier ==== | ==== Einstellungen Mäuseklavier ==== | ||
< | < | ||
- | 1-3-2 | + | Röhren- |
- | Autostart | + | |
+ | DM Aus Aus An | ||
| | | | | | | | | | | | | | | | | | ||
1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | ||
| | | | | | | | | | | | | | | | | | ||
- | | + | € |
- | 1-2-3 | + | 1-3-2 |
</ | </ | ||
+ | __Beschreibung Einstellungen__ | ||
+ | |||
+ | * DM/Euro: Im DM-Modus verhält sich der Münzeinwurf exakt wie beim Original. Im Euro-Modus lässt sich der Münzwert jeder der 5 Münzsschalter einzeln über das Software-Menü einstellen (oder deaktivieren). Die Reihenfolge der Werte spielt keine Rolle (der 5DM-Einwurf kann z.B. mit 50 Cent belegt werden und der 1DM-Einwurf mit 2EU). Beim Auszahlen werden diese Werte berücksichtigt. | ||
+ | * Speedtest: Während des Spiels wird überprüft, | ||
+ | * Röhrenschalter: | ||
+ | * Synchronisation: | ||
+ | * Freispiel: Wird bei Geldzählerstand Null die Geldrückgabe-Taste gedrückt, dann zählt der Automat ein Spiel auf und beginnt sofort dieses Spiel (man spart sich den Einwurf von 30 Geldeinheiten). | ||
+ | * Startautomatik: | ||
+ | * Klassik/ | ||
+ | * Gurkenmodus: | ||
+ | |||
+ | Mit alles Mini-Schaltern nach unten verhält sich der Automat genau wie mit der Original-Elektronik ohne eingebaute Verzögerungsschaltung. | ||
+ | |||
+ | |||
+ | ==== Features ==== | ||
+ | |||
+ | === Standardfeatures === | ||
+ | |||
+ | |||
+ | * Steuereinheit kann alle eingebauten Aktoren wie Relais ansprechen | ||
+ | * Alle Schalter und Zählwerke können ausgelesen werden. | ||
+ | * Starten, Stoppen und Auslesen der 3 Walzen | ||
+ | * Überwachung der 12V-Stromversorung (wie Original) | ||
+ | * Überwachung der Walzengeschwindigkeit | ||
+ | * Geldauszahlung abhängig von Münzstandschaltern | ||
+ | * Spielablauf wie originale Steuerung | ||
+ | * Münzannahme in jeder Spielsituation | ||
+ | * Spielunterbrecherschalter wie Original (Stoppt vor Walzenauslesung) und zusätzliche Stopp zwischen den Spielen | ||
+ | * Verzögerung bei Betätigung der Stopptasten ausschaltbar (' | ||
+ | * Vollwertiger Ersatz des Originalcontrollers von 1977 ohne dass Nutzer das von außen merkt | ||
+ | |||
+ | === Zusätzliche Features === | ||
+ | |||
+ | * 4-zeiliges Display | ||
+ | * Bei Fehlermodus genaue Anzeige im Display, was fehlerhaft ist | ||
+ | * Optokoppler zum Schutz des Controllers | ||
+ | * Münzniveauschalter ausschaltbar (deine Papierstreifen o.ä. mehr nötig) | ||
+ | * Fehlermodus bei zu langsam drehenden Walzen abschaltbar | ||
+ | * Alternativer Spielmodus (z.B. anderes Timing, anderer Walzenstopp, | ||
+ | * Interne Buchhaltung mit Anzeige des Betrages (wie auf analogen Zählern, wenn Synchronisation eingeschaltet ist), Summe der Einsätze und Gewinne | ||
+ | * Permanente Anzeige der Gewinnquote | ||
+ | * Spieler kann Startautomatik einschalten (deaktivierbar). LED-Licht bei eingeschalteter Startautomatik. Startautomatik schaltet sich nach 3 Minuten ohne Spiel automatisch aus. | ||
+ | * Freispiel einstellbar | ||
+ | * Jeder der 5 Münzschalter (und 4 Münzröhren) ist auf den Betrag frei programmierbar (im Euro-Modus; erleichtert die Umstellung auf Euro). Diese Beträge werden auch bei der Auszahlung berücksichtigt | ||
+ | * Internes Test- und Einstellungsmenü (via 3 Taster auf dem Board und Start/ | ||
+ | * Kleiner Piezo-Lautsprecher für dezente Hinweise | ||
+ | * Im Fehlermodus in den Einstellungsmodus gehen und dann wieder in den Spielmodus. DAs resettet den Fehlermodus; | ||
+ | |||
+ | Fehlt noch/Bugs: | ||
+ | |||
+ | * LED auf dem Relaisboard (LED 101) wird noch nicht korrekt angesprochen | ||
+ | * Das Schreiben aller Walzenstellungen jedes Spiels auf SD-Karte zur späteren statistischen Auswertung wäre nett. | ||
+ | * Timing sehr ähnlich dem Original, aber noch nicht 100%ig | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Spannungsmessung ==== | ||
+ | |||
+ | [[https:// | ||