![Arduino Lader dig spille Atari 2600 og ZX Spectrum ved hjælp af en NES Controller: 4 trin (med billeder) Arduino Lader dig spille Atari 2600 og ZX Spectrum ved hjælp af en NES Controller: 4 trin (med billeder)](https://img.gwsigeps.com/img/circuits/arduino-lets-you-play-atari-2600-and-zx-spectrum-using-a-nes-controller-5.jpg)
Indholdsfortegnelse:
- forsyninger:
- Trin 1: Background Talk
- Trin 2: Den 'store' kredsløb
- Trin 3: Programmering af Arduino og udførelse af nogle tests
- Trin 4: Spiller!
Dette instruerbare viser dig, hvordan du bruger NES controller i Atari 2600 eller ZX Spectrum (med Kempston Interface) ved hjælp af en Arduino.
forsyninger:
Trin 1: Background Talk
Jeg har for nylig erhvervet et par Atari 2600'er og en flok joysticks. Begge konsoller arbejdede, men alle de 5 joysticks blev beskadiget uden reparation. Faktisk er det meget nemt at finde Det er nemt at finde en gammel Atari 2600-konsol, men det er svært at finde en original joystick i brugbar tilstand.
På den anden side havde jeg en ekstra NES 'generisk' controller købt i et loppemarked, der fungerede perfekt.
Jeg tænkte på at bruge en mikrocontroller til at konvertere de serielle signaler i NES joystick til parallelle signaler, der kræves af Atari 2600, men så spekulerede jeg på, at hvis jeg i stedet for et brugerdefineret microcontroller board kunne bruge en Arduino. Så andre mennesker uden mange færdigheder i elektronik kunne samle deres egne adaptere med let.
Trin 2: Den 'store' kredsløb
Kredsløbet bruger kun Arduino og et par stik. Koden er meget lille, så ethvert Arduino bord vil gøre. Men hverken her følger listen.
Materialeblad:
- 1 Arduino (enhver version vil gøre)
- 2 DB-9 male stik. En til NES 'generiske' Controller og en anden til testdonglen
- 1 DB-9 Female Connector til at tilslutte til Atari.
- 5 ledninger til testdonglen
- 5 modstande 330 ohm 1/4 watt til testdonglen
- En buch af ledninger
Det er selvfølgelig muligt at genbruge det gamle Atari Joystick-kabel i stedet for DB9 kvindelige pluskabler.
Det er også muligt at skære NES controller kabel og tilslutte direkte til Arduino, men du bør identificere ledningerne i kablet.
Trin 3: Programmering af Arduino og udførelse af nogle tests
Kompilér og upload koden nedenfor til Arduino. Det blev udviklet ved hjælp af IDE version 0.22. Før du tilslutter kredsløbet til ATARI brug, brug en Dongle til at kontrollere kredsløbets korrekte adfærd. Ledningerne i donglen skal aktiveres i overensstemmelse med knapperne i NES-controlleren. Begge handlingsknapper kortlægges til samme (og såle) Atari-knap. Til testen med donglen er det nødvendigt at drive Arduino bordet.
//
// Spil på ATARI 2600 med NES Controller Af Danjovic, 2012
// Udarbejdet på Arduino 0,22
//
/*
ATARI 2600 Joystick
Aktiverer sekventielt følgende retninger fra en Atari 2600 Joystick
OP, NED, VENSTRE, HØJRE, TRIGGER
TILSLUTNINGER PÅ ATARI JOYSTICK
Funktion DB-9 Arduino AVR
UP 1 Pin 2 (PD2)
DOWN 2 Pin 3 (PD3)
VENSTRE 3 Pin 4 (PD4)
RIGHT 4 Pin 5 (PD5)
+ 5VCC 5 + 5V + Vcc
TRIGGER 6 Pin 6 (PD6)
GND 9 GND GND
*/
/*
NES Controller
Indeholder et CMOS Shift Register (CD4021). Dataændring på hævning af klokken
knappesekvens som nedenfor.
låsen ___ --- _______________________
Ur _______-__-__-__-__-__-__-__
Data xxxA B SL ST UP DW LF RG
NES-controlleren drives af Arduino.
Funktion DB-9 Arduino AVR
DATA 2 Pin 8 (PB0)
LATCH 3 Pin 9 (PB1)
CLOCK 4 Pin 10 (PB2)
+ 5VCC 7 Pin 11 (PB3)
GND 8 Pin 12 (PB4)
*/
// Tilpas til din hardwarekonfiguration
#define POWER_VIA_PORT_B3_B4 1 // brug portstifter B3 og B4 som strømforsyning
#undef int
#omfatte
/ * Atari Joystick-portforbindelser * /
int Up_Pin = 2;
int Down_Pin = 3;
int Left_Pin = 4;
int Right_Pin = 5;
int Trigger_Pin = 6;
/ * NES Controller tilslutninger * /
int Data_Pin = 8;
int Latch_Pin = 9;
int Clock_Pin = 10;
int PWR5V_Pin = 11; // strøm
int PWRGND_Pin = 12;
void setup ()
= _BV (PORTB3)
// Udfør en ur cyklus på NES controller Clock line
void do_clock (void) {
digitalWrite (Clock_Pin, HIGH); // Hæv klokstiften
delayMicroseconds (10); // pauser i 10 mikrosekunder
digitalWrite (Clock_Pin, LOW); // Sæt tappen af
delayMicroseconds (50); // pauser i yderligere 10 mikrosekunder
}
/*
Her er vores hovedløkke. Det udsender en låsepuls, og begynder at genoprette tilstanden af knapperne.
Atari-joystickportstifterne er indstillet i overensstemmelse med tilstanden af bitene, der læses fra skift
registrer dig inde i NES-controlleren.
*/
void loop ()
{
digitalWrite (Latch_Pin, HIGH); // Løft låsesignalet
delayMicroseconds (30); // hold det i 30 microseconds
digitalWrite (Latch_Pin, LOW); // Ret låsesignal til lavt niveau
delayMicroseconds (10); // Hold den i mere 10 mikrosekunder
// procesknap A (husk: en nul betyder knappen trykket)
hvis (digitalRead (Data_Pin))
{
pinMode (Trigger_Pin, INPUT); // Unassert pin (nul betyder knappen trykket)
}
andet
{
pinMode (Trigger_Pin, OUTPUT); // Assert pin
}
do_clock (); // En klokkeimpuls genereres i slutningen af hver bit
// Processknap B // Begge NES-knappen genererer en trigger til Atari
hvis (digitalRead (Data_Pin))
{
pinMode (Trigger_Pin, INPUT); // Unassert pin
}
andet
{
pinMode (Trigger_Pin, OUTPUT); // Assert pin
}
do_clock ();
// Spring Vælg knap
do_clock ();
// Spring startknap
do_clock ();
// UP retning
hvis (digitalRead (Data_Pin))
{
pinMode (Up_Pin, INPUT); // Unassert pin
}
andet
{
pinMode (Up_Pin, OUTPUT); // Assert pin
}
do_clock ();
// Process DOWN retning
hvis (digitalRead (Data_Pin))
{
pinMode (Down_Pin, INPUT); // Unassert pin
}
andet
{
pinMode (Down_Pin, OUTPUT); // Assert pin
}
do_clock ();
// Fremgangsmåde VENSTRE retning
hvis (digitalRead (Data_Pin))
{
pinMode (Left_Pin, INPUT); // Unassert pin
}
andet
{
pinMode (Left_Pin, OUTPUT); // Assert pin
}
do_clock ();
// Proces RIGHT retning
hvis (digitalRead (Data_Pin))
{
pinMode (Right_Pin, INPUT); // Unassert pin
}
andet
{
pinMode (Right_Pin, OUTPUT); // Assert pin
}
do_clock (); // Kinda ubrugelige, men holdt for at mantain mønsteret
// Efter at have læst alle knapper, vent 10 milisekunder inden næste læsning
forsinkelse (10);
}
Trin 4: Spiller!
Nu da kredsløbet blev testet med donglen, kan du forbinde det med Atari. Arduino bordet bliver drevet af joystick-stikket (derfor kræver der ikke ekstern strøm).
Nyd din konsol med den nye controller.