„Arduino“ leidžia žaisti „Atari 2600“ ir „ZX“ spektrus naudojant NES valdiklį: 4 žingsniai (su nuotraukomis)

„Arduino“ leidžia žaisti „Atari 2600“ ir „ZX“ spektrus naudojant NES valdiklį: 4 žingsniai (su nuotraukomis)

Turinys:

Anonim

Šiame instrukcijoje parodyta, kaip naudodami „Arduino“, naudoti „NES“ valdiklį „Atari 2600“ arba „ZX Spectrum“ (su „Kempston Interface“).

Prekės:

1 žingsnis

Neseniai įsigijau porą „Atari 2600“ ir krūva vairasvirtių. Abi konsolės dirbo, bet visi penki vairasvirtiai buvo sugadinti. Iš tiesų labai lengva rasti seną „Atari 2600“ konsolę, tačiau sunku rasti originalią vairasvirtę naudingomis sąlygomis.

Kita vertus, turėjau atsarginį NES „bendrąjį“ valdytoją, įsigytą puikiai veikiančioje blusų rinkoje.

Aš galvojau apie mikrokontrolerio naudojimą, norint konvertuoti serijinius signalus NES vairasvirte į lygiagrečius signalus, kurių reikalauja „Atari 2600“, bet tada aš įdomu, kad jei vietoj pasirinktinės mikrokontrolerio plokštės galėčiau naudoti „Arduino“. Taigi kiti žmonės, neturintys daug elektronikos įgūdžių, galėtų lengvai surinkti savo adapterius.

2 žingsnis: „Didžioji“ grandinė

Grandinėje naudojama tik „Arduino“ ir kelios jungtys. Šis kodas yra labai mažas, todėl bet koks „Arduino“ lenta bus daroma. Bet bet kuriuo atveju čia seka sąrašas.

Sąmata:

- 1 „Arduino“ (bet kokia versija bus daroma)

- 2 DB-9 vyrų jungtys. Vienas „NES“ bendriniam valdikliui, kitas - bandomojoje plokštėje

- 1 „DB-9“ moterų jungtis, skirta prijungti prie „Atari“.

- 5 „Leds“, skirti bandomojoje plokštėje

- 5 rezistoriai 330 omų 1/4 vatų bandomojoje dongle

- Daugybė laidų

Žinoma, galima naudoti seną „Atari Joystick“ kabelį vietoj DB9 moterų ir laidų.

Taip pat galima nukirpti NES valdiklio kabelį ir tiesiogiai prijungti prie „Arduino“, tačiau reikia nustatyti kabelio laidus.

3 žingsnis: „Arduino“ programavimas ir kai kurių bandymų atlikimas

Surinkite ir įkelkite žemiau esantį kodą į „Arduino“. Jis buvo sukurtas naudojant IDE versiją 0.22. Prieš prijungdami cirkuliaciją prie ATARI, naudokite „Dongle“, kad patikrintumėte teisingą grandinės elgesį. Lemputės dongle turi būti suaktyvintos pagal NES valdiklio mygtukus. Abu veiksmo mygtukai yra susieti su tuo pačiu (ir vieninteliu) Atari mygtuku. Norint atlikti bandymą su dongle, būtina valdyti „Arduino“ plokštę.

//

// Žaisti ATARI 2600 su NES valdikliu Danjovic, 2012

// Sudaryta apie 0,22 Arduino

//

/*

ATARI 2600 vairasvirtė

Aktyvina sekančias instrukcijas iš „Atari 2600 Joystick“

UP, DOWN, LEFT, RIGHT, TRIGGER

ATARI JOYSTICK JUNGTYS

Funkcija DB-9 Arduino AVR

UP 1 pin 2 (PD2)

DOWN 2 PIN 3 (PD3)

LEFT 3 pin 4 (PD4)

RIGHT 4 Pin 5 (PD5)

+ 5VCC 5 + 5V + Vcc

TRIGGER 6 Pin 6 (PD6)

GND 9 GND GND

*/

/*

NES kontrolierius

Yra CMOS perkėlimo registras (CD4021). Duomenų keitimas dėl laikrodžio padidinimo ribos

mygtuko seka.

užraktas ___ --- _______________________

Laikrodis _______-__-__-__-__-__-__-__

Duomenys xxxA B SL ST UP DW LF RG

NES valdiklį maitina „Arduino“.

Funkcija DB-9 Arduino AVR

DUOMENYS 2 kaiščiai 8 (PB0)

LATCH 3 PIN 9 (PB1)

CLOCK 4 Pin 10 (PB2)

+ 5VCC 7 kaištis 11 (PB3)

GND 8 kaištis 12 (PB4)

*/

