Inhaltsverzeichnis:
- Zubehör:
- Schritt 1: Hintergrundgespräch
- Schritt 2: Die 'große' Rennstrecke
- Schritt 3: Programmieren des Arduino und Durchführen einiger Tests
- Schritt 4: Spielen!
Diese Anleitung zeigt Ihnen, wie Sie den NES-Controller in Atari 2600 oder ZX Spectrum (mit Kempston Interface) mithilfe eines Arduino verwenden.
Zubehör:
Schritt 1: Hintergrundgespräch
Ich habe kürzlich ein paar Atari 2600 und ein paar Joysticks gekauft. Beide Konsolen funktionierten, aber alle 5 Joysticks waren irreparabel beschädigt. Tatsächlich ist es sehr leicht zu finden, dass eine alte Atari 2600-Konsole funktioniert. Es ist jedoch schwierig, einen originalen Joystick in einem nützlichen Zustand zu finden.
Auf der anderen Seite hatte ich einen Ersatz-NES-Controller gekauft, der auf einem Flohmarkt einwandfrei funktionierte.
Ich dachte darüber nach, die serialisierten Signale im NES-Joystick mit einem Mikrocontroller in parallele Signale umzuwandeln, die vom Atari 2600 benötigt werden. Dann fragte ich mich, ob ich anstelle einer benutzerdefinierten Mikrocontroller-Karte ein Arduino verwenden könnte. So könnten andere Leute ohne viele Elektronikkenntnisse mit Leichtigkeit ihre eigenen Adapter zusammenbauen.
Schritt 2: Die 'große' Rennstrecke
Die Schaltung verwendet nur den Arduino und ein paar Anschlüsse. Der Code ist sehr klein, so dass jedes Arduino-Board ausreicht. Aber so oder so folgt hier die Liste.
Stückliste:
- 1 Arduino (jede Version reicht aus)
- 2 DB-9-Stecker. Eine für den NES 'generic' Controller und eine für den Testdongle
- 1 DB-9-Buchse zum Anschluss an den Atari.
- 5 LEDs für den Test-Dongle
- 5 Widerstände 330 Ohm 1/4 Watt für den Test-Dongle
- Ein Buch von Drähten
Es ist natürlich möglich, das alte Atari-Joystick-Kabel anstelle der DB9-Buchse plus Adern wiederzuverwenden.
Es ist auch möglich, das NES-Controller-Kabel abzuschneiden und direkt mit dem Arduino zu verbinden, aber Sie sollten die Drähte im Kabel identifizieren.
Schritt 3: Programmieren des Arduino und Durchführen einiger Tests
Kompilieren Sie den folgenden Code und laden Sie ihn auf das Arduino hoch. Es wurde mit IDE Version 0.22 entwickelt. Verwenden Sie einen Dongle, um das korrekte Verhalten des Stromkreises zu überprüfen, bevor Sie den Stromkreis an den ATARI anschließen. Die LEDs im Dongle werden gemäß den Tasten im NES-Controller aktiviert. Beide Aktionsschaltflächen sind derselben (und einzigen) Atari-Schaltfläche zugeordnet. Für den Test mit dem Dongle ist es notwendig, das Arduino Board mit Strom zu versorgen.
//
// Spiele auf dem ATARI 2600 mit NES Controller Von Danjovic, 2012
// Auf Arduino 0.22 kompiliert
//
/*
ATARI 2600 Joystick
Aktiviert nacheinander die folgenden Anweisungen von einem Atari 2600-Joystick
AUF, AB, LINKS, RECHTS, TRIGGER
ANSCHLÜSSE AM ATARI JOYSTICK
Funktion DB-9 Arduino AVR
UP 1 Pin 2 (PD2)
DOWN 2 Pin 3 (PD3)
LINKS 3 Pin 4 (PD4)
RECHTS 4 Pin 5 (PD5)
+ 5VCC 5 + 5V + Vcc
TRIGGER 6 Pin 6 (PD6)
GND 9 GND GND
*/
/*
NES-Controller
Enthält ein CMOS-Schieberegister (CD4021). Datenänderung bei Erhöhung der Grenze der Uhr
Tastenfolge wie unten.
Latch ___ --- _______________________
Uhr _______-__-__-__-__-__-__-__
Daten xxxA B SL ST UP DW LF RG
Der NES-Controller wird vom Arduino mit Strom versorgt.
Funktion DB-9 Arduino AVR
DATA 2 Pin 8 (PB0)
LATCH 3 Pin 9 (PB1)
UHR 4 Pin 10 (PB2)
+ 5VCC 7 Pin 11 (PB3)
GND 8 Pin 12 (PB4)
*/
// an deine Hardwarekonfiguration anpassen
#define POWER_VIA_PORT_B3_B4 1 // Port-Pins B3 und B4 als Stromversorgung verwenden
#undef int
#umfassen
/ * Atari Joystick Port Verbindungen * /
int Up_Pin = 2;
int Down_Pin = 3;
int Left_Pin = 4;
int Right_Pin = 5;
int Trigger_Pin = 6;
/ * NES-Controller-Verbindungen * /
int Data_Pin = 8;
int Latch_Pin = 9;
int Clock_Pin = 10;
int PWR5V_Pin = 11; // Leistung
int PWRGND_Pin = 12;
void setup ()
= _BV (PORTB3)
// Einen Taktzyklus auf der Taktleitung des NES-Controllers ausführen
void do_clock (void) {
digitalWrite (Clock_Pin, HIGH); // Uhrstift anheben
delayMicroseconds (10); // pausiert für 10 Mikrosekunden
digitalWrite (Clock_Pin, LOW); // setzt den Pin ab
delayMicroseconds (50); // hält für weitere 10 Mikrosekunden an
}
/*
Hier ist unsere Hauptschleife. Es gibt einen Latch-Impuls aus und beginnt dann, den Zustand der Tasten wiederherzustellen.
Die Atari-Joystick-Port-Pins werden entsprechend dem Status der aus der Verschiebung gelesenen Bits gesetzt
Registrieren Sie sich im NES-Controller.
*/
leere Schleife ()
{
digitalWrite (Latch_Pin, HIGH); // Erhöhen Sie das Latch-Signal
delayMicroseconds (30); // halte es für 30 Mikrosekunden
digitalWrite (Latch_Pin, LOW); // Latch-Signal auf niedrigen Pegel zurücksetzen
delayMicroseconds (10); // halte es länger als 10 Mikrosekunden
// Schaltfläche A verarbeiten (denken Sie daran: Eine Null bedeutet, dass die Schaltfläche gedrückt wurde)
if (digitalRead (Data_Pin))
{
pinMode (Trigger_Pin, INPUT); // Pin entfernen (Null bedeutet gedrückt)
}
sonst
{
pinMode (Trigger_Pin, OUTPUT); // Pin bestätigen
}
do_clock (); // Am Ende jedes Bits wird ein Takt generiert
// Process Button B // Beide NES Buttons erzeugen einen Trigger für Atari
if (digitalRead (Data_Pin))
{
pinMode (Trigger_Pin, INPUT); // Pin deaktivieren
}
sonst
{
pinMode (Trigger_Pin, OUTPUT); // Pin bestätigen
}
do_clock ();
// Auswahltaste überspringen
do_clock ();
// Startknopf überspringen
do_clock ();
// AUF Richtung
if (digitalRead (Data_Pin))
{
pinMode (Up_Pin, INPUT); // Pin deaktivieren
}
sonst
{
pinMode (Up_Pin, OUTPUT); // Pin bestätigen
}
do_clock ();
// Abwärtsrichtung verarbeiten
if (digitalRead (Data_Pin))
{
pinMode (Down_Pin, INPUT); // Pin deaktivieren
}
sonst
{
pinMode (Down_Pin, OUTPUT); // Pin bestätigen
}
do_clock ();
// LINKE Richtung verarbeiten
if (digitalRead (Data_Pin))
{
pinMode (Left_Pin, INPUT); // Pin deaktivieren
}
sonst
{
pinMode (Left_Pin, OUTPUT); // Pin bestätigen
}
do_clock ();
// RICHTIGE Richtung verarbeiten
if (digitalRead (Data_Pin))
{
pinMode (Right_Pin, INPUT); // Pin deaktivieren
}
sonst
{
pinMode (Right_Pin, OUTPUT); // Pin bestätigen
}
do_clock (); // Ein bisschen nutzlos, aber behielt das Muster bei
// Nachdem Sie alle Schaltflächen gelesen haben, warten Sie 10 Millisekunden, bevor Sie das nächste Mal lesen
Verzögerung (10);
}
Schritt 4: Spielen!
Nachdem die Schaltung mit dem Dongle getestet wurde, können Sie sie mit dem Atari verbinden. Das Arduino-Board wird dann über den Joystick-Anschluss mit Strom versorgt (benötigt daher keine externe Stromversorgung).
Genießen Sie Ihre Konsole mit dem neuen Controller.