Tartalomjegyzék:
- kellékek:
- 1. lépés: Háttér beszélgetés
- 2. lépés: A nagy áramkör
- 3. lépés: Az Arduino programozása és néhány teszt elvégzése
- 4. lépés: Játék!
Ez az útmutatás megmutatja, hogyan használhatja a NES vezérlőt az Atari 2600 vagy a ZX Spectrum (a Kempston Interface) segítségével egy Arduino segítségével.
kellékek:
1. lépés: Háttér beszélgetés
Nemrég megvásároltam néhány Atari 2600-at és egy csomó joystickot. Mindkét konzol működött, de az 5 joystick mindegyikét megrongálta. Sőt, nagyon könnyű megtalálni. Egy régi Atari 2600 konzolt könnyű megtalálni, de nehéz megtalálni az eredeti joystick-ot hasznos állapotban.
Másrészt, volt egy tartalék NES „generikus” vezérlője, aki egy tökéletesen működő bolhapiacon vásárolt.
Arra gondoltam, hogy egy mikrovezérlőt használunk a NES joystick-ban lévő sorosított jelek átalakítására az Atari 2600 által igényelt párhuzamos jelekre, de akkor azon tűnődtem, hogy ha egy egyéni mikrokontrolltábla helyett egy Arduino-t használnék. Tehát más, sok elektronikai készséggel nem rendelkező ember könnyen összeállíthatja saját adaptereit.
2. lépés: A nagy áramkör
Az áramkör csak az Arduino-t és egy pár csatlakozót használja. A kód nagyon kicsi, így minden Arduino tábla meg fog tenni. De itt mindkettő követi a listát.
Darabjegyzékben:
- 1 Arduino (bármelyik verzió)
- 2 db DB-9 férfi csatlakozó. Az egyik a NES általános vezérlőjéhez, a másik pedig a tesztdonglehez
- 1 db DB-9 női csatlakozó, az Atari csatlakozásához.
- 5 db a tesztdonglehez
- 5 ellenállás 330 Ohm 1/4 Watt a teszt dongle számára
- Egy csomó vezeték
Természetesen lehetséges a régi Atari Joystick kábel újrafelhasználása a DB9 női plusz vezetékek helyett.
Lehetőség van a NES vezérlő kábelének vágására is, és közvetlenül csatlakoztatható az Arduino-hoz, de meg kell határoznia a vezetékek vezetékeit.
3. lépés: Az Arduino programozása és néhány teszt elvégzése
Fordítsa össze és töltse fel az alábbi kódot az Arduino-ba. Az IDE 0.22-es verziójával készült. Mielőtt összekapcsolná az áramkört az ATARI használatával, használjon egy Dongle-t, hogy ellenőrizze az áramkör helyes viselkedését. A dongle-ben lévő ledeket a NES vezérlő gombjainak megfelelően kell aktiválni. Mindkét akciógomb azonos (és egyetlen) Atari gombbal van leképezve. A dongle teszteléséhez szükséges az Arduino kártyát.
//
// ATARI 2600-as játék a NES vezérlővel Danjovic, 2012
// Arduino-ról 0,22
//
/*
ATARI 2600 Joystick
Az Atari 2600 Joystick szekvenciálisan aktiválja az alábbi utasításokat
FEL, LE, LE, JOBB, JOBBRA
AZ ATARI JOYSTICK CSATLAKOZTATÁSA
Funkció DB-9 Arduino AVR
UP 1 pin 2 (PD2)
DOWN 2 pin 3 (PD3)
LEFT 3 pin 4 (PD4)
JOBB 4 pin 5-ös (PD5)
+ 5VCC 5 + 5V + Vcc
TRIGGER 6 Pin 6 (PD6)
GND 9 GND GND
*/
/*
NES vezérlő
Tartalmaz egy CMOS Shift regisztert (CD4021). Adatcsere az Óra emelési határán
gombsorozat az alábbiak szerint.
retesz ___ --- _______________________
Óra _______-__-__-__-__-__-__-__
Adatok xxxA B SL ST UP DW LF RG
A NES vezérlőt az Arduino biztosítja.
Funkció DB-9 Arduino AVR
DATA 2 Pin 8 (PB0)
LATCH 3 Pin 9 (PB1)
CLOCK 4 Pin 10 (PB2)
+ 5VCC 7 pólus 11 (PB3)
GND 8 Pin 12-es (PB4)
*/
// alkalmazkodni a hardver konfigurációhoz
#define POWER_VIA_PORT_B3_B4 1 // használja a B3 és B4 porttűzeket tápegységként
#undef int
#include
/ * Atari Joystick port csatlakozások * /
int Up_Pin = 2;
int Down_Pin = 3;
int Left_Pin = 4;
int Right_Pin = 5;
int Trigger_Pin = 6;
/ * NES vezérlő kapcsolatok * /
int Data_Pin = 8;
int Latch_Pin = 9;
int Clock_Pin = 10;
int PWR5V_Pin = 11; // erő
int PWRGND_Pin = 12;
érvénytelen beállítás ()
= _BV (PORTB3)
// Végezzen egy óra ciklust a NES-vezérlő órarendjén
void do_clock (void) {
digitalWrite (Clock_Pin, HIGH); // Emelje fel az óra csapját
delayMicroseconds (10); // 10 mikroszekundumra szünetel
digitalWrite (Clock_Pin, LOW); // kikapcsolja a csapot
delayMicroseconds (50); // további 10 mikroszekundumot szüneteltet
}
/*
Itt van a fő hurok. Kinyomtat egy retesz impulzust, majd elkezdi a gombok állapotát.
Az Atari joystick port csapjai a váltásból olvasott bitek állapotának megfelelően vannak beállítva
regisztráljon a NES vezérlőn belül.
*/
érvénytelen hurok ()
{
digitalWrite (Latch_Pin, HIGH); // Emelje fel a reteszjelet
delayMicroseconds (30); // 30 mikroszekundumig tartsa
digitalWrite (Latch_Pin, LOW); // A reteszjelet alacsony szintre állítja vissza
delayMicroseconds (10); // több 10 mikroszekundumig tartsa
// Folyamat gomb A (ne feledje: egy nulla eszköz megnyomása)
ha (digitalRead (Data_Pin))
{
pinMode (Trigger_Pin, INPUT); // Szüntesse meg a PIN-kódot (a nulla gomb megnyomása)
}
más
{
pinMode (Trigger_Pin, OUTPUT); // Tűz jelzése
}
do_clock (); // Minden bit végén egy impulzus jön létre
// Folyamatgomb B // Mindkét NES gomb triggert hoz létre az Atari számára
ha (digitalRead (Data_Pin))
{
pinMode (Trigger_Pin, INPUT); // Csatolás megszüntetése
}
más
{
pinMode (Trigger_Pin, OUTPUT); // Tűz jelzése
}
do_clock ();
// Átugrani a választógombot
do_clock ();
// Indítsa el a Start gombot
do_clock ();
// UP irány
ha (digitalRead (Data_Pin))
{
pinMode (Up_Pin, INPUT); // Csatolás megszüntetése
}
más
{
pinMode (Up_Pin, OUTPUT); // Tűz jelzése
}
do_clock ();
// Folyamat lejtése
ha (digitalRead (Data_Pin))
{
pinMode (Down_Pin, INPUT); // Csatolás megszüntetése
}
más
{
pinMode (Down_Pin, OUTPUT); // Tűz jelzése
}
do_clock ();
// FELÜLET irányítása
ha (digitalRead (Data_Pin))
{
pinMode (Left_Pin, INPUT); // Csatolás megszüntetése
}
más
{
pinMode (Left_Pin, OUTPUT); // Tűz jelzése
}
do_clock ();
// Jobb irány
ha (digitalRead (Data_Pin))
{
pinMode (Right_Pin, INPUT); // Csatolás megszüntetése
}
más
{
pinMode (Right_Pin, OUTPUT); // Tűz jelzése
}
do_clock (); // Biztosan használhatatlan, de megtartják a mintát
// Minden gomb elolvasása után várjon 10 milissecondot a következő olvasat előtt
késleltetés (10);
}
4. lépés: Játék!
Most, hogy az áramkört a dongle segítségével teszteltük, csatlakoztathatjuk az Atari-hoz. Az Arduino kártyát ezután a joystick csatlakozója táplálja (ezért nincs szükség külső tápellátásra).
Élvezze a konzolt az új vezérlővel.