// prisitaikyti prie aparatinės įrangos konfigūracijos

#define POWER_VIA_PORT_B3_B4 1 // naudoti maitinimo šaltinius B3 ir B4 kaip maitinimo šaltinį

#undef int

#include

/ * Atari Joystick prievadų jungtys * /

int Up_Pin = 2;

int Down_Pin = 3;

int Left_Pin = 4;

int Right_Pin = 5;

int Trigger_Pin = 6;

/ * NES valdiklio jungtys * /

int Data_Pin = 8;

int Latch_Pin = 9;

int Clock_Pin = 10;

int PWR5V_Pin = 11; // galia

int PWRGND_Pin = 12;

negaliojantis nustatymas ()

= _BV (PORTB3)

// Atlikite laikrodžio ciklą NES valdiklio laikrodžio linijoje

void do_clock (void) {

skaitmeninis rašymas (Clock_Pin, HIGH); // Pakelkite laikrodžio kaištį

uždelsimasMikrosekundės (10); // pristabdo 10 mikrosekundžių

digitalWrite (Clock_Pin, LOW); // išjungia kištuką

uždelsimasMikrosekundės (50); // pristabdo dar 10 mikrosekundžių

}

/*

Čia yra mūsų pagrindinė kilpa. Jis išleidžia skląsčio impulsą, tada pradeda skleisti mygtukų būseną.

Atari vairasvirtės jungties kaiščiai nustatomi pagal perskaičiuotų bitų būseną

užsiregistruoti NES valdytoju.

*/

tuščia kilpa ()

{

skaitmeninis raštas (Latch_Pin, HIGH); // Pakelkite fiksavimo signalą

uždelsimasMikrosekundės (30); // laikykite jį 30 mikrosekundžių

digitalWrite (Latch_Pin, LOW); // Sugrąžinkite sklendės signalą į žemą lygį

uždelsimasMikrosekundės (10); // laikykite jį dar 10 mikrosekundžių

// Proceso mygtukas A (prisiminti: nulinis mygtukas paspaudžiamas)

jei (digitalRead (Data_Pin))

{

pinMode (Trigger_Pin, INPUT); // Panaikinti PIN kodą (paspaudžiamas nulio mygtukas)

}

Kitas

{

pinMode (Trigger_Pin, OUTPUT); // Patvirtinti PIN

}

do_clock (); // Kiekvieno bitų pabaigoje generuojamas laikrodžio impulsas

// Proceso mygtukas B // Abu mygtukai „NES“ generuoja „Atari“

jei (digitalRead (Data_Pin))

{

pinMode (Trigger_Pin, INPUT); // Panaikinti PIN kodą

}

Kitas

{

pinMode (Trigger_Pin, OUTPUT); // Patvirtinti PIN kodą

}

do_clock ();

// Praleisti pasirinkimo mygtuką

do_clock ();

// Pereiti prie mygtuko Pradėti

do_clock ();

// UP kryptis

jei (digitalRead (Data_Pin))

{

pinMode (Up_Pin, INPUT); // Panaikinti PIN kodą

}

Kitas

{

pinMode (Up_Pin, OUTPUT); // Patvirtinti PIN

}

do_clock ();

// Procesas žemyn

jei (digitalRead (Data_Pin))

{

pinMode (Down_Pin, INPUT); // Panaikinti PIN kodą

}

Kitas

{

pinMode (Down_Pin, OUTPUT); // Patvirtinti PIN kodą

}

do_clock ();

// Posūkis į kairę

jei (digitalRead (Data_Pin))

{

pinMode (Left_Pin, INPUT); // Panaikinti PIN kodą

}

Kitas

{

pinMode (Left_Pin, OUTPUT); // Patvirtinti PIN kodą

}

do_clock ();

// Procesas į dešinę

jei (digitalRead (Data_Pin))

{

pinMode (Right_Pin, INPUT); // Panaikinti PIN kodą

}

Kitas

{

pinMode (Right_Pin, OUTPUT); // Patvirtinti PIN

}

do_clock (); // Nenaudingas, bet laikomas modelio valdymui

// Perskaitę visus mygtukus, prieš kitą svarstymą palaukite 10 milisekundžių

vėlavimas (10);

}

4 žingsnis: žaisti!

Dabar, kai grandinės veikimas buvo išbandytas su dongle, galite jį prijungti prie „Atari“. Tada „Arduino“ plokštė bus maitinama vairasvirtės jungtimi (todėl nereikia išorinės maitinimo).

Mėgaukitės konsoliu su nauju valdikliu.